Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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
Flutter 使用StatefulWidget作为项目,在setState之后未更新颤振ListView_Flutter - Fatal编程技术网

Flutter 使用StatefulWidget作为项目,在setState之后未更新颤振ListView

Flutter 使用StatefulWidget作为项目,在setState之后未更新颤振ListView,flutter,Flutter,页面包含一个ListView,其itemBuilder返回一个StatefulWidget,但在此页面中调用setState后,检索到的新数据将不会更新,但ListView将在将当前现有项目滚动出屏幕之前不会更新 用无状态widget替换项目是可行的,但是我的项目需要有状态,因为每个项目都有一些动画 如何刷新列表视图 ListView.builder( 填充:仅限边集(顶部:listMarginTop,底部:marginBottom), 控制器:滚动控制器, itemCount:cellCou

页面包含一个
ListView
,其
itemBuilder
返回一个
StatefulWidget
,但在此页面中调用setState后,检索到的新数据将不会更新,但ListView将在将当前现有项目滚动出屏幕之前不会更新

无状态widget
替换项目是可行的,但是我的项目需要有状态,因为每个项目都有一些动画

如何刷新
列表视图


ListView.builder(
填充:仅限边集(顶部:listMarginTop,底部:marginBottom),
控制器:滚动控制器,
itemCount:cellCount,
itemBuilder:(构建上下文,int索引){
返回容器(
边距:从LTRB开始的边距集(边距左,垂直间距,边距右,0),
高度:项目高度,
孩子:排(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
容器(
宽度:itemWidth,
高度:项目高度,
子项:getItem(索引*2,大小(itemWidth,itemHeight)),///返回StatefulWidget
),
容器(
宽度:itemWidth,
高度:项目高度,
子项:getItem(索引*2+1,大小(itemWidth,itemHeight)),
)
],
),
);
},
),

当数据更改时,您应该在
getItem()
函数中调用
setState()
函数,以便将它们应用于
列表视图
项目,当您将项目滚动出屏幕时,您的数据会更改,这一点得到了支持:

   getItem(){
     //your implementation
     setState();
   }

我也有同样的问题

我已将:key:UniqueKey()添加到我的Listview中


它运行良好,无需其他任何东西:)

请共享一些代码以查看您的实现并帮助您解决问题,谢谢:)空的setState()是一种代码味道。您应该在传递给setState的闭包内进行更改。
   getItem(){
     //your implementation
     setState();
   }