简介

在Flutter中,尽管官方供给了HttpClient网络恳求框架,可是因为其封装性差,运用步骤繁琐。大多数Flutter开发者更喜爱运用简略高效的第三方网络框架Dio。本文首要介绍Dio的引进及根本运用。

引进

在Flutter工程的pubspec.yaml文件中,增加dio最新版别依靠,然后点击编译工具上的提示 Pub get或者命令行输入flutter pub get即可导入库文件。

Flutter基础之网络框架Dio

根本运用

  1. GET恳求
import 'package:dio/dio.dart';
static _getDataWithDio(String url) async{
    return await Dio().get(url).timeout(const Duration(milliseconds: 3000));
  }

构造函数

  Future<Response<T>> get<T>(
    String path,//恳求链接
    {
    Object? data,//恳求数据
    Map<String, dynamic>? queryParameters, //恳求参数
    Options? options,//根本装备
    CancelToken? cancelToken, //撤销token
    ProgressCallback? onReceiveProgress, //进展回调
  });
  • path:恳求链接
  • data:恳求数据
  • queryParameters:恳求参数
  • options:根本装备
  • cancelToken:撤销token
  • onReceiveProgress:返回数据进展回调
  1. POST恳求
import 'package:dio/dio.dart';
static _postDataWithDio(String url,Map<String,dynamic> parameters ) async{
    return await Dio().post(url,queryParameters: parameters).timeout(const Duration(milliseconds: 10000));
  }

构造函数

Future<Response<T>> post<T>(
    String path, {
    Object? data,
    Map<String, dynamic>? queryParameters,
    Options? options,
    CancelToken? cancelToken,
    ProgressCallback? onSendProgress,
    ProgressCallback? onReceiveProgress,
  });
  • path:恳求链接
  • data:恳求数据
  • queryParameters:恳求参数
  • options:根本装备
  • cancelToken:撤销token
  • onSendProgress:发送数据进展回调
  • onReceiveProgress:返回数据进展回调

重要参数

Options能够挑选装备各种公共参数。

重要参数如下:

参数名称 类型 参数意义
method String 恳求方法:GET,POST
baseUrl String 恳求基地址
headers Map<String, dynamic> Http恳求头
connectTimeout int (毫秒) 连接超时时间
receiveTimeout int (毫秒) 数据接收超时时间
path String 恳求地址
contentType String 恳求内容类型,默许默许值是”application/json; charset=utf-8
responseType ResponseType 数据呼应类型,默许是json

运用示例

  1. 定义网络恳求工具
import 'package:dio/dio.dart';
class ApiManager{
    static getMainKnowledge() async{
    return await _getDataWithDio(_mainKnowledge);
  }
   static _getDataWithDio(String url) async{
    return await  Dio().get(url).timeout(const Duration(milliseconds: 10000));
  }
}
  1. 建议网络恳求,initState为StateFulWiget的生命周期方法。对StateFulWidget和StatelessWidget不太熟悉的同学能够查看上一篇文章
@override
  void initState() {
   _getMainKnowledgeList();
    super.initState();
  }
_getMainKnowledgeList() async {
    Response response = await ApiManager.getMainKnowledge();
    if (response.statusCode == NetCode.succeed) {
      setState(() {
        list.clear();
        list.addAll(MainKnowledge.fromJson(jsonDecode(response.toString())).data);
      });
    }
    _refreshController.refreshCompleted();
  }
  1. 展示恳求结果内容,这儿运用的接口是wan android的接口。

Flutter基础之网络框架Dio

总结

Dio支撑的功能很多,支撑get,post,formData,拦截器,Cookie,文件上传和下载,还支撑进展回调。总之Dio是一个功能强大的Dart网络恳求库,本文只是介绍常见的get,post恳求的运用。为后续实战打好根底。

感兴趣的同学学起来吧!