大佬教程收集整理的这篇文章主要介绍了Flutter进阶—网络和HTTP,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Flutter支持Http包,版本0.11.3+12或更高版本,首先在pubspec.yaml
中声明对http的依赖,注意添加声明后按顶部的“Packages get”:
dependencies:
Flutter:
sdk: Flutter
http: '>=0.11.3+12'
接下来,创建一个http客户端(Client),我们建议使用createhttpClient来启用测试以提供http.mockClient
:
import 'package:Flutter/services.dart';
var httpClient = createhttpClient();
演示代码:
postData() async {
...
var response = await httpClient.post(url,body: {'name': 'doodle','color': 'blue'});
print('Response status: ${response.statusCodE}');
}
需要注意的是,http API在返回值中使用Dart Futures,我们建议您使用具有async/await
语法的API调用,比如上面的演示代码。
支持解码和编码JSON的功能由dart:convert
库提供,解码JSON字符串并将响应解析为Map:
要对JSON进行编码,要将一个简单的值(字符串,布尔值或数字文字)或Map、List或包含简单值的Map列表传递给encode
方法:
String encodedString = JSON.encode([1,2,{ 'a': null }]);
这个实例演示了如何在Flutter应用程序中从httpS GET调用中解码JSON,它调用httpbin.com
的Web服务测试API,然后响应您的本地IP地址。请注意,使用安全网络(httpS)。
首先添加http依赖关系,然后再将lib/main.dart的内容替换为以下内容:
import 'dart:convert';
import 'package:Flutter/material.dart';
import 'package:Flutter/services.dart';
void main() {
runApp(new MyApp());
}
@H_772_123@class @H_868_126@myApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',home: new MyHomePage(),);
}
}
@H_772_123@class @H_868_126@myHomePage extends StatefulWidget {
MyHomePage({Key key}) : super(key: key);
@override
_MyHomePageState createState() => new _MyHomePageState();
}
@H_772_123@class _MyHomePageState extends State<@H_868_126@myHomePage> {
String _ipaddress = "未知";
_getIpaddress() async {
String url = 'https://httpbin.org/ip';
var httpClient = createhttpClient();
var response = await httpClient.read(url);
Map data = JSON.decode(responsE);
String ip = data['origin'];
/* bool mounted 这个状态对象当前是否在树中。 用于此处,如果控件在数据正在请求时从树中删除,则我们要丢弃该数据,而不是调用setState来更新实际不存在的内容。 */
if(!mounted) return;
setState((){
_ipaddress = ip;
});
}
@override
Widget build(BuildContext context) {
var spacer = new SizedBox(height: 32.0);
return new Scaffold(
body: new Center(
child: new column(
children: <Widget> [
spacer,new Text('您当前的IP地址是:'),new Text('$_ipaddress'),spacer,new RaisedButton(
onPressed: _getIpaddress,child: new Text('获取IP地址'),)
]
)
)
);
}
}
以上是大佬教程为你收集整理的Flutter进阶—网络和HTTP全部内容,希望文章能够帮你解决Flutter进阶—网络和HTTP所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。