Flutter - данные повторного заказа, хранящиеся в FireStore
Как видите, я перетаскиваю Задачи с помощью виджета ReorderableListView Flutter.
OnReorder может перетаскивать задачи вверх и вниз. Однако, когда я закрываю приложение, все задачи идут в порядке, установленном по умолчанию.
Это связано с тем, что мои данные, которые извлекаются из CloudFireStore, не меняют свой порядок, а способ их обновления при перетаскивании.
Может ли кто-нибудь мне помочь, как я могу обновить положение задач, хранящихся в виде документов в Cloud FireStore, чтобы, когда я закрываю приложение и открываю его снова, оно показывало новые обновленные позиции, а не старые позиции задачи
Код:
child: StreamBuilder(
stream: FirebaseFirestore.instance
.collection("Tasks")
.doc(_email)
.collection("User_Tasks_List")
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return const Text("Loading!...");
_docs = snapshot.data.documents;
return Theme(
data: ThemeData(canvasColor: Colors.transparent),
child: ReorderableListView(
children: _docs
.map((e) => InkWell(
key: ObjectKey(e),
onTap: () => _popupDialog(context, e),
onDoubleTap: () => FirebaseFirestore
.instance
.runTransaction(
(transaction) async {
transaction.delete(e.reference);
Fluttertoast.showToast(
msg: "Task has been deleted!");
}),
child: ViewHolder(e)))
.toList(),
onReorder: onReorder),
);
}),
1 ответ
Вы можете добавить такой параметр, как
index:x
к предметам в пожарном магазине. Затем вам нужно сохранить порядок элементов упорядоченного списка и сохранить их в Firestore с помощью индексов.
Когда вы выбираете элементы, вам нужно отсортировать их по этому индексу, и вы получите тот же порядок.
objects.sort((a, b) => a.index.compareTo(b.index));