我有一份食物清单。那有一个类别,subCategory1,subCategory2 等。
当用户取消选择类别项目时。他们还取消选择 subCategory1、subCategory2 项目等,因为它们是原始类别项目的子项,如下所示:
所以我有一个 for 循环,它通过寻找子类别列表元素并像这样删除它们:
// Remove a category item and all of its children
if (categoryType == "category") {
List<String> subCategory1Children = List<String>.from(
snapshot.data.documents[gridIndex]['subCategory1Children']);
// Remove the subcategory items
for (int i = 0; i < foodDrinkMenuElements['subCategory1'].length; i++) {
String subID = foodDrinkMenuElements['subCategory1'][i];
int removalIndex = _indexOfListGridElement('subCategory1', subID);
if (subCategory1Children.contains(subID)) {
_removeCategoryGridItem(removalIndex, subID, 'subCategory1');
}
}
//Remove the actual item being pressed
_removeCategoryGridItem(listIndex + 1, id, categoryType);
}
像这样调用 _removeCategoryGridItem() :
void _removeCategoryGridItem(int removalIndex, String id, String categoryType) {
_FoodandDrinkKey.currentState.removeItem(removalIndex,
(BuildContext context, Animation<double> animation) {
return _buildListItem(removalIndex, animation);
});
foodDrinkMenuElements[categoryType].remove(id);
}
For 循环总是在删除 1 个列表项后完成。我认为这是因为函数_removeCategoryGridItem 中的return 语句。
我已经看到其他答案说将其放入列表并遍历列表,但我不知道这如何适用于此。
谢谢你的帮助