Flutter:在等待Google登录完成时显示加载小部件

SK7

使用Google登录时,在我进入userInfoPath之前,屏幕变黑,然后再次显示登录页面,然后再移至userInfoPath。我正在尝试添加加载小部件,以便它可以很好地从Google登录名过渡到userInfoPath,但是我可以获取加载小部件,并且将其保留在其上而无需移至UserInfoScreen或根本无法获得它。有关如何解决此问题的帮助将非常有用。

登入画面

class LoginScreen extends StatefulWidget {
  @override
  _LoginScreenState createState() => _LoginScreenState();
}
class _LoginScreenState extends State<LoginScreen> {
  AuthService auth = AuthService();
  @override
  void initState() {
    super.initState();
    auth.getUser.then(
      (user) { 
        if (user != null) {
         Navigator.pushReplacementNamed(context, SharedStrings.userInfoPath);
        }
      },
    );
  }
  @override
  Widget build(BuildContext context) {
    return SafeArea(
          child: Scaffold(
        backgroundColor: white,
        body: Container(
          padding: Sizes2.edInsAll,
          decoration: const BoxDecoration(),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.center,
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: [
              Image.asset(Strings.imageLogo,
                width: Sizes2.imageWidth,
                height: Sizes2.imageHeight,
              ),
              Text(SharedStrings.planetRescue, style: appName, textAlign: TextAlign.center),
              Text(Strings.liveSustainablySlogan, style: greySubTxt, textAlign: TextAlign.center),
              LoginButton(
                text: Strings.loginWithGoogle,
                icon: FontAwesomeIcons.google,
                color: orangeGrey,
                loginMethod: auth.googleSignIn,
              ),
              Container(
                margin: Sizes1.onlyBot,
                child: FlatButton.icon(
                  padding: Sizes2.edInsAll,
                  icon: const Icon(Icons.email, color: Colors.white),
                  color: orangeGrey,
                  onPressed: () => changeScreen(context, AuthWidget()),
                  label: Expanded(
                    child: Text(Strings.loginWithEmail, style: formalBtnTextSml, textAlign: TextAlign.center),
                  ),
                ),
              ),
  
...

登录按钮

class LoginButton extends StatelessWidget {
  final Color color;
  final IconData icon;
  final String text;
  final Function loginMethod;

  const LoginButton({Key key, this.text, this.icon, this.color, this.loginMethod}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Container(
      margin: Sizes1.onlyBot,
      child: FlatButton.icon(
        padding: Sizes1.edgInAll,
        icon: Icon(icon, color: Colors.white),
        color: color,
        onPressed: () async {
          var user = await loginMethod();
          if (user != null) {
            Navigator.pushReplacementNamed(context, SharedStrings.userInfoPath);
          }
      ...

加载小部件

class Loading extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      color: white,
      child: Center(
        child: SpinKitChasingDots(
          color: deepOrange,
          size: Sizes2.loadSz,
        ),
      ),
    );
  }
}
艾纳姆本克

首先创建以下两种方法:

void showDialogue(BuildContext context){
  showDialog(
  context: context,
  builder: (BuildContext context) => Loading(),
); 
}

void hideProgressDialogue(BuildContext context) {
Navigator.of(context).pop(Loading());}

然后在中LoginButton,替换为:

onPressed: () async {
      var user = await loginMethod();
      if (user != null) {
        Navigator.pushReplacementNamed(context, SharedStrings.userInfoPath);
      }

带有:

    onPressed: () async {
        showDialogue(context);
          var user = await loginMethod();
          if (user != null) {
            hideProgressDialogue(context);
            Navigator.pushReplacementNamed(context, SharedStrings.userInfoPath);
          }

让我知道这是否对您有用:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在执行异步等待任务时,Flutter显示小部件

来自分类Dev

如何在flutter应用程序中通过加载小部件从显示黑屏时停止setState?

来自分类Dev

外部窗口小部件加载完成时执行JS命令

来自分类Dev

如何在Flutter中渲染小部件之前等待异步函数完成执行

来自分类Dev

ListView上方的Flutter显示小部件可在滚动时滑动

来自分类Dev

在等待过程完成时如何显示加载控件?

来自分类Dev

单击TextField小部件时重新构建Flutter小部件

来自分类Dev

在Android中加载小部件时出错

来自分类Dev

当孩子等待父母的设置状态完成时,如何在两个有状态小部件之间使用 FutureBuilder?

来自分类Dev

构建窗口小部件树时,Flutter AssetImage无法首次加载

来自分类Dev

在等待加载事件完成时使用 jquery 显示加载微调器

来自分类Dev

当前小部件完成加载后如何执行方法?

来自分类Dev

Flutter:当没有链接时,如何不显示占用空间的小部件?

来自分类Dev

FlareActor 在 Flutter 小部件中显示时获取/设置 .flr 动画的持续时间

来自分类Dev

等待时显示加载动画

来自分类Dev

使用Flutter,如何在单独的登录页面小部件中显示AuthService类中捕获的Firebase Auth错误消息?

来自分类Dev

等待AJAX请求完成时,如何在表格上显示“正在加载”图标?

来自分类Dev

如何从Flutter中的ByteData加载图像小部件

来自分类Dev

等待某些过程完成时显示Spinner

来自分类Dev

主屏幕小部件,listView显示“正在加载”

来自分类Dev

需要数据获取的Android小部件仅显示加载

来自分类Dev

在Flutter中使用可见性小部件切换小部件显示

来自分类Dev

Flutter更新小部件

来自分类Dev

Flutter Text小部件

来自分类Dev

触发小部件加载波动时的动画

来自分类Dev

重新加载小部件时未调用initState()方法

来自分类Dev

Flutter:-如何在屏幕上显示动态小部件?

来自分类Dev

Flutter自定义窗口小部件无法显示

来自分类Dev

文本未显示在Flutter的有状态小部件中

Related 相关文章

  1. 1

    在执行异步等待任务时,Flutter显示小部件

  2. 2

    如何在flutter应用程序中通过加载小部件从显示黑屏时停止setState?

  3. 3

    外部窗口小部件加载完成时执行JS命令

  4. 4

    如何在Flutter中渲染小部件之前等待异步函数完成执行

  5. 5

    ListView上方的Flutter显示小部件可在滚动时滑动

  6. 6

    在等待过程完成时如何显示加载控件?

  7. 7

    单击TextField小部件时重新构建Flutter小部件

  8. 8

    在Android中加载小部件时出错

  9. 9

    当孩子等待父母的设置状态完成时,如何在两个有状态小部件之间使用 FutureBuilder?

  10. 10

    构建窗口小部件树时,Flutter AssetImage无法首次加载

  11. 11

    在等待加载事件完成时使用 jquery 显示加载微调器

  12. 12

    当前小部件完成加载后如何执行方法?

  13. 13

    Flutter:当没有链接时,如何不显示占用空间的小部件?

  14. 14

    FlareActor 在 Flutter 小部件中显示时获取/设置 .flr 动画的持续时间

  15. 15

    等待时显示加载动画

  16. 16

    使用Flutter,如何在单独的登录页面小部件中显示AuthService类中捕获的Firebase Auth错误消息?

  17. 17

    等待AJAX请求完成时,如何在表格上显示“正在加载”图标?

  18. 18

    如何从Flutter中的ByteData加载图像小部件

  19. 19

    等待某些过程完成时显示Spinner

  20. 20

    主屏幕小部件,listView显示“正在加载”

  21. 21

    需要数据获取的Android小部件仅显示加载

  22. 22

    在Flutter中使用可见性小部件切换小部件显示

  23. 23

    Flutter更新小部件

  24. 24

    Flutter Text小部件

  25. 25

    触发小部件加载波动时的动画

  26. 26

    重新加载小部件时未调用initState()方法

  27. 27

    Flutter:-如何在屏幕上显示动态小部件?

  28. 28

    Flutter自定义窗口小部件无法显示

  29. 29

    文本未显示在Flutter的有状态小部件中

热门标签

归档