当前位置:   article > 正文

flutter 实战 之 dio小实践_dio.request

dio.request

我们要对dio进行封装

  1. class HttpRequest {
  2. static Future request(String url,{String method = "get",Map<String,dynamic>? params})async{
  3. // 创建dio实例
  4. BaseOptions baseOptions = BaseOptions(
  5. baseUrl: base_url,
  6. connectTimeout: Duration(seconds: 1)
  7. );
  8. final dio = Dio(baseOptions);
  9. // 发送网络请求
  10. Options options = Options(method: method);
  11. try{
  12. final result = await dio.request(url,queryParameters: params,options: options);
  13. return result;
  14. }on DioException catch(err){
  15. throw err;
  16. }
  17. }
  18. }

 下面我们分析一下

  1. 类定义:

    • HttpRequest 是一个类,其中包含一个静态方法 request,用于发送HTTP请求。
  2. 静态方法定义:

    • request 是一个静态方法,它接受一个URL和一个可选的参数对象。该方法返回一个Future,这意味着它是一个异步函数。
    • 方法的默认参数是 method,其默认值为 "get"。
    • 方法的另一个可选参数是 params,它是一个键值对的Map,用于传递查询参数。
  3. 创建Dio实例:

    • 使用 BaseOptions 创建了一个Dio实例的配置。其中,baseUrl 是基础URL,而 connectTimeout 是连接超时时间(这里设置为1秒)。
    • 创建的Dio实例存储在 dio 变量中。
  4. 发送网络请求:

    • 使用 Options 创建了一个请求选项对象,其中指定了请求的方法(默认为GET)。
    • 使用 dio.request 方法发送HTTP请求。传递了URL、查询参数和请求选项。
    • 如果请求成功,返回结果。
  5. 异常处理:

    • 使用 try-catch 块来捕获可能出现的Dio异常。如果发生异常,则重新抛出该异常。
  6. 返回值:

    • 方法返回从HTTP请求获得的结果。

此外我们还需要定义一个Model类型来解析存储

  1. class Piece {
  2. late String originName;
  3. late String describe;
  4. late int messageType;
  5. late String messageIconUrl;
  6. late String remarkName;
  7. late String messageText;
  8. late String messageDate;
  9. late bool messageMute;
  10. late bool messageUp;
  11. Piece.fromMap(Map<String, dynamic> json) {
  12. originName = json["originName"] ?? "";
  13. describe = json["describe"] ?? "";
  14. messageType = json["messageType"] ?? 0;
  15. messageIconUrl = json["messageIconUrl"] ?? "";
  16. remarkName = json["remarkName"] ?? "";
  17. messageText = json["messageText"] ?? "";
  18. messageDate = json["messageDate"] ?? "";
  19. messageMute = json["messageMute"] ?? false;
  20. messageUp = json["messageUp"] ?? false;
  21. }
  22. }

我们数据的api接口如下rap2api.taobao.org/app/mock/293606/api/chat

最后我们来看看如何使用

  1. HttpRequest.request("http://rap2api.taobao.org/app/mock/293606/api/chat/list") //调用我们自己封装的类进行解析
  2. .then((res){ // 返回的是一个Future
  3. // print(res);
  4. // print(res.data);
  5. // print(res.data.runtimeType); //这时候打印出来是 map 类型
  6. final the_list = res.data["list"];
  7. print(the_list);
  8. List<Piece> piece =[];
  9. for(var sub in the_list){
  10. piece.add(Piece.fromMap(sub));
  11. }
  12. print(piece);
  13. print(piece[0].originName);
  14. });

看看效果如下

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/596901
推荐阅读
相关标签
  

闽ICP备14008679号