局部变量上的Flutter setstate不更新UI

时间:2020-10-20 02:32:03

标签: flutter flutter-layout setstate

因此,我尝试动态更新单个listview项。我正在使用一个函数来生成每个项目,并在该函数中创建了一个局部变量。我用setstate更新了该变量,但UI没有更新。如果我全局设置相同的变量,则可以,但是我更改了每个不需要的listview项目。有人对此有任何提示吗?我是陌生的,很抱歉,如果已多次问到这个问题。我尝试搜索,但找不到任何解决方案。这是项目生成器功能的类似代码。

Widget generateListItem(){ 
    bool flag= false;
    return InkWell(
       onTap:(){
          setState((){
             flag=true;
          })
       },
       child: Text(flag? "Changed" : "Not Changed"),
    );
}

1 个答案:

答案 0 :(得分:0)

每次调用setState时都会重置该标志,因为该标志在您的generateListItem()小部件中,

我认为您必须在列表中设置布尔值,所以当您调用setState时,布尔值列表中的状态不会重置,

List<bool> flag = [];  // 

Widget generateListItem(int i){ 
flag.add(false);
return InkWell(
   onTap:(){
      setState((){
         flag[i]=true;
      })
   },
   child: Text(flag[i]? "Changed" : "Not Changed"),
);}