无法将数据存储在列表中 [英] Can't able to store data in the list
本文介绍了无法将数据存储在列表中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在从代码中的链接中检索数据,但是在运行应用程序时无法将其存储到列表中.仅在阻止时显示... 我想将JSON数据存储到用户列表中. 当我将print语句放在for循环下面时,它仅显示单个数据,而不是整个数据.
I am retrieving data from the link in the code but I am not able to store it into a list and while running the app It shows only if block ... I want to store JSON data into the users list. When I put the print statement below for loop it shows only single data instead of whole once.
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);
}
我在哪里做错了?
推荐答案
如果查看jsonData,您可能会注意到某些字段不是String而是int 你的模型课应该是这样的
if you look into jsonData you could notice some fields NOT a Strings but int you model class should be like this
class userData {
final int pid;
final String name;
final String description;
final int status;
final String tokenName;
final String updatedAt;
final int tokenNumber;
userData(this.pid, this.name, this.description, this.status, this.tokenName, this.updatedAt, this.tokenNumber);
}
如果按约定重命名此类-UserData
also will be much better if you rename this class by convention - UserData
这篇关于无法将数据存储在列表中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文