Lookbehinds на debuggex (PCRE, Javascript и Python) не может быть переменной ширины, что означает, что вы можете использовать (?<=<a>)
, который имеет фиксированную ширину (3 символа), но не то, что может меняться по длине (?<=<a.*>)
(может иметь 3 символа, или 4, или 5 и т. Д.).
Регулярное выражение просто неверно, но debuggex сообщает вам, что совпадения нет.
Добавьте функцию обратного вызова в свой класс PopUpMenu
:
class PopUpMenu extends StatelessWidget {
VoidCallback onDelete;
PopUpMenu({this.onDelete});
void showMenuSelection(String value) {
switch (value) {
case 'Delete':
onDelete();
break;
// Other cases for other menu options
}
}
Затем при создании в исходном классе:
...
trailing: PopUpMenu(
onDelete: () {
levelsData.removeWhere((element) => element == element);
}
)));
}
Общее правило во Флаттере - передать обратный вызов для детей, а не пытаться получить доступ к данным в родителе.
Вам также может понадобиться сделать StuffInTiles
виджет с состоянием и добавить setState(() {});
к onDelete
, так как простое удаление значения фактически не обновит ваше представление новым списком.