flutter / flutter

Flutter makes it easy and fast to build beautiful apps for mobile and beyond
https://flutter.dev
BSD 3-Clause "New" or "Revised" License
162.17k stars 26.65k forks source link

[go_router_builder] go() get null on extra previous route #147413

Open CaoGiaHieu-dev opened 2 weeks ago

CaoGiaHieu-dev commented 2 weeks ago

Steps to reproduce

Create router follow this

@TypedStatefulShellRoute<DashboardRoute>(
  branches: [
    TypedStatefulShellBranch(
      routes: [
        TypedGoRoute<HomeRoute>(
          path: Routes.home,
          routes: [
            TypedGoRoute<PostDetailRoute>(
              path: Routes.postDetail,
            )
          ],
        ),
      ],
    ),
    TypedStatefulShellBranch(
      routes: [
        TypedGoRoute<ApplyRoute>(
          path: Routes.apply,
        ),
      ],
    ),
    TypedStatefulShellBranch(
      routes: [
        TypedGoRoute<ChatRoute>(
          path: Routes.chat,
        ),
      ],
    ),
    TypedStatefulShellBranch(
      routes: [
        TypedGoRoute<ProfileRoute>(
          path: Routes.profile,
          routes: [
            TypedGoRoute<SettingRoute>(
              path: Routes.setting,
              routes: [
                TypedGoRoute<NoticeRoute>(
                  path: Routes.notice,
                ),
                TypedGoRoute<AlarmRoute>(
                  path: Routes.alarmSetting,
                ),
                TypedGoRoute<TermOfConditionRoute>(
                  path: Routes.termOfCondition,
                ),
                TypedGoRoute<PrivacyRoute>(
                  path: Routes.privacyPolicy,
                ),
                TypedGoRoute<LanguageRoute>(
                  path: Routes.language,
                ),
              ],
            ),
            TypedGoRoute<AppliedPostDetailRoute>(
              path: Routes.appliedPostDetail,
            ),
          ],
        ),
      ],
    ),
  ],
)

Navigate to Routes.postDetail with JobsExtra $extra and using go to Routes.chat by const ChatRoute().go(context);

Expected results

Navigate success

Actual results

got error type 'Null' is not a subtype of type 'JobsExtra' in type cast

Code sample

Code sample ```dart // create router @TypedStatefulShellRoute( branches: [ TypedStatefulShellBranch( routes: [ TypedGoRoute( path: Routes.home, routes: [ TypedGoRoute( path: Routes.postDetail, ) ], ), ], ), TypedStatefulShellBranch( routes: [ TypedGoRoute( path: Routes.apply, ), ], ), TypedStatefulShellBranch( routes: [ TypedGoRoute( path: Routes.chat, ), ], ), TypedStatefulShellBranch( routes: [ TypedGoRoute( path: Routes.profile, routes: [ TypedGoRoute( path: Routes.setting, routes: [ TypedGoRoute( path: Routes.notice, ), TypedGoRoute( path: Routes.alarmSetting, ), TypedGoRoute( path: Routes.termOfCondition, ), TypedGoRoute( path: Routes.privacyPolicy, ), TypedGoRoute( path: Routes.language, ), ], ), TypedGoRoute( path: Routes.appliedPostDetail, ), ], ), ], ), ], ) ``` Navigate to PostDetailRoute with $extra then call const ChatRoute().go(context);

Screenshots or Video

Screenshots / Video demonstration [Upload media here]

Logs

