gpt4 book ai didi

firebase - 如何为提供者设置登录屏幕过渡的动画?

转载 作者:行者123 更新时间:2023-12-03 03:16:45 25 4
gpt4 key购买 nike

当Firebase身份状态更改为provider时,我已经设置了自动屏幕切换。

但是屏幕上没有动画。我尝试使用Navigator.of(context).pushReplacementNamed,但这会导致许多错误。

模型更改状态时如何为自动屏幕更改设置动画?
(我已经看过了,但没有教程涵盖此内容。所有内容都没有在屏幕变化时显示动画)。

感谢帮助!

class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
builder: (_) => UserRepository.instance(),
child: Consumer(
builder: (context, UserRepository user, _) {
switch (user.status) {
case Status.Uninitialized:
return Splash();
case Status.Unauthenticated:
case Status.Authenticating:
return LoginPage();
case Status.Authenticated:
return UserInfoPage(user: user.user);
}
},
),
);
}
}

最佳答案

这是我认为RémiRousselet的建议所涉及的代码示例。每当身份验证状态更改,在switch语句中设置当前屏幕以及Provider.of(...)使用AnimatedSwitcher从上一屏切换到当前屏幕时,FadeTransition调用都会触发重建。

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
var authenticationService = Provider.of<AuthenticationService>(context);

Widget _currentScreen;

switch (authenticationService.status) {
case AuthenticationStatus.authenticated:
_currentScreen = MainScreen();
break;
case AuthenticationStatus.uninitialized:
_currentScreen = SplashScreen();
break;
case AuthenticationStatus.authenticating:
_currentScreen = LoadingScreen();
break;
case AuthenticationStatus.unauthenticated:
default:
_currentScreen = SignInScreen();
}

return MaterialApp(
title: 'My App',
home: AnimatedSwitcher(
duration: Duration(milliseconds: 500),
child: _currentScreen,
),
);
}
}

关于firebase - 如何为提供者设置登录屏幕过渡的动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56891134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com