-
HttpClient是Flutter中默认的网络访问工具
-
HttpClient可以分别对
get
和
post
请求使用
get
、
getUrl
和
post
、
postUrl
方法
-
本文仅对HttpClient进行简单介绍,后见将介绍其他网络请求框架
flutter中网络请求的过程
-
执行网络请求的客户端
-
实例化时通过
var httpClient = new HttpClient();
-
可以发送get请求(get/getUrl)和post请求(post/postUrl)
factory Uri(
{String? scheme,
String? userInfo,
String? host,
int? port,
String? path,
Iterable<String>? pathSegments,
String? query,
Map<String, dynamic /*String|Iterable<String>*/ >? queryParameters,
String? fragment}) = _Uri;
- scheme:如网络请求时为
http
或https
,文件请求时为file
- userInfo:权限组件的用户信息部分,此部分默认为空
- host:主机部分,不区分大小写
- port:端口号,http请求时为80,https请求时为443
- path:接口请求路径(方法)
- pathSegments:同path,只不过将path分段了
- queryParameters:请求参数
- query:同queryParameters,将queryParameters合并成一个
var uri = Uri(
scheme: 'https',
host: 'www.wanandroid.com',
path: '/user/login',
queryParameters: {'username': 'wanandroidUser1', 'password': '123456'});
添加请求信息
- request.persistentConnection:支持请求的持久连接状态(默认true)
- request.headers:请求头
- request.cookies:cookies
客户端连接的HTTP响应
玩Android 开放API-登录
登录用户信息
- url:https://www.wanandroid.com/user/login
- username:wanandroidUser1
- password:123456
void _httpClientPost1() async {
var httpClient = new HttpClient();
var uri = Uri(
scheme: 'https',
host: 'www.wanandroid.com',
path: '/user/login',
queryParameters: {'username': 'wanandroidUser1', 'password': '123456'});
// var uri2=Uri.https('www.wanandroid.com', '/user/login',{'username': 'wanandroidUser1', 'password': '123456'});
HttpClientRequest request = await httpClient.postUrl(uri);
HttpClientResponse response = await request.close();
String responseBody = await response.transform(utf8.decoder).join();
setState(() {
_data = responseBody;
print(responseBody);
void _httpClientPost2() {
var httpClient = new HttpClient();
var uri = Uri(
scheme: 'https',
host: 'www.wanandroid.com',
path: '/user/login',
queryParameters: {'username': 'wanandroidUser1', 'password': '123456'});
// var uri2=Uri.https('www.wanandroid.com', '/user/login',{'username': 'wanandroidUser1', 'password': '123456'});
httpClient.postUrl(uri).then((HttpClientRequest request) {
return request.close();
}).then((HttpClientResponse response) async {
String responseBody = await response.transform(utf8.decoder).join();
setState(() {
_data = responseBody;
print(responseBody);
String _data;
body: Center(child: Text("$_data"),),
I/flutter (13964): {"data":{"admin":false,"chapterTops":[],"coinCount":0,"collectIds":[],"email":"","icon":"","id":99295,"nickname":"wanandroidUser1","password":"","publicName":"wanandroidUser1","token":"","type":0,"username":"wanandroidUser1"},"errorCode":0,"errorMsg":""}
一 概述HttpClient是Flutter中默认的网络访问工具HttpClient可以分别对get和post请求使用get、getUrl和post、postUrl方法本文仅对HttpClient进行简单介绍,后见将介绍其他网络请求框架二 网络请求中的几个类flutter中网络请求的过程2.1 HttpClient执行网络请求的客户端实例化时通过var httpClient = new HttpClient();可以发送get请求(get/getUrl)和post请求(post/
Flutter网络请求使用的是Dio。Dio是一个强大易用的dart http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载…….
Flutter json数据解析是使用了json_serializable package包。它是一个自动化源代码生成器,可以为我们生成JSON序列化模板。由于序列化代码不再由我们手写和维护,我们将运行时产生JSON序列化异常的风险降至最低。
Flutter网络请求数据并且展示效果图:
数据是使用的聚合数据的API,影讯API合集,大家可以注册个账号,申请使用一下,像这样
在pubs
我们知道AnimationController.forward()可以正向播放动画,AnimationController.reverse()可以反向播放动画,播完即停止。若想让动画播完还可以重新播放不断循环,可以调用
AnimationController.repeat():从头开始循环
AnimationController.repeat(reverse: true):反向循环,从头播到尾,再从尾播到头
若要让动画停止,可以调用AnimationController.stop()方法
下面的示例中有一个绿色的方形,其宽高从100变大到200,然后再重头开始,不断循环
var httpClient = new HttpClient();
var uri = Uri.parse('https://xym.ibeeger.com/api/article/list');
var request = await httpClient.getUrl(uri);
var response =...
本文目录Dialog加载框实现对话框
Dialog加载框
做过Java开发Android程序的程序员,应该知道Android对话框的样式与效果,其实在Flutter开发中,实现对话框与Android开发中的思路是一样的,都是用Dialog封装加载的文字以及其他的一些内容,下面是本博文最后实现的对话框动画效果。
实现对话框
思路我们有了,我们首先肯定是要先实现对话框的内容,话不多说,我们直接先来看看...
文章目录1.Http的请求方式简介2.Flutter HTTP 网络请求实现的区别和特点2.1 io.dart 里的 HttpClient 实现。2.2 Dart 原生 HTTP 请求库实现。2.3 第三方库实现3.总结
HTTP 网络请求是开发语言里比较常用和重要的功能,主要用于资源访问、接口数据请求和提交、上传下载文件等等操作,HTTP 请求方式主要有:GET、POST、HEAD、PUT、DE...
1. 文件操作
无论是Flutter还是DartVM下的脚本(系统路径不同,Dart VM运行在PC或服务器操作系统下,Flutter运行在移动操作系统下)都通过Dart IO库来操作文件。
在实际开发中,如果存储一些简单的数据,推荐使用s.
void _fetchData() async {
final response = await http.get('https://jsonplaceholder.typicode.com/todos/1');
if (response.statusCode == 200) {
print(response.body);
} else {
print('请求失败,状态码为 ${response.statusCode}');
RaisedButton(
onPressed: _fetchData,
child: Text('获取网络请求'),
这样点击按钮就可以发送网络请求并获取响应数据了。