У меня есть код, который использует отключенные в списке (показывает элементы из базы данных). После отклонения элемента предполагается, что закусочная будет отображаться, но она не отображается, и кажется, что отклоняемый элемент все еще является частью дерева. Вы можете мне с этим помочь?
return ListView.builder(
itemCount: count,
itemBuilder: (BuildContext context, int position) {
final ThemeData theme = Theme.of(context);
return Dismissible(
key: Key(this.objs[position].id.toString()),
onDismissed: (direction) {
setState(() async {
int result = await helper.delete(this.objs[position].id);
});
Scaffold.of(context)
.showSnackBar(SnackBar(
content: Text(this.objs[position].title + "dismissed")));
},
background: Container(
color: Colors.red,
child: const ListTile(
leading: Icon(Icons.delete, color: Colors.white, size: 36.0)
)
),
child: ListTile(
leading: CircleAvatar(
backgroundColor: getColor(this.objs[position].priority),
child: Text(this.objs[position].id.toString()),
),
title: Text(obj[position].title),
subtitle: Text(objs[position].date),
onTap: () {
debugPrint("Tapped on " + objs[position].id.toString());
navigateToDetail(this.objs[position]);
},
),
);
},
);
это называется внутри эшафота. А objs - это список, содержащий все мои объекты из базы данных.
Вот мой код удаления, который вызывается внутри onDismissed:
Future<int> delete(int id) async {
Database db = await this.db;
var result = await db.rawDelete("DELETE FROM $tblT WHERE $colId=$id");
return result;
}
Я заметил, удаляю ли я один элемент и сразу же пытаюсь создать другой (у меня есть возможность вставить в БД): иногда возникает ошибка: отклоненный виджет «Отклоняемый» все еще является частью дерева
Обновление: перемещена часть удаления до setState, и я получаю сообщение об ошибке: отклоненный виджет Dismissible по-прежнему является частью дерева каждый раз, когда я смахиваю, чтобы закрыть