gpt4 book ai didi

dart - 加载应用程序时,如何禁止 RegistrationPage 短暂出现/闪烁?

转载 作者:IT王子 更新时间:2023-10-29 06:57:38 24 4
gpt4 key购买 nike

我有一个应用程序,如果用户已登录,我会在一开始就在 RootPage 上进行验证。每次应用程序启动时都会执行此操作。

如果他已登录 -> 显示 StartPage如果没有登录 -> 显示注册页面

现在,当应用程序加载时,RegistrationPage 会短暂闪烁(我猜您可以在他验证登录状态时看到它几毫秒)。我不想要那个。

如何禁止注册页面的短出现?

根页面

import 'package:first_app/start_screen.dart';
import 'package:first_app/user_auth/registration_start_screen.dart';
import 'package:flutter/material.dart';
import 'package:first_app/user_auth/auth.dart';

class RootPage extends StatefulWidget {
RootPage({this.auth, this.completed});

final BaseAuth auth;
final bool completed;

@override
State createState() => new RootPageState();
}

enum AuthStatus { notSignedIn, signedIn }

class RootPageState extends State<RootPage> {
AuthStatus authStatus = AuthStatus.notSignedIn;

@override
void initState() {
super.initState();
signedIn();

widget.auth.currentUser().then((userId) {
//comment this setState to show login/registration screen
setState(() {
authStatus =
userId == null ? AuthStatus.notSignedIn : AuthStatus.signedIn;
print(userId);
});
}).catchError((onError) {
authStatus = AuthStatus.notSignedIn;
});
}

void signedIn() {
if (widget.completed)
setState(() {
authStatus = AuthStatus.signedIn;
});
}

@override
Widget build(BuildContext context) {
switch (authStatus) {
case AuthStatus.notSignedIn:
return RegistrationStartScreen(auth: widget.auth);

case AuthStatus.signedIn:
return StartScreen();
}

return new RegistrationStartScreen(auth: widget.auth);
}
}

最佳答案

我能够按如下方式发布它。要知道,如果 authStatus 仍在加载,则必须允许空值,因此将 AuthStatus authStatus = AuthStatus.notSignedIn; 更改为 AuthStatus authStatus

如果值为 null,则有一个空白容器作为后备:

 Widget build(BuildContext context) {
if (authStatus != null) {
switch (authStatus) {
case AuthStatus.notSignedIn:
return RegistrationStartScreen(auth: widget.auth);

case AuthStatus.signedIn:
return StartScreen();
}

return RegistrationStartScreen(auth: widget.auth);
} else {
return Container();
}
}

关于dart - 加载应用程序时,如何禁止 RegistrationPage 短暂出现/闪烁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55448235/

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