flutter导航替换保持旧页面直到动画完成



我使用navigator.push在按下事件时从oldPage((转到NewPage((:

Navigator.of(context).push(
PageRouteBuilder(
opaque: false,
pageBuilder: (context, animation, _) {
return NewPage();
}),
);

NewPage代码:(也是青少年动画(

class NewPage extends StatefulWidget {
@override
_NewPageState createState() => _NewPageState();
}
class _NewPageState extends State<NewPage> {
Widget build(BuildContext context) {
return TweenAnimationBuilder(
tween: Tween(begin: 0.0, end: 1.0),
duration: Duration(milliseconds: 1500),
child: Scaffold(...),
builder: (context, value, child) {
return  ShaderMask(...) }

它运行良好。动画将旧页面保留在背景中,而新页面将接管。然而,有时我需要使用pushReplacement来摆脱旧页面。当我使用pushReplacement时,旧页面会立即被删除,并且在动画过程中看不到。如何才能在动画完成后删除旧页面?

我应该让它通过推送,然后在NewPage((的initState((中手动删除旧的吗?

您需要使用自己的PageRouteBuilder来制作此类动画。以下文章介绍了它的用法:https://flutter.dev/docs/cookbook/animation/page-route-animation

最新更新