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

标签 firebase flutter dart state-management

当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/

相关文章:

android - 支持事务的 Firebase 查询

flutter - flutter 形状重叠屏幕宽度

listview - SingleChildScrollView里面不可能有ListView吗?

flutter - 没有为该类定义 Getter。我在这里做错了什么?

android - 如何在 Play 控制台中更新 Flutter 应用程序

ios - Swift:为用户搜索 Firebase 数据库

iOS:免费开发者帐户的 APN 身份验证 key

javascript - 谷歌云函数http触发foreach循环的问题

flutter - 如何在 flutter 中制作填字游戏类型的拼图?

flutter - 如何在 flutter 应用程序中添加对所有语言环境货币符号的支持