Logs ```console #4 GoRouterDelegate._callOnExitStartsAt.handleOnExitResult (package:go_router/src/delegate.dart:275:16) delegate.dart:275 #5 GoRouterDelegate._callOnExitStartsAt (package:go_router/src/delegate.dart:290:14) delegate.dart:290 #6 GoRouterDelegate.setNewRoutePath (package:go_router/src/delegate.dart:232:16) delegate.dart:232 #7 _RouterState._processParsedRouteInformation. (package:flutter/src/widgets/router.dart:758:34) router.dart:758 #8 SynchronousFuture.then (package:flutter/src/foundation/synchronous_future.dart:43:39) synchronous_future.dart:43 #9 _RouterState._processRouteInformation (package:flutter/src/widgets/router.dart:750:8) router.dart:750 #10 _RouterState._handleRouteInformationProviderNotification (package:flutter/src/widgets/router.dart:767:5) router.dart:767 #11 ChangeNotifier.notifyListeners (package:flutter/src/foundation/change_notifier.dart:433:24) change_notifier.dart:433 #12 GoRouteInformationProvider.notifyListeners (package:go_router/src/information_provider.dart:134:11) information_provider.dart:134 #13 GoRouteInformationProvider._setValue (package:go_router/src/information_provider.dart:144:7) information_provider.dart:144 #14 GoRouteInformationProvider.go (package:go_router/src/information_provider.dart:166:5) information_provider.dart:166 #15 GoRouter.go (package:go_router/src/router.dart:340:30) router.dart:340 #16 GoRouterHelper.go (package:go_router/src/misc/extensions.dart:25:25) extensions.dart:25 #17 $ChatRouteExtension.go (package:sayyo/router/app_routes.g.dart:195:44) app_routes.g.dart:195 #18 ChatWidget.build. (package:sayyo/screens/applicants/user_applicant_screen.dart:59:27) user_applicant_screen.dart:59 #19 _InkResponseState.handleTap (package:flutter/src/material/ink_well.dart:1183:21) ink_well.dart:1183 #20 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:315:24) recognizer.dart:315 #21 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:652:11) tap.dart:652 #22 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:309:5) tap.dart:309 #23 BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:279:7) tap.dart:279 #24 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:167:27) arena.dart:167 #25 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:499:20) binding.dart:499 #26 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:475:22) binding.dart:475 #27 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:430:11) binding.dart:430 #28 GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:420:7) binding.dart:420 #29 GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:383:5) binding.dart:383 #30 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:330:7) binding.dart:330 #31 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:299:9) binding.dart:299 #35 _invoke1 (dart:ui/hooks.dart:330:10) hooks.dart:330 #36 PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:429:7) platform_dispatcher.dart:429 #37 _dispatchPointerDataPacket (dart:ui/hooks.dart:262:31) hooks.dart:262 (elided 3 frames from dart:async) ════════════════════════════════════════════════════════════════════════════════ ```

Flutter Doctor output

Doctor output ```console flutter doctor -v [✓] Flutter (Channel stable, 3.19.6, on macOS 14.4.1 23E224 darwin-x64, locale vi) • Flutter version 3.19.6 on channel stable at /Users/caogiahieu/flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision 54e66469a9 (9 days ago), 2024-04-17 13:08:03 -0700 • Engine revision c4cd48e186 • Dart version 3.3.4 • DevTools version 2.31.1 [✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0) • Android SDK at /Users/caogiahieu/Library/Android/sdk • Platform android-34, build-tools 31.0.0 • ANDROID_HOME = /Users/caogiahieu/Library/Android/sdk • ANDROID_SDK_ROOT = /Users/caogiahieu/Library/Android/sdk • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 17.0.9+0-17.0.9b1087.7-11185874) • All Android licenses accepted. [✓] Xcode - develop for iOS and macOS (Xcode 15.3) • Xcode at /Applications/Xcode.app/Contents/Developer • Build 15E204a • CocoaPods version 1.15.2 [✓] Android Studio (version 2023.2) • Android Studio at /Applications/Android Studio.app/Contents • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 17.0.9+0-17.0.9b1087.7-11185874) [✓] VS Code (version 1.88.1) • VS Code at /Users/caogiahieu/Applications/Visual Studio Code.app/Contents • Flutter extension version 3.86.0 [✓] Connected device (1 available) • iPhone của Cao Gia Hieu (mobile) • e3010bcca1500cf8a43f8baba42c0d712114c722 • ios • iOS 16.7.7 20H330 [✓] Network resources • All expected network resources are available. • No issues found! ```
CaoGiaHieu-dev commented 2 weeks ago

it work fine if i use

context.pop();
        WidgetsBinding.instance.endOfFrame.whenComplete(() {
          context.pop();
          WidgetsBinding.instance.endOfFrame.whenComplete(() {
            const ChatRoute().go(context);
          });
        });
darshankawar commented 2 weeks ago

Thanks for the report. I was able to replicate the reported behavior / exception.

