Flutter網(wǎng)絡(luò)請(qǐng)求庫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)建實(shí)例
dio包引入成功之后就可以創(chuàng)建dio實(shí)例了,一個(gè)實(shí)例可以發(fā)起多個(gè)請(qǐng)求,APP中如果只有一個(gè)數(shù)據(jù)源的情況下就可以考慮將dio實(shí)例創(chuàng)建成單例模式,這樣可以節(jié)省系統(tǒng)資源,減少不必要的開銷。
//htpp.dart import 'package:dio/dio.dart'; var dio = Dio();
3.基本配置
在開始使用實(shí)例之前需要對(duì)實(shí)例進(jìn)行一些基本設(shè)置,由于每個(gè)人的項(xiàng)目需求不同,我這里只寫一下我自己小項(xiàng)目的幾個(gè)簡(jiǎn)單配置:
//統(tǒng)一配置dio dio.options.baseUrl = "https://www.wanandroid.com";//baseUrl dio.options.connectTimeout = 5000;//超時(shí)時(shí)間 dio.options.receiveTimeout = 3000;//接收數(shù)據(jù)最長(zhǎng)時(shí)間 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實(shí)例的兩種方式,并對(duì)其中的baseUrl、鏈接超時(shí)、接收數(shù)據(jù)最長(zhǎng)時(shí)長(zhǎng)、接收?qǐng)?bào)文的數(shù)據(jù)類型等幾個(gè)簡(jiǎn)單屬性做了統(tǒng)一配置。dio中還有一些其他的配置,可以參考dio的主頁github.com/flutterchin…
4.使用示例
dio實(shí)例配置完成之后如何使用呢?通過請(qǐng)求玩android首頁的banner圖來演示一下: 基本的步驟是,第一步先請(qǐng)求數(shù)據(jù),第二步把請(qǐng)求回來的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(), ); }
這個(gè)示例中涉及到了JSON轉(zhuǎn)MODEL的相關(guān)知識(shí)
以上就是Flutter網(wǎng)絡(luò)請(qǐng)求庫DIO的基本使用的詳細(xì)內(nèi)容,更多關(guān)于Flutter網(wǎng)絡(luò)請(qǐng)求庫DIO的使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android開發(fā)雙向滑動(dòng)選擇器范圍SeekBar實(shí)現(xiàn)
這篇文章主要為大家介紹了Android開發(fā)雙向滑動(dòng)范圍選擇器SeekBar實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06實(shí)例講解Android中的AutoCompleteTextView自動(dòng)補(bǔ)全組件
AutoCompleteTextView組件被用在輸入框中能實(shí)現(xiàn)輸入內(nèi)容自動(dòng)補(bǔ)全的功能,類似于大家平時(shí)用Google時(shí)的輸入聯(lián)想,這里我們來用實(shí)例講解Android中的AutoCompleteTextView自動(dòng)補(bǔ)全組件,特別是實(shí)現(xiàn)郵箱地址補(bǔ)全的例子,非常實(shí)用2016-05-05Android Spinner與適配器模式詳解及實(shí)例代碼
這篇文章主要介紹了Android Spinner與適配器模式詳解相關(guān)資料,并附代碼實(shí)例,需要的朋友可以參考下2016-10-10Android實(shí)現(xiàn)與Apache Tomcat服務(wù)器數(shù)據(jù)交互(MySql數(shù)據(jù)庫)
本篇文章主要介紹了Android實(shí)現(xiàn)與Apache Tomcat服務(wù)器數(shù)據(jù)交互(MySql數(shù)據(jù)庫),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06Android 安全加密:消息摘要Message Digest詳解
本文主要介紹Android安全加密消息摘要Message Digest,這里整理了詳細(xì)的資料,并說明如何使用Message Digest 和使用注意事項(xiàng),有需要的小伙伴可以參考下2016-09-09Android設(shè)置當(dāng)TextView中的文字超過TextView的容量時(shí)用省略號(hào)代替
這篇文章主要介紹了Android設(shè)置當(dāng)TextView中的文字超過TextView的容量時(shí)用省略號(hào)代替 ,需要的朋友可以參考下2017-03-03Flutter加載圖片流程之ImageProvider源碼示例解析
這篇文章主要為大家介紹了Flutter加載圖片流程之ImageProvider源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04Android使用TextView實(shí)現(xiàn)無下劃線超鏈接的方法
這篇文章主要介紹了Android使用TextView實(shí)現(xiàn)無下劃線超鏈接的方法,結(jié)合實(shí)例形式分析了Android中TextView超鏈接去除下劃線的相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2016-08-08RecyclerView嵌套R(shí)ecyclerView滑動(dòng)卡頓的解決方法
這篇文章主要為大家詳細(xì)介紹了RecyclerView嵌套R(shí)ecyclerView滑動(dòng)卡頓的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12