从 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 显示值?