0

Web URL を使用して既知のルートに直接ルーティングする際に問題が発生した人はいますか? 現在の安定版(2.5.3)の非常に最小限のフラッターアプリでもこれを再現しました。簡単なルートの例を見てみましょう:

initialRoute: '/login',
routes: {
  '/login': (context) => LoginScreen(),
},
onGenerateRoute: (RouteSettings routeSettings) {
  if (routeSettings.name == LoginScreen.routeName) {
    return MaterialPageRoute(
      settings: routeSettings,
      builder: (context) => LoginScreen(),
    );
  }
},
onUnknownRoute: (RouteSettings routeSettings) {
  return MaterialPageRoute(
    settings: routeSettings,
    builder: (context) => Scaffold(
      body: Center(
        child: Text('404!'),
      ),
    ),
  );
},

アプリが読み込まれると、期待どおりに動作し、例外なくログイン画面に移動します。不明なルートを入れると、404 not found scaffold が表示されます。新しいタブを開いてまったく同じ URL を貼り付けると、つまり http://localhost:5000/#/login と表示されます。

Could not navigate to initial route.
The requested route name was: "/login"
There was no corresponding route in the app, and therefore the initial route specified will be ignored and "/" will be used instead.

これに関する問題は、既知のルートをヒットし、別のアプリの webview を介して URL パラメーターを渡そうとしているため、常にこの問題が発生することです。onUnknownRoute と onGenerateRoute のどちらも呼び出されず、ナビゲーションが「/」に戻るため、このイベントをキャプチャする方法はありますか。

私のflutter doctor -v出力:

[✓] Flutter (Channel stable, 2.5.3, on macOS 11.6 20G165 darwin-x64, locale en-US)
    • Flutter version 2.5.3 at /Users/asdf/development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 18116933e7 (2 weeks ago), 2021-10-15 10:46:35 -0700
    • Engine revision d3ea636dc5
    • Dart version 2.14.4

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/asdf/Library/Android/sdk
    • Platform android-31, build-tools 31.0.0
    • ANDROID_HOME = /Users/asdf/Library/Android/sdk
    • ANDROID_SDK_ROOT = /usr/local/share/android-sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 13.1, Build version 13A1030d
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.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 11.0.8+10-b944.6916264)

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

[✓] Connected device (1 available)
    • Chrome (web)       • chrome                               • web-javascript • Google Chrome 95.0.4638.69

• No issues found!
4

0 に答える 0