【发布时间】:2020-06-23 07:13:36
【问题描述】:
我正在从代码中的链接中检索数据,但我无法将其存储到列表中,并且在运行应用程序时它仅显示 if block ... 我想将 JSON 数据存储到用户列表中。 当我将 print 语句放在 for 循环下面时,它只显示单个数据而不是整个一次。
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:http/http.dart' as http;
import 'dart:convert';
void main() => runApp(Myapp());
class Myapp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
Future<List<userData>>_getUserData() async{
final response =await http.get("https://dev.uneva.in/task_721/list.php");
var jsonData = json.decode(response.body);
List<userData> users = [];
for (var i in jsonData){
userData user = userData(i["other"]["pid"], i["name"], i["description"],i["status"] ,i["tokenName"],i["updatedAt"] ,i["tokenNumber"]);
users.add(user);
}
print(users.length);
return users;
}
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("ECHO-ALL"),
),
body: Container(
child: FutureBuilder(
future: _getUserData(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.data == null) {
return Container(
child: Center(
child: Text("Waiting for data...."),
),
);
} else {
return ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text(snapshot.data[index].name),
);
});
}
},
),
),
);
}
}
class userData {
final String pid;
final String name;
final String description;
final String status;
final String tokenName;
final String updatedAt;
final String tokenNumber;
userData(this.pid, this.name, this.description, this.status, this.tokenName,
this.updatedAt, this.tokenNumber);
}
我哪里做错了??
【问题讨论】:
-
你能把你的日志贴在这里吗,你从打印声明中得到的?
-
我使用了错误的数据类型,现在解决了
标签: json flutter flutter-layout