如何在点击时更改列表图块的子项

问题描述 投票:0回答:1
searchResult = ['john','doe','smith'];
Expanded(
                  child: Container(
                    width: ScreenSize.screenWidth,
                    child: Center(
                      child:searchResult.isEmpty? Text("Oops! Looks like you have no friends at the moment.") : ListView.builder(itemCount: searchResult.length,itemBuilder: (context , index){
                        return ListTile(
                          
                          
                          title: Text(searchResult[index]['username']),
                          subtitle: Text(searchResult[index]['email']),
                          
                          trailing: GestureDetector(
                            onTap: () {
                              
                              
                              
                              
                            },
                            child: Icon(Icons.add_circle_outline)),
                            
                        );

                      })
                    ),
                  ),
                ),

在上面的代码中,我想在 onTap 中执行一个功能,当点击该功能时,该功能会将该特定列表图块的图标Only更改为图标(Icons.done)。

我尝试使用 setState 但无法弄清楚。

flutter list dart mobile state
1个回答
0
投票

创建状态级别变量,

 bool isDone = false;

单击按钮更改变量值并相应地更改值。

    searchResult = ['john','doe','smith']; 



Expanded( 
                  child: Container(
                    width: ScreenSize.screenWidth,
                    child: Center(
                      child:searchResult.isEmpty? Text("Oops! Looks like you have no friends at the moment.") : ListView.builder(itemCount: searchResult.length,itemBuilder: (context , index){
                        return ListTile(
                          
                          
                          title: Text(searchResult[index]['username']),
                          subtitle: Text(searchResult[index]['email']),
                          
                          trailing: GestureDetector(
                            onTap: () {
                              
                              setState((){
                                  isDone = true; 

                                })
                              
                              
                            },
                            child: Icon(isDone ?  Icons.done :  Icons.add_circle_outline)),
                            
                        );

                      })
                    ),
                  ),
                ),
© www.soinside.com 2019 - 2024. All rights reserved.