flutter 中自定义路由事务错误

问题描述 投票:0回答:2

我试图为屏幕实现自定义动画,但遇到错误。

错误是:

没有为“RouteSettings”类型定义 getter“isInitialRoute”。

这是我的代码...

class MyCustomRoute<T> extends MaterialPageRoute<T> {
      MyCustomRoute({ 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);
      }
    }

如有帮助,我们将不胜感激!

谢谢你。

flutter dart flutter-animation
2个回答
25
投票

经过一番搜索,我找到了解决方案。

所以我想我会回答我自己的问题。

Flutter 更新了功能,我们只需要使用 settings.name 代替 settings.isInitialRoute

class MyCustomRoute<T> extends MaterialPageRoute<T> {
      MyCustomRoute({ WidgetBuilder builder, RouteSettings settings })
          : super(builder: builder, settings: settings);

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

2
投票

RouteSetting 中的 isInitialRoute 属性已被弃用。 在这里阅读更多内容

相反,你可以这样做:

MaterialApp(
  initialRouteName: ‘yourRouteName’,

或者:

onGenerateInitialRoutes: (String initialRouteName) {
    return <Route>[YourRoute()];
  }

请注意,您的

initialRoute
Navigator
中的第一条路线。它指的是
/
。所以,如果你愿意,你也可以这样做:
settings.name == '/'

© www.soinside.com 2019 - 2024. All rights reserved.