http库
pubspec.yaml文件添加http的依赖
dio
- 用法1
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:async';
main() {
runApp(MyApp());
}
//MaterialApp组件作为根组件使用
// Scaffold 有下面几个主要属性
// appBar-界面顶部导航栏 body-界面显示的主要内容Widget drawer-抽屉菜单控件
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement buildå
return MaterialApp(home: HttpDemo());
}
}
class HttpDemo extends StatefulWidget {
HttpDemo({Key key}) : super(key: key);
@override
_HttpDemoState createState() => _HttpDemoState();
}
class _HttpDemoState extends State<HttpDemo> {
@override
void initState() {
super.initState();
fetchHttpData();
}
//get的用法 这个URL有效
fetchHttpData() async {
var url1 = 'https://resources.ninghao.net/demo/posts.json';
final result = await http.get(url1);
//状态码
print('Response status: ${result.statusCode}');
//具体数据
print('Response body: ${result.body}');
}
//post的用法 下面的URL无效
fetchData() async {
var url = 'https://example.com/whatsit/create';
var response =
await http.post(url, body: {'name': 'doodle', 'color': 'blue'});
print('Response status: ${response.statusCode}');
print('Response body: ${response.body}');
print(await http.read('https://example.com/foobar.txt'));
}
@override
Widget build(BuildContext context) {
return Container(
child: Container()
);
}
}
json转换Map
import 'dart:convert';
import 'package:flutter/material.dart';
main() {
runApp(MyApp());
}
//MaterialApp组件作为根组件使用
// Scaffold 有下面几个主要属性
// appBar-界面顶部导航栏 body-界面显示的主要内容Widget drawer-抽屉菜单控件
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement buildå
return MaterialApp(home: HttpDemo());
}
}
class HttpDemo extends StatefulWidget {
HttpDemo({Key key}) : super(key: key);
@override
_HttpDemoState createState() => _HttpDemoState();
}
class _HttpDemoState extends State<HttpDemo> {
@override
void initState() {
super.initState();
// fetchHttpData();
final post = {'title': '这是标题', 'subTitle': '这是子标题'};
print(post['title']);
final postJson = json.encode(post);
print(postJson);
final postJsonConverted = json.decode(postJson);
print(postJsonConverted['title']);
print(postJsonConverted is Map);
}
@override
Widget build(BuildContext context) {
return Container(
child: Container(),
);
}
}
//自定义Model对象
Future<List<Model>> fetchHttpData() async {
var url1 = 'https://resources.ninghao.net/demo/posts.json';
final result = await http.get(url1);
//状态码
print('Response status: ${result.statusCode}');
//具体数据
print('Response body: ${result.body}');
if (result.statusCode == 200) {
final responeBody = json.decode(result.body);
List<Model> models = responeBody['models']
.map<Model>((item) => Model.fromJson(item))
.toList();
return models;
} else {
throw Exception('fail to fetch posts');
}
}
Map转Model Model转json
import 'dart:convert';
import 'package:flutter/material.dart';
main() {
runApp(MyApp());
}
//MaterialApp组件作为根组件使用
// Scaffold 有下面几个主要属性
// appBar-界面顶部导航栏 body-界面显示的主要内容Widget drawer-抽屉菜单控件
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement buildå
return MaterialApp(home: HttpDemo());
}
}
class HttpDemo extends StatefulWidget {
HttpDemo({Key key}) : super(key: key);
@override
_HttpDemoState createState() => _HttpDemoState();
}
class _HttpDemoState extends State<HttpDemo> {
@override
void initState() {
super.initState();
// fetchHttpData();
final post = {'title': '这是标题', 'subTitle': '这是子标题'};
//Map转json
print(post['title']);
final postJson = json.encode(post);
print(postJson);
//json转Map
final postJsonConverted = json.decode(postJson);
print(postJsonConverted['title']);
print(postJsonConverted is Map);
//Map转Model
final modelObject = Model.fromJson(postJsonConverted);
print('标题:${modelObject.title},子标题:${modelObject.subTitle}');
//Model转json
print('${json.encode(modelObject)}');
}
@override
Widget build(BuildContext context) {
return Container(
child: Container(),
);
}
}
class Model {
final String title;
final String subTitle;
Model(this.title, this.subTitle);
Model.fromJson(Map json)
: title = json['title'],
subTitle = json['subTitle'];
Map toJson() => {'title': title, 'subTitle': subTitle};
}
网友评论