【Android实战开发】flutter实现网络请求的方法示例

Flutter网络请求使用的是Dio。Dio是一个强大易用的dart http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载…….

Flutter json数据解析是使用了json_serializable package包。它是一个自动化源代码生成器,可以为我们生成JSON序列化模板。由于序列化代码不再由我们手写和维护,我们将运行时产生JSON序列化异常的风险降至最低。

Flutter网络请求数据并且展示效果图:
在这里插入图片描述
数据接口

数据是使用的聚合数据的API,影讯API合集,大家可以注册个账号,申请使用一下,像这样
在这里插入图片描述
添加依赖

在pubspec.yaml文件中添加所需要的第三方依赖库

environment:
 sdk: " =2.1.0 <3.0.0"

 dependencies:
  flutter:
   sdk: flutter
 
  json_annotation: ^2.0.0
  connectivity: ^0.4.2
  dio: ^2.0.15
  event_bus: ^1.0.3
  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.2
 
 dev_dependencies:
  flutter_test:
   sdk: flutter

网络请求过程分析

  static netFetch(url,params,Map<String,String  header,Options option,{
   noTip = false}) async {
   
   //获取网络的连接状态,如果没有连接网络,返回NETWORK_ERROR
   var connectivityResult = await (new Connectivity().checkConnectivity());
   if(connectivityResult == ConnectivityResult.none) {
   
    return new ResultData(Code.errorHandleFunction(Code.NETWORK_ERROR, "", noTip),false,Code.NETWORK_ERROR);
   }
   //请求头存放集合
   Map<String,String  headers = new HashMap();
   if(header != null) {
   
    headers.addAll(header);
   }
   //option存放请求的一些配置信息
   if(option != null) {
   
    option.headers = headers;
   }else {
   
    //get请求
    option = new Options(method:'get');
    option.headers = headers;
   }
   //超时时间15000ms
   option.connectTimeout = 15000;
   //创建dio对象
   Dio dio = new Dio();
   Response response;
   try{
   
    //执行网络请求,await和async配合使用,表示这是一个异步耗时操作
    //执行结果不会立马返回。
    response = await dio.request(url,data: params,options: option);
   }on DioError 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值