项目中展示的大部分数据都是来自服务器,我们需要向服务器请求数据,并且对他们进行解析展示。 向服务器发出请求就需要用到网络请求相关的知识。
在Flutter中常见的网络请求方式有三种:HttpClient、http库、dio库;
HttpClient是dart自带的请求类,在io包中,实现了基本的网络请求相关的操作。
网络调用通常遵循如下步骤:
创建 client.
构造 Uri.
发起请求, 等待请求,同时您也可以配置请求headers、 body。
关闭请求, 等待响应.
解码响应的内容.
网络请求实例:
OK,其实HttpClient也可以发送post相关的请求,我们这里就不再演练。
HttpClient虽然可以发送正常的网络请求,但是会暴露过多的细节:
比如需要主动关闭request请求,拿到数据后也需要手动的进行字符串解码
在开发中,我们一般很多直接面向HttpClient进行网络请求,而是使用一些库来完成。
http 是 Dart 官方提供的另一个网络请求类,相比于 HttpClient,易用性提升了不少。
但是,没有默认集成到Dart的SDK中,所以我们需要先在pubspec中依赖它:
导入并且使用即可
官方提供的HttpClient和http都可以正常的发送网络请求,但是对于现代的应用程序开发来说,我们通常要求的东西会更多:比如拦截器、取消请求、文件上传/下载、超时设置等等;
这个时候,我们可以使用一个在Flutter中非常流行的三方库:dio;
官网有对dio进行解释:
dio是一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时、自定义适配器等...
使用dio三方库必然也需要先在pubspec中依赖它:
代码演练:
http_config.dart
http_request.dart
代码使用: