не знал, как сформулировать этот вопрос, но в данный момент я борюсь со следующим. У меня есть глобальная переменная как таковая:
class GlobalVariables{
static List<Activity> globalActivities = [];
}
Сначала я заполняю список в своем классе домашнего экрана. Это работает. У меня есть второй экран, где я использую переменную для инициализации списка элементов. Здесь пользователь может отфильтровать этот список действий, и на основе фильтра я динамически удаляю элементы из локального списка. Каким-то образом моя глобальная переменная теперь имитирует количество записей в этом локальном списке, которого я не понимаю. Может быть, еще слишком рано, но я не знаю, что происходит.
@override
Widget build(BuildContext context) {
activities = globals.GlobalVariables.globalActivities;
print("act list start: ${globals.GlobalVariables.globalActivities.length}");
// final activities = Provider.of<List<Activity>>(context) ?? [];
// MyUser user = Provider.of<MyUser>(context);
if(widget.typefilter == "Tunnel"){
print("act list mid 0: ${globals.GlobalVariables.globalActivities.length}");
activities.removeWhere((i){
if (i.type == 'Other'){
return true;
}else{
return false;
}
});
print("act list mid 0b: ${globals.GlobalVariables.globalActivities.length}");
}else if (widget.typefilter == "Other"){
activities.removeWhere((i){
if (i.type == 'Tunnel'){
return true;
}else{
return false;
}
});
}else{
//nothing
}
print("act list mid 1: ${globals.GlobalVariables.globalActivities.length}");
Журнал печати выглядит следующим образом:
flutter: act list start: 1978
flutter: act list mid 0: 1978
flutter: act list mid 0b: 0
flutter: act list mid 1: 0
flutter: act list end 0: 0
Правильно, что список действий должен быть равен 0, но почему мой глобальный список теперь также равен 0?
спасибо, Тимо
Спасибо друг! Не знал об этом. Мне очень помогло :)
Рад, что смог помочь, удачи!
Вы всегда должны предпочесть
List.of
или.toList
для копированияList
.List.from
теряет информацию о типе и должен затем выполнять приведения во время выполнения, которые в противном случае были бы ненужными. См.: dart.dev/guides/language/efficient-dart/…Хорошая точка зрения! Я внес правку, чтобы вместо этого предложить .of()