Перезагрузка приложения на Navigator.pu sh с использованием AuthenticationBloc - PullRequest
0 голосов
/ 25 марта 2020

Я следовал этому руководству по аутентификации, используя блоки: https://bloclibrary.dev/# / flutterlogintutorial , и все работало отлично. За исключением того, что я вынужден изменить в på main.dart просто возврат страницы, которую я хочу, на go, если я успешно войду в систему, чтобы перейти на страницу виджета со следующим:

WidgetsBinding.instance.addPostFrameCallback((_) {
    print("Authenticated");
    Navigator.of(context).push(
        MaterialPageRoute(
             builder: (context) => TodaysPage(),
         ),
     );
});
// return TodaysPage();

Я сделал это, потому что приложение не изменило представление на представление TodaysPage после входа в систему. Только после «обновления» симулятора из средства отладки кода VS. Итак, я знаю, что состояния blo c меняются нормально.

И это решение отлично работало в течение месяца, давай или бери. И я часто использую этот способ навигации в своем приложении. Сначала я использовал Navigator.pushNamed(...), но затем контекст блоков аутентификации не переносился, поэтому я не мог выйти, если изменил маршруты после входа в систему. Однако сейчас это не моя проблема.

Когда я начал до моего симулятора сегодня и запуска приложения, приложение вело себя очень странно. Вот что происходит, когда я вхожу в систему (извините за большое изображение):

Skärminspelning-2020-03-24-kl -16 48 47

Мне кажется, что навигатор толкает снова и снова.

Мой код работает нормально (за исключением того, что мне приходится обновлять sh каждый раз, когда я вхожу в систему), если я go с оператором return вместо Navigator.of(context).push.....

Если я смотрю на консоль отладки, я вижу это :

image

И вот код для обработки состояния аутентификации:

if (authState is AuthenticationAuthenticated) {
    print("Authenticated");
    WidgetsBinding.instance.addPostFrameCallback((_) {
        Navigator.of(context).push(
            MaterialPageRoute(
                builder: (context) => TodaysPage(),
            ),
        );
    });
    // return TodaysPage();
}
if (authState is AuthenticationUnauthenticated) {
     print("LoginPage loading");
     return LoginPage(userRepository: userRepository);
}
if (authState is AuthenticationLoading) {
     return CircularProgressIndicator();
}

print("SplashPage");
return SplashPage();

Я пробовал другие способы использования Navigator, но все они дать тот же результат ..

Эта ошибка очень расстраивает, так как она работала на прошлой неделе, когда я работал над приложением .. И я почти закончил с этим и собирался показать его своему клиенту ..

flutter doctor -v дает это:

[✓] Flutter (Channel stable, v1.12.13+hotfix.8, on Mac OS X 10.15.3 19D76, locale sv-SE)
    • Flutter version 1.12.13+hotfix.8 at /Users/andreas/Library/flutter
    • Framework revision 0b8abb4724 (6 weeks ago), 2020-02-11 11:44:36 -0800
    • Engine revision e1e6ced81d
    • Dart version 2.7.0


[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /Users/andreas/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-29, build-tools 29.0.2
    • ANDROID_HOME = /Users/andreas/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.3.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.3.1, Build version 11C504
    • CocoaPods version 1.9.0

[✓] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 42.1.1
    • Dart plugin version 191.8593
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

[✓] IntelliJ IDEA Ultimate Edition (version 2019.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 43.0.3
    • Dart plugin version 193.6015.53

[✓] VS Code (version 1.43.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.8.1

[✓] Connected device (1 available)
    • iPhone 11 Pro Max • 84A08DAE-713B-4A10-94C7-51CCCCF3FF1C • ios •
      com.apple.CoreSimulator.SimRuntime.iOS-13-3 (simulator)

• No issues found!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...