http
集成http库
- https://pub.dartlang.org/packages/http
- 添加依赖
- dependencies:
- http: ^0.12.0
- 安装
- flutter packages get
- 导入
- import 'package:http/http.dart' as http;
常用方法
get(dynamic url, { Map<String, String> headers }) → Future<Response>
- (必须)url:请求地址
- (可选)headers:请求头
post(dynamic url, { Map<String, String> headers, dynamic body, Encoding encoding }) → Future<Response>
- (必须)url:请求地址
- (可选)headers:请求头
- (可选)body:参数
- (编码)Encoding:编码 例子
- http.post('https://flutter-cn.firebaseio.com/products.json',
- body: json.encode(param),encoding: Utf8Codec())
- .then((http.Response response) {
- final Map<String, dynamic> responseData = json.decode(response.body);
- //处理响应数据
-
- }).catchError((error) {
- print('$error错误');
- });
返回值都用到Dart Futures, 类似JavaScript中的promise 官方推荐使用async/await
来调用网络请求
- void addProduct(Product product) async {
- Map<String, dynamic> param = {
- 'title': product.title,
- 'description': product.description,
- 'price': product.price
- };
- try {
- final http.Response response = await http.post(
- 'https://flutter-cn.firebaseio.com/products.json',
- body: json.encode(param),
- encoding: Utf8Codec());
-
- final Map<String, dynamic> responseData = json.decode(response.body);
- print('$responseData 数据');
-
- } catch (error) {
- print('$error错误');
- }
- }
用 try catch
来捕获错误 两种写法都可以,个人觉得第二种语法思路更明确.