1、类型转换
(1)引入
import 'dart:convert';
(2)转换
json.encode(Map); 将Map类型转换成json字符串
json.decode(json); 将json字符串类型转换成Map
2、网络请求
(1)dart库搜索http按文档配置
(2)引入
import 'dart:convert' as convert;
import 'package:http/http.dart' as http;
(3)网络请求,在异步函数中设置
get:
var data= await http.get(url);
if (response.statusCode == 200) {
var res = convert.jsonDecode(data.body);
} else {
print('Request failed with status: ${data.statusCode}.');
}
post:
var data = await http.post(url, body: {'key': 'value','key2','value2'});
var res=convert.jsonDecode(response.body);
代码示例:
import 'dart:async';
import 'dart:convert' as convert;
import 'package:http/http.dart' as http;
import 'package:flutter/material.dart';
import 'package:date_format/date_format.dart';
import 'package:flutter_cupertino_date_picker/flutter_cupertino_date_picker.dart';
import 'package:flutter_swiper/flutter_swiper.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:myflutter/page/me.dart';
class Home4 extends StatefulWidget {
Home4({Key key}) : super(key: key);
@override
_Home2State createState() => _Home2State();
}
class _Home2State extends State<Home4> {
String news='哈哈';
@override
void initState() {
super.initState();
}
var url="http://api.tianapi.com/txapi/ncov/index?key=4a8edfc8ac5eae9b0c5bf08157abba96";
get() async{
var response = await http.get(url);
if (response.statusCode == 200) {
var jsonResponse = convert.jsonDecode(response.body);
setState(() {
this.news=jsonResponse["msg"];
});
print(jsonResponse);
} else {
print('Request failed with status: ${response.statusCode}.');
}
}
var url2="http://api.tianapi.com/txapi/ncov/index";
post() async
{
var response = await http.post(url, body: {'key': '4a8edfc8ac5eae9b0c5bf08157abba96'});
print(convert.jsonDecode(response.body));
}
@override
Widget build(BuildContext context) {
return Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
RaisedButton(
child: Text(news),
color: Theme.of(context).accentColor,
onPressed: (){
get();
},
),
RaisedButton(
child: Text('post'),
color: Theme.of(context).accentColor,
onPressed: (){
post();
},
),
]),
);
}
}
// 因为表单组件需要改变状态,所以要使用有状态组件