Flutter網(wǎng)絡(luò)請求庫DIO的基本使用
1. 導(dǎo)入dio包
目前dio庫的最新版本是3.0.1,同使用其他三方庫一樣,F(xiàn)lutter中使用dio庫同樣需要配置pubspec.yaml文件。
dependencies: flutter: sdk: flutter dio: ^3.0.10
2. 導(dǎo)入并創(chuàng)建實例
dio包引入成功之后就可以創(chuàng)建dio實例了,一個實例可以發(fā)起多個請求,APP中如果只有一個數(shù)據(jù)源的情況下就可以考慮將dio實例創(chuàng)建成單例模式,這樣可以節(jié)省系統(tǒng)資源,減少不必要的開銷。
//htpp.dart import 'package:dio/dio.dart'; var dio = Dio();
3.基本配置
在開始使用實例之前需要對實例進行一些基本設(shè)置,由于每個人的項目需求不同,我這里只寫一下我自己小項目的幾個簡單配置:
//統(tǒng)一配置dio dio.options.baseUrl = "https://www.wanandroid.com";//baseUrl dio.options.connectTimeout = 5000;//超時時間 dio.options.receiveTimeout = 3000;//接收數(shù)據(jù)最長時間 dio.options.responseType = ResponseType.json;//數(shù)據(jù)格式
也可以通過創(chuàng)建option的方式配置:
BaseOptions options = BaseOptions(); options.baseUrl = "https://www.wanandroid.com"; options.connectTimeout = 5000; options.receiveTimeout = 3000; options.responseType = ResponseType.json; dio.options = options;
上面介紹了配置dio實例的兩種方式,并對其中的baseUrl、鏈接超時、接收數(shù)據(jù)最長時長、接收報文的數(shù)據(jù)類型等幾個簡單屬性做了統(tǒng)一配置。dio中還有一些其他的配置,可以參考dio的主頁github.com/flutterchin…
4.使用示例
dio實例配置完成之后如何使用呢?通過請求玩android首頁的banner圖來演示一下: 基本的步驟是,第一步先請求數(shù)據(jù),第二步把請求回來的json數(shù)據(jù)轉(zhuǎn)成model,第三步把model數(shù)據(jù)渲染成輪播圖:
child: FutureBuilder( future: dio.get("/banner/json"), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { Response response = snapshot.data; Map bannerMap = json.decode(response.toString()); var banner = HomeBanner.fromJson(bannerMap); if (snapshot.hasError) { Fluttertoast.showToast(msg: snapshot.error.toString()); } else { return _getSwiper(banner.data); // Fluttertoast.showToast(msg: banner.data[0].title); } } return Center( child: CircularProgressIndicator(), ); }, ), //根據(jù)接口返回的數(shù)據(jù)生成輪播圖 Swiper _getSwiper(List<Datum> data) { imgs.clear(); for (var i = 0; i < data.length; i++) { var image = Image.network( data[i].imagePath, fit: BoxFit.cover, ); imgs.add(image); } return Swiper( itemWidth: double.infinity, itemHeight: 200, itemCount: imgs.length, itemBuilder: (BuildContext context, int index) { return imgs[index]; }, autoplay: true, pagination: new SwiperPagination( builder: SwiperPagination.dots, ), control: new SwiperControl(), ); }
這個示例中涉及到了JSON轉(zhuǎn)MODEL的相關(guān)知識
以上就是Flutter網(wǎng)絡(luò)請求庫DIO的基本使用的詳細內(nèi)容,更多關(guān)于Flutter網(wǎng)絡(luò)請求庫DIO的使用的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android開發(fā)雙向滑動選擇器范圍SeekBar實現(xiàn)
這篇文章主要為大家介紹了Android開發(fā)雙向滑動范圍選擇器SeekBar實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06實例講解Android中的AutoCompleteTextView自動補全組件
AutoCompleteTextView組件被用在輸入框中能實現(xiàn)輸入內(nèi)容自動補全的功能,類似于大家平時用Google時的輸入聯(lián)想,這里我們來用實例講解Android中的AutoCompleteTextView自動補全組件,特別是實現(xiàn)郵箱地址補全的例子,非常實用2016-05-05Android實現(xiàn)與Apache Tomcat服務(wù)器數(shù)據(jù)交互(MySql數(shù)據(jù)庫)
本篇文章主要介紹了Android實現(xiàn)與Apache Tomcat服務(wù)器數(shù)據(jù)交互(MySql數(shù)據(jù)庫),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06Android 安全加密:消息摘要Message Digest詳解
本文主要介紹Android安全加密消息摘要Message Digest,這里整理了詳細的資料,并說明如何使用Message Digest 和使用注意事項,有需要的小伙伴可以參考下2016-09-09Android設(shè)置當TextView中的文字超過TextView的容量時用省略號代替
這篇文章主要介紹了Android設(shè)置當TextView中的文字超過TextView的容量時用省略號代替 ,需要的朋友可以參考下2017-03-03Flutter加載圖片流程之ImageProvider源碼示例解析
這篇文章主要為大家介紹了Flutter加載圖片流程之ImageProvider源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04Android使用TextView實現(xiàn)無下劃線超鏈接的方法
這篇文章主要介紹了Android使用TextView實現(xiàn)無下劃線超鏈接的方法,結(jié)合實例形式分析了Android中TextView超鏈接去除下劃線的相關(guān)實現(xiàn)技巧與注意事項,需要的朋友可以參考下2016-08-08RecyclerView嵌套RecyclerView滑動卡頓的解決方法
這篇文章主要為大家詳細介紹了RecyclerView嵌套RecyclerView滑動卡頓的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-12-12