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("加載中..."),
);
}
}