使用Navigator.pushNamed导航时如何发送参数

Jos*_*aza 2 navigation dart flutter flutter-navigation

我需要将一些参数发送到命名路由。我想做类似的事情:

Navigator.pushNamed('/route/1');
Run Code Online (Sandbox Code Playgroud)

要么

Navigator.pushNamed('/route?param1=1');
Run Code Online (Sandbox Code Playgroud)

我不知道是否有办法做到这一点,我将MaterialApp与路由器配合使用。

guy*_*guy 6

第一种方法是我在应用程序中使用的方法。

Navigator.pushNamed('/route/1');
Run Code Online (Sandbox Code Playgroud)

不要忘记使用onGenerateRoute并传递值。我的应用程序示例:

routes: {
        '/': (BuildContext context) => AuthPage(),
        '/products': (BuildContext context) => ProductsPage(''),
        '/admin': (BuildContext context) =>
            ProductsAdminPage(_addProduct, _deleteProduct),
      },
      onGenerateRoute: (RouteSettings settings) {
        final List<String> pathElements = settings.name.split('/');
        if (pathElements[0] != '') {
          return null;
        }
        if (pathElements[1] == 'product') {
          return MaterialPageRoute<bool>(
            builder: (BuildContext context) => ProductPage(pathElements[2]),
          );
        }
        return null;
      },
      onUnknownRoute: (RouteSettings settings) {
        return MaterialPageRoute(
            builder: (BuildContext context) => ProductsPage('Error'));
      },
Run Code Online (Sandbox Code Playgroud)