dio是Flutter中文网开源的一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时等…
第三方库 dio实现get,post网络请求。
dio库文档地址:https://pub.dev/packages/dio#-installing-tab-
添加依赖库
- Add this to your package’s
pubspec.yamlfile:
dependencies:
dio: ^2.1.13
- You can install packages from the command line:
$ flutter pub get
- 查看插件安装成功与否:左侧dio-2.1.13包出现

导入库
import 'package:dio/dio.dart';
Get、Post请求示例
页面包涵两个按钮:分别触发_get()、_post() 函数。

页面代码如下:
import 'package:flutter/material.dart';
import 'package:dio/dio.dart';
import 'dart:convert';
import 'dart:io';
////////////// 示例1 //////////////////
void _getDio() async {
Response response =
await Dio().get("https://jsonplaceholder.typicode.com/posts/1");
print("get ====== "+response.toString());
final body = json.decode(response.toString());
var data = body['title'];
print("title ====== "+data);
}
void _postDio() async {
var headers = Map<String, String>();
headers['loginSource'] = 'IOS';
headers['useVersion'] = '3.1.0';
headers['isEncoded'] = '1';
headers['bundleId'] = 'com.nongfadai.iospro';
headers['Content-Type'] = 'application/json';
Dio dio = Dio();
dio.options.baseUrl = "http://api.juheapi.com/japi/toh";
dio.options.connectTimeout = 60000;
dio.options.receiveTimeout = 60000;
dio.options.headers.addAll(headers);
dio.options.method = 'post';
var params = {
'v': '1.0',
'month': '7',
'day': '25',
'key': 'bd6e35a2691ae5bb8425c8631e475c2a'
};
Options option = Options(method: 'post');
Response response = await dio.post("http://api.juheapi.com/japi/toh",
/*data: {
"v": "1.0",
"month": "7",
"day": "25",
"key": "bd6e35a2691ae5bb8425c8631e475c2a"
},*/
data: params,
options: option);
if (response.statusCode == 200) {
debugPrint('===请求求url: ${response.request.uri.toString()}');
debugPrint('===请求headler: ${response.request.headers}');
debugPrint('===请求结果: \n${response.data}\n');
} else {
print('请求失败');
}
}
class HttpDioTest extends StatefulWidget {
HttpDioTest({Key key, this.title}) : super(key: key);
final String title;
@override
_HttpDioTestState createState() => new _HttpDioTestState();
}
class _HttpDioTestState extends State<HttpDioTest> {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('HttpDioTest'),
),
body: Center(
child:Column(
children: <Widget>[
SizedBox(height: 32.0),
Text("Dio库 Get Post 练习1"),
SizedBox(height: 32.0),
RaisedButton(
onPressed: _getDio,
child: new Text('_getDio'),
),
RaisedButton(
onPressed: _postDio,
child: new Text('_postDio'),
),
],
),
),
);
}
}
触发_get()的结果

触发_post()的结果

本文介绍了Flutter开发中使用dio库进行HTTP网络请求。dio是Flutter中文网开源的强大Dart Http请求库,支持多种功能。文中说明了添加依赖库、导入库的方法,还给出了Get、Post请求示例及页面代码。
2042

被折叠的 条评论
为什么被折叠?



