2

フラッター Web アプリをデプロイしましたが、ユーザーが別の画面を参照しても、ブラウザー バーのパスが更新されません。

ここで体験できます: https://owleyes.codemagic.app/#/

次の方法を使用してナビゲートしています。

                    Navigator.push(
                      context,
                      MaterialPageRoute(builder: (context) => AboutPage()),
                    );

https://github.com/owleyesdev/owleyes/blob/master/lib/pages/home_page.dart#L24

4

1 に答える 1

1

これを実現するには、名前付きルートを使用する必要があります。名前付きルートを使用すると、フラッターに特定の文字列が与えられ、新しいルートに移動したときに表示されます。名前付きルートを使用する方法については、ここで十分に文書化されていますが、何をする必要があるかの基本を含めます。

MaterialAppウィジェット ツリーの一番上に既に があります。ここで可能にする必要があるルートを名前付きパラメーターで定義するだけで済みます。これは、キーが の後に URL に追加されるroutesタイプを受け入れます。Map<String, WidgetBuilder>StringString/#/

return MaterialApp(
  debugShowCheckedModeBanner: false,
  theme: ThemeData(
    brightness: Brightness.dark,
    primaryColorDark: Colors.black,
    fontFamily: "GoogleSansRegular",
  ),
  routes: {
    '/': (context) => HomePage(),
    '/aboutPage': (context) => AboutPage(),
  }
);

Stringキーを各ウィジェットの静的変数として定義することをお勧めします。HomePage.routeこのようにして、次の必要な変更に役立つ のようなものとしてアクセスできます。

の代わりに をNavigator.push使用する必要がありますNavigator.pushNamed。これは同じアクションを実行し、String代わりにパラメーターとしてルートを受け入れるだけです。

使用例:

Navigator.pushNamed(context, '/aboutPage');

これを使用すると、最終的に の URL になりますhttps://owleyes.codemagic.app/#/aboutPage

于 2020-07-22T00:41:35.627 に答える