我试图为屏幕实现自定义动画,但遇到错误。
错误是:
没有为“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 更新了功能,我们只需要使用 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);
}
}
RouteSetting 中的 isInitialRoute 属性已被弃用。 在这里阅读更多内容。
相反,你可以这样做:
MaterialApp(
initialRouteName: ‘yourRouteName’,
或者:
onGenerateInitialRoutes: (String initialRouteName) {
return <Route>[YourRoute()];
}
请注意,您的
initialRoute
是Navigator
中的第一条路线。它指的是/
。所以,如果你愿意,你也可以这样做:settings.name == '/'
。