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