Flutter: notifyListeners не работает ни на одной странице, кроме домашней страницыAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Flutter: notifyListeners не работает ни на одной странице, кроме домашней страницы

Сообщение Anonymous »


Мой main.dart вызывает wrapper.dart (ниже). В зависимости от глобальной переменной loggedIn отображается либо страница форм, либо страница входа.

На странице «Формы» пользователь может выбрать другую страницу для перехода. Если я перейду на страницу «Части проблем» и изменю loggedIn на false, приложение не вернется на страницу входа в систему. Однако если я изменю loggedIn на false на странице «Формы», приложение корректно вернется на страницу входа в систему. Почему это работает только на экране Форм, а не на другом экране?

Примечание. Я не хочу перегружать этот вопрос слишком большим количеством кода, поэтому добавил только минимум. Если вы считаете, что чего-то не хватает, спросите об этом, и я могу либо ответить, либо добавить это к вопросу.

wrapper.dart:

класс Wrapper расширяет StatefulWidget { const Wrapper({super.key}); @переопределить State createState() => _WrapperState(); } класс _WrapperState расширяет State { @переопределить недействительный initState() { супер.initState(); ///Сначала запустите это инициализировать(); } @переопределить располагать() { супер.dispose(); ///Запускаем это последним } void инициализировать() асинхронный { окончательный globalsOneTimeRead = context.read(); ожидайте globalsOneTimeRead.localDBInit(); } @переопределить Сборка виджета (контекст BuildContext) { return Consumer(builder: (context, value, child) { если (value.loggedIn == true) { вернуть константные формы(); } еще { вернуть константу входа(); } }); } } Страница «Формы»:

//... вернуть GestureDetector( onTap: () { Навигатор.push( контекст, MaterialPageRoute(builder: (context) => const IssueParts()), ); }, ребенок: Карточка( дочерний элемент: ListTile( заголовок: Text(formsList[index]['Form'], стиль: const TextStyle(fontSize: 21),), ), ), ); //... Страница с деталями проблемы:
//... ElevatedButton( onPressed: () асинхронный { ожидайте globals.logout(); //устанавливает loggedIn = false и вызывает notifyListeners(); }, дочерний элемент: const Text('ВЫХОД'), ), //...
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»