flutter網絡dio框架get請求使用總結

題記
—— 執劍天涯,從你的點滴積累開始,所及之處,必精益求精,即是折騰每一天。

重要消息


本文章將講述
1.使用dio發送基本的get請求
2.使用dio發送get請求的傳參方式
3.解析響應json數據

1 引言

dio用來在flutter跨平臺開發中訪問網絡的框架,在使用的時候,我們首先是引入依賴

dependencies:
 dio: 3.0.9

也可以訪問國內pub倉庫來查看 dio的最新版本。

一般添加依賴如下所示

dependencies:
  dio: ^3.0.9

兩種寫法的差別是 ^在每次 flutter pub get 是會有小版本的自動升級,不添加這個符號就不會有自動小升級

2 Dio get請求
2.1 Dio get 請求無參數
  //get請求無參數
  void getRequestFunction1() async {
    ///創建Dio對象
    Dio dio = new Dio();
    ///請求地址 獲取用戶列表
    String url = "http://192.168.0.102:8080/getUserList";
    ///發起get請求
    Response response = await dio.get(url);
    ///響應數據
    var data = response.data;

    setState(() {
      result = data.toString();
    });
  }

數據響應結果

{
    "code": 200,
    "data": [
        {
            "id": 3,
            "userName": "測試人員",
            "realName": "張三",
            "age": 22
        }
    ],
    "message": "請求成功"
}

斷點調試如下
在這裏插入圖片描述

2.2 Dio get 請求有參數
  ///get請求有參數
  ///根據用戶ID來獲取用戶信息
  void getRequestFunction2() async {
    ///用戶id
    int userId =3;
    ///創建 dio
    Dio dio = new Dio();
    ///請求地址
    ///傳參方式1
    String url = "http://192.168.0.102:8080/getUser/$userId";
    ///傳參方式2 
    String url2 = "http://192.168.0.102:8080/getUser?userId=$userId";
    ///傳參方式 3
    String url3 = "http://192.168.0.102:8080/getUser";

    Map<String,dynamic> map = Map();
    map["userId"]= userId;
    ///發起get請求
    Response response = await dio.get(url3,queryParameters: map);

    ///響應數據
    Map<String,dynamic> data = response.data;
    /// 將響應數據解析爲 UserBean
    UserBean userBean = UserBean.fromJson(data);
  }

}

在上述代碼中,傳參方式1與傳參方式2是在請求鏈接中拼接參數,請求方式3是將參數放在一個 map 中,然後通過 Dio 的queryParameters 來配製參數,上述返回的數據結構爲

{
    "code": 200,
    "data": {
        "id": 3,
        "userName": "測試人員",
        "realName": "張三",
        "age": 22
    },
    "message": "請求成功"
}

斷點調試
在這裏插入圖片描述

3 json數據解析

對於這裏使用到的數據模型 UserBean 對象來說


class UserBean{
  String userName;
  String realName;
  int age;
  int id;

  static UserBean fromJson(Map<String,dynamic> rootData){
    ///解析第一層
    Map<String,dynamic> data = rootData["data"];
    ///解析第二層
    UserBean userBean = new UserBean();

    userBean.id = data["id"];
    userBean.age = data["age"];
    userBean.userName= data["userName"];
    userBean.realName = data["realName"];
    return userBean;
    
  }
}

對於 UserBean 中的數據解析如下圖所示

在這裏插入圖片描述
在這裏插入圖片描述


完畢

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章