繁体   English   中英

Flutter go_router:如何将 ShellRoute 与扩展的孩子一起使用?

[英]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() {
    ... 
  }
}

参见ShellRoute 类

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM