Flutter 如何删除listview项而不被拒绝

Flutter 如何删除listview项而不被拒绝,flutter,Flutter,我有一个列表,每个列表都有文本,旁边有一个按钮可以删除该列表。如果按下按钮,则用户确认要删除该按钮,并移除互动程序。以前,我使用了一个带有密钥的可撤销小部件,但在本例中,我如何将列表中的项与需要删除的磁贴相关联 代码(忽略onTap(),底部的扁平按钮用作提示): ListView.builder( itemCount:subGoals.length, itemBuilder:(上下文,索引){ 回程卡( 颜色:颜色。灰色[500], 孩子:ListTile( onTap:(){ //应使用Li

我有一个列表,每个列表都有文本,旁边有一个按钮可以删除该列表。如果按下按钮,则用户确认要删除该按钮,并移除互动程序。以前,我使用了一个带有密钥的可撤销小部件,但在本例中,我如何将列表中的项与需要删除的磁贴相关联

代码(忽略onTap(),底部的扁平按钮用作提示):

ListView.builder(
itemCount:subGoals.length,
itemBuilder:(上下文,索引){
回程卡(
颜色:颜色。灰色[500],
孩子:ListTile(
onTap:(){
//应使用ListTile文本的标题创建新列表
},
标题:文本(子目标[索引],
样式:TextStyle(颜色:Colors.white,字体大小:35),
),
尾随:图标按钮(
图标:图标(Icons.close),
颜色:颜色,白色,
splashColor:Colors.red[600],
已按下:(){
显示对话框(
上下文:上下文,
生成器:(BuildContext上下文){
返回警报对话框(
标题:中心(子项:文本(“删除列表?”,样式:文本样式(fontSize:25)),
内容:行(
mainAxisSize:mainAxisSize.min,
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
扁平按钮(
子项:文本(“是”,样式:TextStyle(fontSize:22)),
已按下:(){
如果(真){
//removeTile方法在这里
}
}
),
扁平按钮(
子项:文本(“否”,样式:TextStyle(fontSize:22)),
已按下:(){
Navigator.pop(上下文);
}
),

如果我从问题和评论中正确理解了您的问题,那么您应该有一个从
列表中调用的方法来从项目
列表中删除该项目。您应该将
列表视图生成的
索引
传递给该方法,并使用它从列表中删除该项目从与索引匹配的位置列出。然后使用
setState()
确保列表在ListView上重新呈现


如果您没有此方法,并且您需要帮助编写此方法,请共享更多代码和注释,我将更新此答案。

如果我从问题和注释中正确理解了您的问题,那么您应该有一个从
列表中调用的方法,以从项目
列表中删除该项目您可以将您的
列表视图生成的
索引
传递给该方法,并使用它从列表中与索引匹配的位置删除该项。然后使用
setState()
确保列表在列表视图上重新呈现


如果您没有此方法,并且需要帮助编写此方法,请共享更多代码和注释,我将更新此答案。

您是否使用某种
列表
项来生成
列表互动程序
列表视图
中?是的,我感到困惑的是程序如何知道其中的哪一部分当我按下按钮时,我正在点击列表的索引。是否有什么东西可以让我访问,将按钮与互动程序/索引的其余部分联系起来?您是否没有使用某种
列表
项来在
列表视图
中生成您的
列表互动程序
?是的,我感到困惑的是程序如何知道是哪一个当我按下按钮时,我正在单击列表的索引。我是否可以访问将按钮与互动程序的其余部分联系起来的内容/index我了解您的方法并将尝试实现它,当我单击每个互动程序旁边的按钮时,会生成一个索引?这是我唯一缺少的部分。第三个互动程序按钮单击时的区别是什么与第二个相反。一旦我可以根据按钮单击检索互动程序的索引,我就可以将其传递到RemoveFile方法。您可以使用ListView生成器在此处提供的索引
itemBuilder:(上下文,索引){
。哦,我明白了,当我点击按钮时,itembuilder会动态处理索引。谢谢,我会尝试实现这一点。我了解你的方法,并会尝试实现它,当我点击每个磁贴旁边的按钮时,会生成索引吗?这是我唯一缺少的部分。第三个磁贴按钮点击与se按钮点击有什么区别cond.一旦我可以根据按钮单击检索互动程序的索引,我就可以将其传递到RemoveFile方法。您可以使用ListView生成器在此处提供的索引
itemBuilder:(上下文,索引){
。哦,我明白了,当我单击按钮时,itemBuilder会动态处理索引。谢谢您,我将尝试实现此功能
ListView.builder(
  itemCount: subGoals.length,
  itemBuilder: (context,index){
    return Card(
      color: Colors.grey[500],
      child: ListTile(
        onTap: (){
          //should make new list with the title of the ListTile's text
        },
        title: Text(subGoals[index],
          style: TextStyle(color: Colors.white,fontSize: 35),
        ),
        trailing: IconButton(
          icon: Icon(Icons.close),
          color: Colors.white,
          splashColor: Colors.red[600], 
          onPressed: (){
            showDialog(
              context: context,
              builder: (BuildContext context){
                return AlertDialog(
                  title: Center(child: Text("Delete List?", style: TextStyle(fontSize: 25))),
                  content: Row(
                    mainAxisSize: MainAxisSize.min,
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: <Widget>[
                      FlatButton(
                        child: Text("Yes", style: TextStyle(fontSize: 22)),
                        onPressed: (){
                          if(true){
                             //removeTile method goes here
                          }
                        }
                      ),
                      FlatButton(
                        child: Text("No", style: TextStyle(fontSize: 22)),
                        onPressed: (){
                          Navigator.pop(context);
                        }
                      ),