stable, master flutter doctor -v ``` [!] Flutter (Channel stable, 3.19.6, on macOS 12.2.1 21D62 darwin-x64, locale en-GB) • Flutter version 3.19.6 on channel stable at /Users/dhs/documents/fluttersdk/flutter ! Warning: `flutter` on your path resolves to /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter. Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path. ! Warning: `dart` on your path resolves to /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter. Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path. • Upstream repository https://github.com/flutter/flutter.git • Framework revision 54e66469a9 (6 days ago), 2024-04-17 13:08:03 -0700 • Engine revision c4cd48e186 • Dart version 3.3.4 • DevTools version 2.31.1 • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades. [!] Xcode - develop for iOS and macOS (Xcode 12.3) • Xcode at /Applications/Xcode.app/Contents/Developer ! Flutter recommends a minimum Xcode version of 13. Download the latest version or update via the Mac App Store. • CocoaPods version 1.11.2 [✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome [✓] VS Code (version 1.62.0) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension version 3.21.0 [✓] Connected device (5 available) • SM G975F (mobile) • RZ8M802WY0X • android-arm64 • Android 11 (API 30) • Darshan's iphone (mobile) • 21150b119064aecc249dfcfe05e259197461ce23 • ios • iOS 14.4.1 18D61 • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729 • ios • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator) • macOS (desktop) • macos • darwin-x64 • Mac OS X 10.15.4 19E2269 darwin-x64 • Chrome (web) • chrome • web-javascript • Google Chrome 98.0.4758.80 [✓] HTTP Host Availability • All required HTTP hosts are available ! Doctor found issues in 1 category. [!] Flutter (Channel master, 3.22.0-18.0.pre.53, on macOS 12.2.1 21D62 darwin-x64, locale en-GB) • Flutter version 3.22.0-18.0.pre.53 on channel master at /Users/dhs/documents/fluttersdk/flutter ! Warning: `flutter` on your path resolves to /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter. Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path. ! Warning: `dart` on your path resolves to /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter. Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path. • Upstream repository https://github.com/flutter/flutter.git • Framework revision 098e7e7ff3 (4 hours ago), 2024-04-29 01:25:19 +0000 • Engine revision 752b146df7 • Dart version 3.5.0 (build 3.5.0-109.0.dev) • DevTools version 2.35.0-dev.16 • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades. [!] Android toolchain - develop for Android devices (Android SDK version 30.0.3) • Android SDK at /Users/dhs/Library/Android/sdk ✗ cmdline-tools component is missing Run `path/to/sdkmanager --install "cmdline-tools;latest"` See https://developer.android.com/studio/command-line for more details. ✗ Android license status unknown. Run `flutter doctor --android-licenses` to accept the SDK licenses. See https://flutter.dev/docs/get-started/install/macos#android-setup for more details. [✓] Xcode - develop for iOS and macOS (Xcode 13.2.1) • Xcode at /Applications/Xcode.app/Contents/Developer • Build 13C100 • CocoaPods version 1.11.2 [✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome [✓] IntelliJ IDEA Ultimate Edition (version 2021.3.2) • IntelliJ at /Applications/IntelliJ IDEA.app • Flutter plugin version 65.1.4 • Dart plugin version 213.7228 [✓] VS Code (version 1.62.0) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension version 3.29.0 [✓] Connected device (3 available) • Darshan's iphone (mobile) • 21150b119064aecc249dfcfe05e259197461ce23 • ios • iOS 15.3.1 19D52 • macOS (desktop) • macos • darwin-x64 • macOS 12.2.1 21D62 darwin-x64 • Chrome (web) • chrome • web-javascript • Google Chrome 109.0.5414.119 [✓] Network resources • All expected network resources are available. ! Doctor found issues in 1 category. [!] Xcode - develop for iOS and macOS (Xcode 12.3) • Xcode at /Applications/Xcode.app/Contents/Developer ! Flutter recommends a minimum Xcode version of 13. Download the latest version or update via the Mac App Store. • CocoaPods version 1.11.2 [✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome [✓] VS Code (version 1.62.0) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension version 3.21.0 [✓] Connected device (5 available) • SM G975F (mobile) • RZ8M802WY0X • android-arm64 • Android 11 (API 30) • Darshan's iphone (mobile) • 21150b119064aecc249dfcfe05e259197461ce23 • ios • iOS 14.4.1 18D61 • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729 • ios • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator) • macOS (desktop) • macos • darwin-x64 • Mac OS X 10.15.4 19E2269 darwin-x64 • Chrome (web) • chrome • web-javascript • Google Chrome 98.0.4758.80 [✓] HTTP Host Availability • All required HTTP hosts are available ! Doctor found issues in 1 category. ```
CaoGiaHieu-dev commented 1 week ago

Any update one this issue ?