#flutter
#flutter
Вопрос:
Существует ли какая-либо стратегия для того, чтобы ваш код запускался только один раз (например, initState ()) и контекст также был доступен (для использования .of (context)). Например, я получаю Bloc.of (context) и хочу подписаться на него (выполнить некоторые действия, например, отобразить диалоговое окно предупреждения и т.д.). Подписка в build() означает подписку несколько раз
Я могу использовать didChangeDependencies () и установить подписку ??= bloc.послушайте, но мне было интересно, есть ли другая хорошая стратегия.
Комментарии:
1. Вы уже нашли решение с помощью
didChangeDependencies
. Вам также нужно будет только отказаться от подписки.
Ответ №1:
есть другой способ сделать это, добавив переменную «bool» и установив ее как «false» в «initState» , и позволяет named (isExec)
2 — в методе сборки проверьте, является ли «isExec» == false , затем запустите свой код, который вы хотите вызвать, один раз (оповещение, подписка .. и т.д.)
3 — измените «isExec» на true (isExec = true);
теперь, если состояние вашего приложения изменяет метод сборки, мы избегаем этого кода в статусе if
Комментарии:
1. Это другой способ, но похожий на didChangeDependencies. pub.dartlang.org/packages/after_layout запускает один после первого макета — что также должно быть реализовано во flutter по умолчанию.