当我运行以下代码时,在用户登录时,AnimatedBackground()成功地进行了动画,页面从LoginScreen()更改为HomeScreen(),但是在过渡时没有任何动画。
我怀疑这与嵌套动画和不恰当的重建有关,但是使用keys修复后问题仍旧存在。
我怀疑这与嵌套动画和不恰当的重建有关,但是使用keys修复后问题仍旧存在。
class AuthenticationWrapper extends StatelessWidget {
@override
Widget build(BuildContext context) {
final User? firebaseuser = context.watch<User?>();
print("build run with user $firebaseuser");
return SafeArea(
child: AnimatedBackground(
key: Key("salt123value${firebaseuser == null}"),
animate: firebaseuser == null ? false : true,
child: AnimatedSwitcher(
key: Key("animatedswitcher"),
transitionBuilder: AnimatedSwitcher.defaultTransitionBuilder,
duration: const Duration(seconds: 4),
child: firebaseuser == null
? LoginScreen(
key: Key("login"),
)
: HomeScreen(
key: Key("home"),
)),
));
}
}
N.B. AnimatedBackground是一个自定义小部件,返回一个CustomPaint(child:child)或者一个包含在AnimatedBuilder中的CustomPaint。
这可能是因为AnimatedBckground (animate: bool)根据animate的值返回不同深度的小部件树。
firebaseuser!= null
而不是firebaseuser == null?false:true
。 - Nabeel Parkar