- bounty将在7天后过期**。回答此问题可获得+50的声望奖励。Sameera Tennakoon正在寻找规范答案:需要体系结构解决方案或云功能来解决此问题
我有一个名为"products"的FireStore集合,其中有包含产品数据(如名称、价格和类别)的文档。
{
"name": "Milk Shake Strawberry",
"price": "250",
"category": "Drinks",
"categoryID:1234
},
{
"name": "Swiss Roll",
"price": "150",
"category": "Cake",
"categoryID":1235
}
我使用以下代码将所有产品数据Map到ProductItemData,
List<Map<String, dynamic>?>? productItemsData = snapshots.data?.docs
.map((e) => e.data() as Map<String, dynamic>?)
.toList();
使用forEach,我将类别名称的列表收集到这个
List<String> _tabs = [];
for (var doc in productItemsData!) {
Map<String, dynamic> data =
doc as Map<String, dynamic>;
if (!_tabs.contains(data["category"])) {
_tabs.add(data["category"]);
}
}
因此,我可以显示数据(产品项目)在一个标签栏视图。与所有产品下的相关类别名称。
为了获取相关的产品条目,我使用以下代码获取显示产品数据的小部件。
List<Widget> _list = [];
for (int i = 0; i < productItemsData!.length; i++) {
if(productItemsData![i]!["category"] == category) {
_list.add(_buildCustomProductTile(context, productItemsData![i]));
}
} return list;
到目前为止,我的要求是100%按预期工作。但现在我想根据索引重新排序类别,当UI显示产品时,我希望它们按该顺序排列。
为了存储categories和categoryID,我有一个不同的集合,它类似于这样,
{
"index": "0",
"categoryName": "Drinks",
"categoryID:1234
},
{
"index": "1",
"categoryName": "Cake",
"categoryID":1235
}
通过使用ReorderableListView,我通过更改onReorder函数中的索引来重新排序类别。
我现在的问题是我如何使用这个不同的集合,它有类别名称,ID和索引,以排序产品集合的类别索引?
1条答案
按热度按时间qyzbxkaa1#
若要按类别索引对“products”集合进行排序,可以对“category”集合进行单独查询以获取类别索引,然后使用该索引对“products”集合进行排序。可以使用下面的代码获取排序后的“products”数据:
注:
categoryData
是从“类别”集合获得的数据,productItemsData
是从“产品”集合获得的数据。