Flutter中第三方网络请求库http
https://github.com/zeke123/http
pubspec.yaml
dependencies:
http: ^0.12.0+2
import 'package:http/http.dart' as http;
Flutter中Map与json字符串相互转换
Map mapType = {"username": "王五", "age": 25};
//Map转换为json字符串
var stringType = json.encode(mapType);
print(mapType is Map); // true
print(stringType is String); // true
print(stringType); //{"username":"王五","age":25}
//json字符串转换为map
String users = '{"username":"张三","age":25}';
var user = json.decode(users);
print(user is Map); //true
print(user["username"]); //张三
get请求
//get 请求数据
_getData() async {
var apiUrl = "http://baidu.com";
var resault = await http.get(apiUrl);
if (resault.statusCode == 200) {
//print(resault.body);
} else {
//print(resault.statusCode);
}
}
post请求
//post 请求数据
_postData() async {
var apiUrl = "http://baidu.com";
var result = await http
.post(apiUrl, body: {"params1": "value1", "params2": "value2"});
if (result.statusCode == 200) {
//print(result.body);
} else {
//print(result.statusCode);
}
}
main.dart
import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
//标题栏
appBar: AppBar(
title: Text("网络请求"),
),
//内容区域
body: DatePickerPubPage(),
),
//主题
theme: ThemeData(primarySwatch: Colors.red),
);
}
}
class DatePickerPubPage extends StatefulWidget {
@override
_DatePickerPubPageState createState() => _DatePickerPubPageState();
}
class _DatePickerPubPageState extends State<DatePickerPubPage> {
List _list = [];
@override
void initState() {
// TODO: implement initState
super.initState();
this._initData();
Map mapType = {"username": "王五", "age": 25};
//Map转换为json字符串
var stringType = json.encode(mapType);
print(mapType is Map); // true
print(stringType is String); // true
print(stringType); //{"username":"王五","age":25}
//json字符串转换为map
String users = '{"username":"张三","age":25}';
var user = json.decode(users);
print(user is Map); //true
print(user["username"]); //张三
}
_initData() async {
var api = "http://a.itying.com/api/productlist";
var resault = await http.get(api);
if (resault.statusCode == 200) {
//json字符串转换为map类型
print(resault.body);
setState(() {
this._list = json.decode(resault.body)["result"];
print(_list.length);
});
} else {
print(resault.statusCode);
}
}
//get 请求数据
_getData() async {
var apiUrl = "http://baidu.com";
var resault = await http.get(apiUrl);
if (resault.statusCode == 200) {
//print(resault.body);
} else {
//print(resault.statusCode);
}
}
//post 请求数据
_postData() async {
var apiUrl = "http://baidu.com";
var result = await http
.post(apiUrl, body: {"params1": "value1", "params2": "value2"});
if (result.statusCode == 200) {
//print(result.body);
} else {
//print(result.statusCode);
}
}
@override
Widget build(BuildContext context) {
return this._list.length > 0
? ListView(
children: this._list.map((value) {
return ListTile(
title: Text(value["title"]),
);
}).toList(),
)
: Center(
child: Text("加载中..."),
);
}
}