Flutter基础(十一)网络请求(Dio)与JSON数据解析

作者: 分类: 奇闻 发布时间: 2019-07-30 12:18

ReactNative入门系列
React Native组件
Flutter基础系列



在Android开发中如果我们想要请求网络,可以使用HttpClent、HttpURLConnection,但在项目中一般都会使用OkHttp和Retrofit。在Flutter也是如此,系统提供了HttpClient,但在项目中一般会使用第三方库,比如http和Dio,如果你想找到更多的第三库,可以在pub.dartlang.org/ 上查找想要的库。本篇文章以Dio为例,另外还会介绍JSON数据解析方面的知识。

Dio是一个强大的Dart Http请求库,支持___,全局配置,FormData,请求取消,文件下载,超时等。

添加依赖 在pubspec.yaml中添加依赖。

dependencies:
 dio: 2.1.7 
复制代码

官网给出了一个简单的例子:

import 'package:dio/dio.dart';
void getHttp async {
 try {
 Response response = await Dio.get;
 print;
 } catch  {
 print;
复制代码

如果想要发送一个GET请求:

Response response;
response=await dio.get
print);
// 请求参数也可以通过对象传递,上面的代码等同于:
response=await dio.get
print);
复制代码

发送一个POST 请求:

response=await dio.post
复制代码

发送一个FormData:

FormData formData = new FormData.from;
复制代码

还有很多示例在github上,地址为:github.com/flutterchin…

import 'dart:convert';
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
void main {
 runApp);
class MyApp extends StatelessWidget {
 @override
 Widget build {
 return MaterialApp,
class MyHomePage extends StatefulWidget {
 MyHomePage : super;
 @override
 _MyHomePageState createState = _MyHomePageState;
class _MyHomePageState extends State MyHomePage {
 var _ipAddress = 'Unknown';
 _getIPAddress async {//1
 var url = 'https://httpbin.org/ip';
 Dio _dio = Dio;
 String result;
 try {
 var response = await _dio.get;//2
 if  {
 var data= jsonDecode);//3
 result = data['origin'];
 } else {
 result =
 'Error getting IP status ${response.statusCode}';
 } catch  {
 result =exception.toString;
 if  return;
 setState {
 _ipAddress = result;//4
 @override
 Widget build {
 var spacer = SizedBox;
 return Scaffold,
 child: Column,
 spacer,
 Tex_______Address'