gpt4 book ai didi

firebase - UI 卡在闪屏中

转载 作者:行者123 更新时间:2023-12-05 04:35:54 27 4
gpt4 key购买 nike

我正在为我的应用程序设计一个闪屏...我想显示我的闪屏 3 秒,我在 Future.delayed 函数中有一个条件,我在其中检查用户是否登录如果他已登录,那么我想导航到 MainPage,否则我想导航到 LoginPage。但是我的 UI 卡在启动画面中,我的 Future.delayed 函数没有编译。

class Splash_Screen extends StatefulWidget {

@override
_Splash_ScreenState createState() => _Splash_ScreenState();


@override
void initState() {
Future.delayed(Duration(seconds: 3), () {
return Obx(() {
return Get
.find<FirebaseController>()
.user != null ? MainPage() : LoginPage();
});
});
}
}

class _Splash_ScreenState extends State<Splash_Screen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: PreferredSize(
preferredSize: Size(0, 0),
child: AppBar(
backgroundColor: AppColors.colorPrimary,
elevation: 0,
),
),
body: Container(
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [
AppColors.colorAccent,
AppColors.colorPrimary,
],
begin: const FractionalOffset(0.0, 1.0),
end: const FractionalOffset(1.0, 0.0),
stops: [0.0, 1.0],
tileMode: TileMode.clamp),
),
child: Center(
child: SizedBox(
width: 120,
height: 120,
child: Image.asset(
'assets/images/s_book_splash_logo.png',
fit: BoxFit.contain,
),
),
),
),
);
}
}

请注意,initState() 函数仅在有状态小部件中可用,这就是我使用此有状态小部件的原因,我不知道在有状态小部件中调用 Obx() 方法是否正确。

最佳答案

你可以尝试用这个替换你的代码

splash_screen.dart

class SplashScreen extends StatelessWidget {
const SplashScreen({Key? key}) : super(key: key);

SplashController con = Get.put(SplashController());

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: PreferredSize(
preferredSize: Size(0, 0),
child: AppBar(
backgroundColor: AppColors.colorPrimary,
elevation: 0,
),
),
body: Container(
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [
AppColors.colorAccent,
AppColors.colorPrimary,
],
begin: const FractionalOffset(0.0, 1.0),
end: const FractionalOffset(1.0, 0.0),
stops: [0.0, 1.0],
tileMode: TileMode.clamp),
),
child: Center(
child: SizedBox(
width: 120,
height: 120,
child: Image.asset(
'assets/images/s_book_splash_logo.png',
fit: BoxFit.contain,
),
),
),
),
);
}
}

splash_controller.dart

-> 在这里我检查了可用的 token 然后导航到 MainPage() 否则 LoginPage()-> 你需要检查你的条件它会工作

class SplashController extends GetxController {

void _checkIfIsLogged() async {
Future.delayed(Duration(seconds: 3)).then((val) {
LocalStorage.token.toString() != "null" && LocalStorage.token != ""
? MainPage()
: LoginPage;
});
}

@override
void onInit() {
// TODO: implement onInit
_checkIfIsLogged();
super.onInit();
}
}

关于firebase - UI 卡在闪屏中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70936299/

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