颤动自定义页面路由和 iOS 向后滑动手势



在我的应用程序中,我扩展了MaterialPageRoute以禁用页面过渡动画。

class NoAnimationMaterialPageRoute<T> extends MaterialPageRoute<T> {
NoAnimationMaterialPageRoute({
@required WidgetBuilder builder,
RouteSettings settings,
bool maintainState = true,
bool fullscreenDialog = false,
}) : super(
builder: builder,
maintainState: maintainState,
settings: settings,
fullscreenDialog: fullscreenDialog,
);
@override
Widget buildTransitions(BuildContext context, Animation<double> animation,
Animation<double> secondaryAnimation, Widget child) {
return child;
}
}

这按预期工作,但是,它破坏了iOS向后滑动手势。如何重新启用它?我不在乎制作任何动画,我只想滑动以恢复工作。

如果你不需要任何动画,你可以这样做:

class NoAnimationMaterialPageRoute<T> extends MaterialPageRoute<T> {
NoAnimationMaterialPageRoute({
@required WidgetBuilder builder,
RouteSettings settings,
bool maintainState = true,
bool fullscreenDialog = false,
}) : super(
builder: builder,
maintainState: maintainState,
settings: settings,
fullscreenDialog: fullscreenDialog,
);
@override
Widget buildTransitions(BuildContext context, Animation<double> animation,
Animation<double> secondaryAnimation, Widget child) {
var animation1 = Tween(begin: 1.0, end: 1.0).animate(animation);
final theme = Theme.of(context).pageTransitionsTheme;
return theme.buildTransitions<T>(
this,
context,
animation1,
secondaryAnimation,
child,
);
}
}

但它只给你向后滑动功能,没有可见的效果,你想要有手势的视觉效果,你需要制作自己的库比蒂诺页面过渡版本

最新更新