Метод Flutter run once с доступным контекстом?

#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 по умолчанию.