网络请求是APP开发中至关重要的一步,回想一下Android开发中的Retrofit框架或者Volley框架,iOS开发中AFNetworking框架。如果使用Volley进行网络请求,我们需要new一个StringRequest请求,在里面回调成功和失败的方法,用GsonFormmater等类似工具解析json串,然后将这个请求添加到队列,这中间要给予用户友好的提示,即显示与隐藏加载框,甚至是下拉刷新功能的实现,如果要保持登录状态,还需要将Session信息添加到请求的头部。成熟的网络请求框架像Volley很容易实现这些功能,Flutter中的网络请求是否能够实现这些功能呢,如何实现呢?
这篇文章主要介绍如何在Flutter中进行网络请求,包括基本的网络请求,对服务器返回的json进行解析,构造json,加载框显示与隐藏。
一、完整的网络请求过程
打开InteliJ IDEA,新建一个Flutter工程,在左侧工程结构里面的pubspec.yaml文件里面添加网络请求的依赖
http: '>=0.11.3+12'
将main.dart里面的代码全部删除,然后重新写我们的代码,先导包:
import 'package:flutter/material.dart';//导入系统基础包
import 'package:flutter/services.dart';//导入网络请求相关的包
然后获取http对象
var httpclient=createHttpClient();//获取http对象
用async…await..发送网络请求并读取结果:
_postData() async{
response=await httpclient.read(url);//发送网络请求,read()表示读取返回的结果,get()表示不读取返回的结果
print('Response=$response');
}
上面就是一次完整的网络请求的核心代码,好像并不复杂吧?完整的代码如下,直接复制到main.dart,替换掉原来的代码即可运行:
import 'package:flutter/material.dart';//导入系统基础包
import 'package:flutter/services.dart';//导入网络请求相关的包
void main(){
runApp(new MaterialApp(home: new ClickEvent(),));
}
class ClickEvent extends StatefulWidget{
@override
_ClickEventState createState() {
return