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, { Mapheaders }) → Future
- (必须)url:请求地址
- (可选)headers:请求头
post(dynamic url, { Mapheaders, dynamic body, Encoding encoding }) → Future
- (必须)url:请求地址
- (可选)headers:请求头
- (可选)body:参数
- (编码)Encoding:编码 例子
http.post('https://flutter-cn.firebaseio.com/products.json', body: json.encode(param),encoding: Utf8Codec()) .then((http.Response response) { final MapresponseData = json.decode(response.body); //处理响应数据 }).catchError((error) { print('$error错误'); });
返回值都用到, 类似JavaScript中的promise 官方推荐使用async/await
来调用网络请求
void addProduct(Product product) async { Mapparam = { '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 responseData = json.decode(response.body); print('$responseData 数据'); } catch (error) { print('$error错误'); } }
用 try catch
来捕获错误 两种写法都可以,个人觉得第二种语法思路更明确.