我正在try 使用主屏幕的Scaffold对象的Body参数中的inline if在加载屏幕和主应用程序屏幕之间导航,并使用以下代码:

body : data == null?
Center(
  child: CircularProgressIndicator(),
)
:(
data1 == null?
Center(
  child: CircularProgressIndicator(),
)
:Center(child: Text('Data imported successfully'),)
),

Note : the data1 is delayed with 10 sec from the data.

因此,我需要一个setState,这样当两个条件的值为False时,Data imported successfully文本出现在屏幕中央,我将在主屏幕的initState中导入数据和数据1,代码如下:

void initState() {
    // TODO: implement initState
    super.initState();
    createDatabase()
        .then((value){
          getDataFromDatabase().then((value){setState(() {});});
        });
    createDatabase1()
        .then((value){
          getDataFromDatabase1().then((value){setState(() {});});
    });
  }

代码有时能正常工作,有时不能

我想知道为什么会发生这种情况,我如何才能解决它?

非常感谢!

推荐答案

判断以下代码,以减少代码行并重建Flutter 页面

void initState() {
        // TODO: implement initState
        super.initState();
        Future.delayed(Duration.zero,(){
          _createDatabaseFunc();
        });
      }
    
      Future<void> _createDatabaseFunc() async {
        var firstDB = await createDatabase();
        var data = await getDataFromDatabase();
        var firstDB1 = await createDatabase1();
        var data1 = await getDataFromDatabase1();
        setState(() {}); // only single time refresh 
      }

Flutter相关问答推荐

如何在Flutter 屏幕中添加箭头形状

当仅点击一行时,所有行都被选中

Flutter 对齐:不适用于多行文字

FCM通知显示两次通知(&A)

从.gitignore中排除.fvm/fvm_config.json

尽管 onCollision 处理了我的角色还是从平台上掉了下来

在 Flutter 中使用条件语句设置 ImageProvider Object 类型的背景图像

仅在获取(读取)、Provider 时,Firestore 中的数据为空

Flutter 3.10 - 'window' 已弃用,不应使用

Flutter 判断 Uint8List 是否有效 Image

在 flutter 中获取最喜欢的文档

Flutter canvas 绘制不同 colored颜色 的原始点

如何使用 riverpod_annotation 创建非自动处置提供程序?

如何对齐卡片小部件中的图标按钮?

在 Dart 中使用隔离时访问外部范围内的变量

改变步进器的线条 colored颜色 Flutter

如何在 Flutter 中创建 Facebook 创建帖子屏幕?

在 Android 12+ 中,REST API 调用在 flutter 中非常慢,在 WiFi 中需要 10 秒,而在移动数据中不到一秒

Getx Flutter 在更新值时抛出空错误

函数中的变量在 Dart 中应该有什么关键字?