我正在尝试实现一个简单的BottomNavigationBar来导航动态生成的屏幕。
具有React.js背景,我想到了在屏幕周围有某种包装,其中包含BottomNavigationBar并根据当前路线将屏幕呈现为子级。但是,在定义MaterialApp小部件时,无法附加子级,以便存在BottomNavigationBar并以某种方式环绕onGenerateRoute的屏幕。我看到的唯一其他方法是将我的BottomNavigationBar作为Scaffold中的bottomNavigationBar属性传递到每个屏幕。但这似乎不是最佳选择。
这是我的路由器:
class Router {
static Route<dynamic> generateRoute(RouteSettings settings) {
final args = settings.arguments;
switch (settings.name) {
case '/':
return MaterialPageRoute(
builder: (BuildContext context) => Home(),
);
default:
return MaterialPageRoute(
builder: (BuildContext context) => Error(),
);
}
}
}
我传递给MaterialApp小部件的onGenerateRoute属性的路由器:
class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
initialRoute: '/',
onGenerateRoute: Router.generateRoute,
);
}
}
答案 0 :(得分:0)
您可能希望将CupertinoTabScaffold与CupertinoTabBar一起使用。显然,他们遵循Apple的设计理念,其中每个选项卡都有自己的导航器。然后,即使您从选项卡之一的“主”页面导航到新/子路线的新页面,选项卡栏也应保持放置状态。它们也可以在MaterialApp中使用,所以这不应该成为问题。
我自己正在为这个问题而苦苦挣扎,因为我正在将一些非常复杂的数据传递给某些生成的路由,并且出于设计目的,我使用了自定义的BottomAppBar,当我单击标签。如果这是您要克服的问题,那么对不起,我还没有答案。如果您要完成此操作,请稍候,如果发现,我将删除答案/更新到那时再回答!