Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 列表视图上一次只显示一个项目_List_Listview_Dart_Flutter - Fatal编程技术网

List 列表视图上一次只显示一个项目

List 列表视图上一次只显示一个项目,list,listview,dart,flutter,List,Listview,Dart,Flutter,我似乎不知道如何让列表中的所有项目显示在列表视图中 当前,当我单击我的按钮显示列表时,只显示一个项目。如果单击“上一步”,然后再次单击主按钮,它将显示列表中的两个项目。冲洗并重复3项。我似乎无法调试print语句以查看错误所在。当我尝试打印(轨迹)或其他变体时,它会显示轨迹模型的实例(不是很有用)。有什么想法吗 这是我的密码: 类主屏幕扩展状态{ int计数器=0; Future fetchData()异步{ 计数器++; var response=等待获取( 'https://www.hiki

我似乎不知道如何让列表中的所有项目显示在列表视图中

当前,当我单击我的按钮显示列表时,只显示一个项目。如果单击“上一步”,然后再次单击主按钮,它将显示列表中的两个项目。冲洗并重复3项。我似乎无法调试print语句以查看错误所在。当我尝试打印(轨迹)或其他变体时,它会显示轨迹模型的实例(不是很有用)。有什么想法吗

这是我的密码:

类主屏幕扩展状态{
int计数器=0;
Future fetchData()异步{
计数器++;
var response=等待获取(
'https://www.hikingproject.com/data/get-trails?lat=39.733694&lon=-121.854771&maxDistance=10&key=200419778-6a46042e219d019001dd83b13d58aa59’;
final trailModel=trailModel.fromJson(json.decode(response.body));
//trails.add(trailModel);
设置状态(){
trails.add(trailModel);
});
返回路线;
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
appBar:appBar(标题:文本(“HikeLocator”),
主体:新升起的按钮(
子:文本(“单击我”),
onPressed:()异步{
最终跟踪=等待获取数据();
导航器。推(
上下文
new MaterialPage路线(生成器:(上下文)=>新建列表屏幕(轨迹)),
);
},
),
));
}
}
类ListScreen扩展了无状态小部件{
最后名单;
ListScreen(this.trails);
@凌驾
小部件构建(BuildContext-ctxt){
归还新脚手架(
appBar:新的appBar(
标题:新文本(“这是你的轨迹”),
),
正文:TrailList(trails),
);
}
}
类TrailList扩展了无状态小部件{
最后名单;
TrailList(this.trails);
小部件构建(上下文){
返回ListView.builder(
itemCount:trails.length,
itemBuilder:(上下文,int索引){
对象myText=json.encode(trails[index].trails);
List myText2=json.decode(myText);
返回文本(myText2[索引]['name']);
},
);
}
}
类跟踪模型{
物体轨迹;
TrailModel(this.trails);
TrailModel.fromJson(Map parsedJson){
trails=parsedJson['trails'];
}
}
我想我的问题可能在于fetchData(),但我不能完全确定。尝试至少打印出这些值,以限制可能出现的问题。(我每次按下按钮时,它是否只向列表中添加1个?我单击它时,它是否只呈现一个?它是每次单击都获取所有数据还是仅获取一个json对象?等等)


谢谢你的帮助。对不起,我是dart的新手,所以这是一个巨大的学习曲线,因为您的代码中有几个问题。这不能像您期望的那样工作的主要原因是,您正在将json的所有元素解析为一个
TrailModel
对象,但是您的代码假设您将有多个
TrailModel
对象

修复并使其工作的最简单方法是使用
TrailModel.trails
中的列表,而不是小部件中的列表

首先,在列表屏幕中,只传递列表中的第一个元素

class ListScreen扩展了无状态小部件{
最后名单;
...
@凌驾
小部件构建(BuildContext-ctxt){
归还新脚手架(
...
正文:TrailList(trails.first),
);
}
}
然后,在
TrailList
中,使用
TrailModel
中的
trails
列表:

类TrailList扩展了无状态小部件{
最终追踪模型;
TrailList(this.model);
小部件构建(上下文){
返回ListView.builder(
itemCount:model.trails.length,
itemBuilder:(上下文,int索引){
最终轨迹=模型轨迹[索引];
...
},
);
}
}
当我尝试打印(轨迹)或其他变体时,它会显示轨迹模型的实例(不是很有用)

print
在类中使用
toString
方法的输出。您看到的是trail模型的
实例
,因为这是从超类
对象
获得的默认实现。您可以覆盖它以获得更有用的内容:

类跟踪模型{
@凌驾
字符串toString()=>“trails=$trails”;
}

您的代码中有几个问题。这不能像您期望的那样工作的主要原因是,您正在将json的所有元素解析为一个
TrailModel
对象,但是您的代码假设您将有多个
TrailModel
对象

修复并使其工作的最简单方法是使用
TrailModel.trails
中的列表,而不是小部件中的列表

首先,在列表屏幕中,只传递列表中的第一个元素

class ListScreen扩展了无状态小部件{
最后名单;
...
@凌驾
小部件构建(BuildContext-ctxt){
归还新脚手架(
...
正文:TrailList(trails.first),
);
}
}
然后,在
TrailList
中,使用
TrailModel
中的
trails
列表:

类TrailList扩展了无状态小部件{
最终追踪模型;
TrailList(this.model);
小部件构建(上下文){
返回ListView.builder(
itemCount:model.trails.length,
itemBuilder:(上下文,int索引){
最终轨迹=模型轨迹[索引];
...
},
);
}
}
当我尝试打印(轨迹)或其他变体时,它会显示轨迹模型的实例(不是很有用)

print
在类中使用
toString
方法的输出。您看到的是trail模型的
实例
,因为这是从超类
对象
获得的默认实现。您可以覆盖它以获得更有用的内容:

类跟踪模型{
@凌驾
字符串toString()=>“trails=$trails”;