[英]Flutter go_router: how to use ShellRoute with an expanded child?
给定以下 go_router 配置:
GoRouter(
initialLocation: "/one",
routes: [
ShellRoute(
builder: (_, __, child) => Scaffold(body: Column(children: [const Text("Header"), child],)),
routes: [
GoRoute(
path: '/one',
builder: (_, __) => const Expanded(child: Text("one")),
),
],
),
],
)
由于以下错误,框架将无法呈现树: Assertion failed: ... hasSize
。 如果我理解正确,那是因为ShellRoute
将它的孩子包装到一个Navigator
中,这将对嵌套内容施加最大限制。
我如何构建一个嵌套导航,我在Column
中有一些固定元素作为 shell 的一部分,子路由应该垂直填充剩余的可用空间?
做这个:
...
ShellRoute(
builder: (_, __, child) => ScaffoldWithNavBar(child: child),
routes: [
...
],
),
...
带导航栏的脚手架
class ScaffoldWithNavBar extends StatelessWidget {
final Widget child;
const ScaffoldWithNavBar({super.key, required this.child});
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(child: child),
bottomNavigationBar: _buildBottomNavigationBar(),
);
}
Widget _buildBottomNavigationBar() {
...
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.