代码之家  ›  专栏  ›  技术社区  ›  mirkancal

从动画中使用OpenContainer时,如何更改go_router的位置?

  •  0
  • mirkancal  · 技术社区  · 3 年前

    我正试图打开一个页面 OpenContainer ,并通过 RouteSettings 带有名称。

    有没有办法从go_router包更新router.location?

    这就是我使用OpenContainer的方式,OpenBuilder会返回我传递的页面。

    class _OpenContainerWrapper extends StatelessWidget {
      const _OpenContainerWrapper({
        required this.closedBuilder,
        required this.transitionType,
        required this.onClosed,
        required this.page,
        this.routeSettings,
        this.borderRadius = 4,
      });
    
      final CloseContainerBuilder closedBuilder;
      final ContainerTransitionType transitionType;
      final ClosedCallback<bool?> onClosed;
      final Widget page;
      final RouteSettings? routeSettings;
      final double borderRadius;
    
      @override
      Widget build(BuildContext context) {
        return OpenContainer<bool>(
          closedElevation: 0,
          closedColor: Colors.transparent,
          middleColor: Colors.transparent,
          openColor: Colors.transparent,
          routeSettings: routeSettings,
          closedShape: RoundedRectangleBorder(
            borderRadius: BorderRadius.all(
              Radius.circular(borderRadius),
            ),
          ),
          transitionType: transitionType,
          openBuilder: (BuildContext context, VoidCallback _) {
            return page;
          },
          onClosed: onClosed,
          tappable: false,
          closedBuilder: closedBuilder,
        );
      }
    }
    

    这就是我如何使用包装器作为打开我传递的页面的按钮。

    return _OpenContainerWrapper(
          routeSettings: const RouteSettings(
            name: 'categories',
          ),
          page: const CategoryPage(),
          transitionType: ContainerTransitionType.fade,
          onClosed: (_) {},
          closedBuilder: (_, func) {
            return WidgetWithBackground(
              onTap: func,
              backgroundColor: textColor.withOpacity(
                0.25,
              ),
    // More UI Code here relevant to the button.
    

    这可能是相关的: https://github.com/flutter/flutter/issues/51399

    0 回复  |  直到 3 年前