Первый способ - это то, что я использую в своем приложении.
Navigator.pushNamed('/route/1');
Не забудьте использовать 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'));
},