Flutter 使用onTap时,如何从列表和屏幕中删除该项?

Flutter 使用onTap时,如何从列表和屏幕中删除该项?,flutter,dart,Flutter,Dart,当使用“onTap”时,我试图从列表和屏幕中删除该项。目前,它从列表中删除了该项目,但我无法将其从屏幕中删除。我怎样才能做到这一点 这是我的密码: SliverList( delegate: SliverChildBuilderDelegate( (context, i) => ListTile( title: Slidable( actionPan

当使用“onTap”时,我试图从列表和屏幕中删除该项。目前,它从列表中删除了该项目,但我无法将其从屏幕中删除。我怎样才能做到这一点

这是我的密码:

          SliverList(
             delegate: SliverChildBuilderDelegate(
             (context, i) => ListTile(
                title: Slidable(
                  actionPane: SlidableDrawerActionPane(),
                  actionExtentRatio: 0.25,
                  child: new Text(
                    items[i],
                    style: TextStyle(fontSize: 30),
                  ),
                  secondaryActions: <Widget>[
                    IconSlideAction(
                      caption: 'Remove',
                      color: Colors.red,
                      icon: Icons.delete,
                      onTap: () {
                        setState(() {
                          items.removeAt(i);
                        });
                      },
                    ),
                  ],
                ),
              ),
          childCount: items.length,
        ),
      ),
SliverList(
代表:SliverChildBuilderDelegate(
(上下文,i)=>ListTile(
标题:可滑动(
actionPane:SlideableDrawerActionPane(),
行动延伸率:0.25,
儿童:新文本(
项目[i],
样式:TextStyle(字体大小:30),
),
第二项行动:[
IconSlideAction(
标题:“删除”,
颜色:颜色,红色,
图标:Icons.delete,
onTap:(){
设置状态(){
项目.删除(i);
});
},
),
],
),
),
childCount:items.length,
),
),

我假设发生这种情况是因为
setState
不会触发小部件执行重建

尝试将您的
SliverList
包装到中

e、 g

StatefulBuilder(builder:(innerContext,innerSetState)=>
银表(
代表:SliverChildBuilderDelegate(
(上下文,i)=>ListTile(
标题:可滑动(
actionPane:SlideableDrawerActionPane(),
行动延伸率:0.25,
儿童:新文本(
项目[i],
样式:TextStyle(字体大小:30),
),
第二项行动:[
IconSlideAction(
标题:“删除”,
颜色:颜色,红色,
图标:Icons.delete,
onTap:(){
innerSetState(){
项目.删除(i);
});
},
),
],
),
),
childCount:items.length,
),
),
)
这里最重要的部分是
innerSetState
函数,它在构建器的函数参数中传递。它重建整个
StatefulBuilder
子树


让我知道这是否有帮助。

但是,如果我创建另一个列表,Sliverlist,它将不起作用。例如,我有一个包含数字1-4的列表(SliverList),如上图所示。另一个列表(SliverList)用于不同类型的列表,比如A-Z。我对两个列表都使用了您的解决方案。但是,它只在一个列表上工作您是否对每个列表使用单独的
StatefulBuilder
?我对每个列表使用单独的StatefulBuilder
StatefulBuilder
重建取决于
innerSetState
方法的使用-您在代码中使用的位置(应该在生成器内部调用它),您确定使用了父类中的
innerSetState
而不是常规的
setState
?如果我开始从第一个列表中删除,它只允许我从第一个列表中删除,而不允许从第二个列表中删除。反之亦然