小编Mic*_*ele的帖子

Flutter:如何在 Riverpod 提供商中监听 GoRouter 的路线/位置变化?

我正在使用 go_router 和 Riverpod 开发 Flutter 应用程序,分别用于导航和状态管理。该应用程序有一个小部件,可以显示实时摄像头源,我想“关闭它”并在其他页面堆叠在其顶部时释放摄像头。

这是没有这样逻辑的GoRouter 代码示例。

GoRouter(
  routes: [
    GoRoute(
      path: '/',
      builder: (context, state) => CameraWidget(),
      routes: [
        GoRoute(
          path: 'page1',
          builder: (context, state) => Page1Screen(),
        ),
      ],
    ),
  ],
)
Run Code Online (Sandbox Code Playgroud)

我的第一次尝试是在 GoRoute 构建器中添加一些逻辑:

GoRouter(
  routes: [
    GoRoute(
      path: '/',
      builder: (context, state) {
        if (state.location == "/") {
          return CameraWidget();
        }
        return Center(child: Text("Camera not visible");
      },
      routes: [
        GoRoute(
          path: 'page1',
          builder: (context, state) => Page1Screen(),
        ),
      ],
    ),
  ],
)
Run Code Online (Sandbox Code Playgroud)

但这显然不起作用 …

flutter gorouter riverpod flutter-riverpod routemaster

4
推荐指数
1
解决办法
1万
查看次数