Navigator 2.0 不显示页面转换

时间:2021-03-11 19:04:45

标签: flutter dart flutter-animation

我正在使用 Flutter 的 Navigator 2.0,但是在导航到新页面时没有显示任何页面转换。只有在使用旧的导航器时才有简单的过渡

    class AppRouterDelegate extends RouterDelegate<CustomPage>
    with ChangeNotifier, PopNavigatorRouterDelegateMixin<CustomPage> {
  bool _onPopPage(Route _route, dynamic _result) {
    bool _res = _route.didPop(_result);
    if (_res) _pages.removeLast();
    return _res;
  }

  List<CustomPage> _pages = [];

  @override
  Widget build(BuildContext context) {
    print("rebuilt with pagestack " + _pages.toString());
    return Navigator(
      key: navigatorKey,
      pages: List.of(_pages),
      onPopPage: _onPopPage,
      // transitionDelegate: ,
    );
  }

  @override
  CustomPage? get currentConfiguration => _pages.last;

  @override
  Future<bool> popRoute() {
    return SynchronousFuture<bool>(true);
  }

  @override
  Future<void> setNewRoutePath(CustomPage _page) {
    _pages.add(_page);
    notifyListeners();
    return SynchronousFuture<void>(null);
  }

  void push(CustomPage _page) {
    _pages.add(_page);
    notifyListeners();
  }

  @override
  GlobalKey<NavigatorState> get navigatorKey => GlobalKey<NavigatorState>();
}

我正在通过这段代码使用 RouterDelegate(我用riverpod 注入它并不奇怪)

BuildContextX(context).read(appRouterDelegate).push(
                      CustomPage(
                        builder: (_, animation, ___) => FadeTransition(
                          opacity: animation,
                          child: Scaffold(
                            backgroundColor: Colors.blue,
                          ),
                        ),
                        pageName: '/some',
                        localKey: ValueKey('/some'),
                      ),
                    );
  

0 个答案:

没有答案