从 ListView.builder Flutter 中删除项目

Posted

技术标签:

【中文标题】从 ListView.builder Flutter 中删除项目【英文标题】:removing item from ListView.builder Flutter 【发布时间】:2021-01-19 14:15:42 【问题描述】:

您好,请问如何从 ListViewBuilder 中删除项目, 通常,如果我有一个数组就足够了,我们称它为 x; 然后我可以使用 remoteAt 删除我想要的任何项目

 x.removeAt(index);

但在这种情况下,我无法确切知道我该怎么做。 所以在这种情况下我没有 x 数组或列表,请参阅下面的代码。 我刚刚声明如果我有一个列表并将其包含在列表构建器中,我该怎么做,然后我可以通过调用 removeAt 属性来删除屏幕上的任何小部件 提前谢谢

child: Column(
            children: <Widget>[BlocBuilder(
                cubit: BlocProvider.of<AppBloc>(context),
                builder: (BuildContext context, AppState state) 
                  if (state is AppUpdated && state.services.count > 0) 
                    return Expanded(
                      child: ListView.builder(
                        itemCount: state.services.count,
                        itemBuilder: (BuildContext context, int index) =>
                            Dismissible(
                              key: Key(state.service.toString()),

【问题讨论】:

x.removeAt(index); 之后调用设置状态就可以了 感谢您的帮助,但名为 x 的数组在项目中并不存在。我刚刚声明,如果我通常有一个列表,我们称它为 x 并且我想在 listbuilder 中填写此列表,然后如果我想删除屏幕上的任何小部件项目,那么调用 removeAt 属性就足够了。但在我的情况下,这里只有 state.services.count 而不是像 x 这样的数组或列表,所以我怎样才能从 state.services 中删除任何项目。这是我的问题 【参考方案1】:
ListView.builder(
  itemCount: state.services.count,
  itemBuilder: (BuildContext context, int index) =>
    Dismissible(
      key: Key(state.service.toString()),
      onDismissed: (direction) 
         // Remove the item from the data source.
         setState(() 
             x.removeAt(index);
         );
        ,
        child: //your child here (maybe listivew)
     ),
   ),

【讨论】:

感谢您的帮助,但名为 x 的数组在项目中并不存在。我刚刚声明,如果我通常有一个列表,我们称它为 x 并且我想在 listbuilder 中填写此列表,然后如果我想删除屏幕上的任何小部件项目,那么调用 removeAt 属性就足够了。但在我的情况下,这里只有 state.services.count 而不是像 x 这样的数组或列表,所以我怎样才能从 state.services 中删除任何项目。这是我的问题。 如果使用解除执行删除操作的特定列表,则将事件添加到块中,并且应该列出并产生给出新列表的新状态。你不能在BlocBuilder里面使用setState所以你必须添加一个事件。

以上是关于从 ListView.builder Flutter 中删除项目的主要内容,如果未能解决你的问题,请参考以下文章

从 ListView.builder 中返回自定义卡片和关闭(添加和删除到列表视图)

如何为 ListView.builder 加载数据以从提供者的数据构建

从 ListView.builder Flutter 中删除项目

如何从http POST请求结果颤振在listview builder上显示数据

Flutter - ListView.builder:初始滚动位置

如何使用 StreamBuilder 将数据从 firebase firestore 检索到颤振中,并使用 ListView.builder 显示值?