赞
踩
我们要对dio进行封装
- class HttpRequest {
- static Future request(String url,{String method = "get",Map<String,dynamic>? params})async{
- // 创建dio实例
- BaseOptions baseOptions = BaseOptions(
- baseUrl: base_url,
- connectTimeout: Duration(seconds: 1)
- );
-
- final dio = Dio(baseOptions);
-
- // 发送网络请求
- Options options = Options(method: method);
- try{
- final result = await dio.request(url,queryParameters: params,options: options);
- return result;
- }on DioException catch(err){
- throw err;
- }
- }
- }
下面我们分析一下
类定义:
HttpRequest
是一个类,其中包含一个静态方法 request
,用于发送HTTP请求。静态方法定义:
request
是一个静态方法,它接受一个URL和一个可选的参数对象。该方法返回一个Future,这意味着它是一个异步函数。method
,其默认值为 "get"。params
,它是一个键值对的Map,用于传递查询参数。创建Dio实例:
BaseOptions
创建了一个Dio实例的配置。其中,baseUrl
是基础URL,而 connectTimeout
是连接超时时间(这里设置为1秒)。dio
变量中。发送网络请求:
Options
创建了一个请求选项对象,其中指定了请求的方法(默认为GET)。dio.request
方法发送HTTP请求。传递了URL、查询参数和请求选项。异常处理:
try-catch
块来捕获可能出现的Dio异常。如果发生异常,则重新抛出该异常。返回值:
此外我们还需要定义一个Model类型来解析存储
- class Piece {
- late String originName;
- late String describe;
- late int messageType;
- late String messageIconUrl;
- late String remarkName;
- late String messageText;
- late String messageDate;
- late bool messageMute;
- late bool messageUp;
-
- Piece.fromMap(Map<String, dynamic> json) {
- originName = json["originName"] ?? "";
- describe = json["describe"] ?? "";
- messageType = json["messageType"] ?? 0;
- messageIconUrl = json["messageIconUrl"] ?? "";
- remarkName = json["remarkName"] ?? "";
- messageText = json["messageText"] ?? "";
- messageDate = json["messageDate"] ?? "";
- messageMute = json["messageMute"] ?? false;
- messageUp = json["messageUp"] ?? false;
- }
- }
我们数据的api接口如下rap2api.taobao.org/app/mock/293606/api/chat
最后我们来看看如何使用
- HttpRequest.request("http://rap2api.taobao.org/app/mock/293606/api/chat/list") //调用我们自己封装的类进行解析
- .then((res){ // 返回的是一个Future
- // print(res);
- // print(res.data);
- // print(res.data.runtimeType); //这时候打印出来是 map 类型
- final the_list = res.data["list"];
- print(the_list);
- List<Piece> piece =[];
- for(var sub in the_list){
- piece.add(Piece.fromMap(sub));
- }
- print(piece);
- print(piece[0].originName);
- });
看看效果如下
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。