这里主要分享我对于Flutter网络请求方面的内容
目的
目的很简单,需要完成项目中常规的Http的GET和POST请求服务端接口数据以完成页面部分展示逻辑
方案
主要实现方案有三种,一种是基于原生的HttpClient来实现,另外两种是基于第三方package来实现:http与dio
httpClient
原生方式主要基于dart:io库中的httpClient来实现:
import 'dart:io';
var httpClient = new HttpClient();
该 client 支持常用的HTTP操作, such as GET, POST, PUT, DELETE.
核心步骤主要包括:
- 创建 client.
- 构造 Uri.
- 发起请求, 等待请求,同时您也可以配置请求headers、 body。
- 关闭请求, 等待响应.
- 解码响应的内容.
而response中需要基于Futuers来实现(同时配合await/async函数),类似于JS的Promise:
get() async {
var httpClient = new HttpClient();
var uri = new Uri.http(
'example.com', '/path1/path2', {'param1': '42', 'param2': 'foo'});
var request = await httpClien