Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.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 局部变量上的颤振设置状态未更新UI_Flutter_Flutter Layout_Setstate - Fatal编程技术网

Flutter 局部变量上的颤振设置状态未更新UI

Flutter 局部变量上的颤振设置状态未更新UI,flutter,flutter-layout,setstate,Flutter,Flutter Layout,Setstate,因此,我尝试动态更新单个listview项。我使用一个函数来生成每个项,并在该函数中创建了一个局部变量。我使用setstate更新该变量,但UI没有更新。如果我将同一个变量设为全局变量,它会工作,但我会更改我不想要的每个listview项。有人有什么建议吗?我是一个新的颤栗和抱歉,如果这已经被问了很多次。我试着搜索,但找不到任何解决办法。这是项生成器函数的类似代码 Widget generateListItem(){ bool flag= false; return InkWe

因此,我尝试动态更新单个listview项。我使用一个函数来生成每个项,并在该函数中创建了一个局部变量。我使用setstate更新该变量,但UI没有更新。如果我将同一个变量设为全局变量,它会工作,但我会更改我不想要的每个listview项。有人有什么建议吗?我是一个新的颤栗和抱歉,如果这已经被问了很多次。我试着搜索,但找不到任何解决办法。这是项生成器函数的类似代码

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

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

我想你必须在列表中设置bool,所以当你调用setState时,bool列表中的状态没有重置

List<bool> flag = [];  // 

Widget generateListItem(int i){ 
flag.add(false);
return InkWell(
   onTap:(){
      setState((){
         flag[i]=true;
      })
   },
   child: Text(flag[i]? "Changed" : "Not Changed"),
);}
列表标志=[];//
控件生成列表项(int i){
flag.add(false);
回墨槽(
onTap:(){
设置状态(){
标志[i]=真;
})
},
子项:文本(标记[i]?“已更改”:“未更改”),
);}

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

我想你必须在列表中设置bool,所以当你调用setState时,bool列表中的状态没有重置

List<bool> flag = [];  // 

Widget generateListItem(int i){ 
flag.add(false);
return InkWell(
   onTap:(){
      setState((){
         flag[i]=true;
      })
   },
   child: Text(flag[i]? "Changed" : "Not Changed"),
);}
列表标志=[];//
控件生成列表项(int i){
flag.add(false);
回墨槽(
onTap:(){
设置状态(){
标志[i]=真;
})
},
子项:文本(标记[i]?“已更改”:“未更改”),
);}

当通过setState()重新生成“generateListItem”时,该标志也会重置。所以旗帜总是假的。。现在这更有意义了。是否有任何方法可以单独更新该项?将其设置为
State
类中的变量,而不是方法中的变量@如果我这样做,setstate会更改每一项。我想单独更改特定项。您需要在重新构建的顶部父窗口小部件上控制该值。“页面(此处)[有状态小部件]-build()-'generateListItem'小部件…”当通过setState()重新生成'generateListItem'时,标志也会重置。所以旗帜总是假的。。现在这更有意义了。是否有任何方法可以单独更新该项?将其设置为
State
类中的变量,而不是方法中的变量@如果我这样做,setstate会更改每一项。我想单独更改特定项。您需要在重新构建的顶部父窗口小部件上控制该值。“页面(此处)[有状态小部件]-build()-'generateListItem'小部件…”太棒了<代码>地图可能太棒了。太神奇了<代码>地图也可能是。