首页 > 解决方案 > 导航器堆栈不起作用

问题描述

我有三个屏幕。A、B 和 C。我使用以下代码推送 A、B 和 C。A 是应用程序的第一个屏幕。

class FadeInSlideOutRoute<T> extends MaterialPageRoute<T> {

  FadeInSlideOutRoute({WidgetBuilder builder, RouteSettings settings})
      : super(builder: builder, settings: settings);

  @override
  Widget buildTransitions(BuildContext context,
      Animation<double> animation,
      Animation<double> secondaryAnimation,
      Widget child) {
    if (settings.isInitialRoute)
      return child;
    // Fades between routes. (If you don't want any animation,
    // just return child.)
    return new FadeTransition(opacity: animation, child: child);
  }
}

在构建方法中声明屏幕。

@override
  Widget build(BuildContext context) {
    return new MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      onGenerateRoute: (RouteSettings settings) {
        switch (settings.name) {
          case '/B':
            return new FadeInSlideOutRoute(
              builder: (_) => new LoginScreen(),
              settings: settings,
            );
          case '/C':
            return new FadeInSlideOutRoute(
              builder: (_) => new ForgotPasswordScreen(),
              settings: settings,
            );
        }
        assert(false);
      },
      home: _LandingScreen(),
    );
  }

现在,我正在调用以下方法来推送新屏幕。

  Navigator.pushNamed(context, '/B');

在那之后

  Navigator.pushNamed(context, '/C');

问题

当我从屏幕C按下 Android 设备时,它直接来到屏幕A。但它应该在屏幕B上。请帮助各位。

标签: dartflutternavigator

解决方案


推荐阅读