Flutter 颤振刷新有状态小部件
我有一个有状态类,其显示列表如下:Flutter 颤振刷新有状态小部件,flutter,listview,setstate,stateful,Flutter,Listview,Setstate,Stateful,我有一个有状态类,其显示列表如下: Container( margin: const EdgeInsets.fromLTRB(50.0, 10.0, 15.0, 10.0), height: 190, width: 100, child: ListView.builder( itemCount: gameM
Container(
margin: const EdgeInsets.fromLTRB(50.0, 10.0, 15.0, 10.0),
height: 190,
width: 100,
child: ListView.builder(
itemCount: gameManager.yourScoresList.length,
itemBuilder: (context, index) {
return ListTile(
visualDensity: VisualDensity(
vertical: VisualDensity.minimumDensity),
title: gameManager.yourScoresList[index],
);
}))
但是,当我从另一个类(GameManager)中清除yourScoresList.clear()时,ListView不会被清除(即继续显示现有的),直到我在有状态类中选择另一个小部件,它实现了setState()。
我曾尝试在ValueListenableBuilder中包装ListView,但无法使其正常工作。感谢您的建议。正如克里斯托弗·摩尔(Christopher Moore)所说,您必须在该课程中设置状态,例如
void clearbox(){
setState((){
yourScoresList.clear();
});
如果您的另一个类中没有StateFulWidget,请执行此操作
在StateFulWidget中,(当前类,其中有listView)
增加这个功能,
void clear(){
setState((){
gameManager.yourScoresList.clear();
});
}
调用此函数,每当您希望清除列表时,您甚至可以从拥有列表的另一个类中调用此函数。您必须从该另一个类中调用
setState
。但是,我的调用类中没有定义setState()?实际上,您使用的是一个扩展了StateFulW的类,因此它确实有。只要复制并粘贴代码,就可以了。我已经更新了我的答案,你现在可以清除列表,即使是从你的其他类,只要从该类调用这个函数。请投票并接受这个答案,如果有帮助的话:)如果我在StatefulWidget中包含clear()方法,它会说setState()对于这种类型是未定义的:类ComputerPlay扩展StatefulWidget{void clear(){setState({gameManager.yourScoresList.clear();})}@override\u ComputerPlayState createState()=>\u ComputerPlayState(); }