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(); }