Dio练习题2

示例有3个文件:

main.dart

import 'package:flutter/material.dart';
import 'httpgetdata.dart';
import 'modelpost.dart';

void main()=>runApp(MyApp());

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}

class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('demoModel&Dio'),),
body: FutureBuilder(
future: GetData().getData(),
builder: (context,snapshot){
if(snapshot.hasData){
var listData = snapshot.data.map((item)=>PostModel.fromJson(item)).toList();
return ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (context,index){
return ListTile(
title: Text('${listData[index].title}'),
subtitle: Text('${listData[index].body}'),
);
},
);
}else{
return Center(child: CircularProgressIndicator(),);
}
},),
);
}
}


httpgetdata.dart
import 'package:http/http.dart' as http;
import 'package:dio/dio.dart';
import 'dart:convert';

class GetData{
String url = 'http://jsonplaceholder.typicode.com/posts';
var backData;
getData()async{
Response response = await Dio().get(url);
if(response.statusCode==200){
return response.data;
}else{
return ['there is no data get from website'];
}
}
}

modelpost.dart
class PostModel{
//下面两个数据要根据实际的Json数据填写;
final int userId;
final int id;
final String title;
final String body;

PostModel(
this.userId,
this.id,
this.title,
this.body,
);
//PostModel.fromJson(Map json)输入的参数是一个Map类型Map json;输出的是PostModel类型数据;
PostModel.fromJson(Map json)
:userId=json['userId'],
id=json['id'],
title = json['title'],
body = json['body'];
// Map toJson()返回的是Map类型数据,是将Post类数据序列化为Json;
Map toJson() => {
'id':id,
'userId':userId,
'title':title,
'body':body,
};
}
posted @ 2019-06-02 00:06  braveheart007  阅读(153)  评论(0编辑  收藏  举报