【问题标题】:Flutter Hive Box not found error on first run, but it works fine after I reload the appFlutter Hive Box 在第一次运行时未发现错误,但在我重新加载应用程序后它工作正常
【发布时间】:2022-07-24 18:38:05
【问题描述】:

我有两个蜂巢盒,如下所示。当我第一次构建应用程序时,我总是遇到这个错误

找不到盒子。你忘记调用 Hive.openBox() 了吗?

但是,如果我重新加载应用程序,它就可以正常工作。 这是我的 ma​​in func 中的代码,我在其中打开 hive 框。 我想知道是什么导致了这个错误。我不希望我的用户在第一次安装应用后重新启动它。

void main() async {
      WidgetsFlutterBinding.ensureInitialized();
    
      await Hive.initFlutter();
      await Hive.openBox("User");
      await Hive.openBox("dateData");
    
      runApp(const SplashPage());
    }

【问题讨论】:

  • 我在重新启动设备时遇到同样的问题,它会抛出异常并且不运行我的应用程序
  • 我不知道这是否能解决您的问题,但我总是将我的 Hive 初始化以及在加载我的应用程序之前需要执行的所有其他异步任务放在 FutureBuilder 中.

标签: flutter persistence flutter-hive


【解决方案1】:

FutureBuilder 会为你创造奇迹,

为什么使用 FutureBuilder for Hive 更好?

当我们初始化 Hive 时,它​​会从内存中加载所有数据,并且可能需要一些时间,在此之前我们必须向用户显示某种动画/加载器,否则您的应用看起来就像是冻结一样。

示例:

Scaffold(
      body: FutureBuilder(
        future: Hive.openBox('box_name'),
        builder: (BuildContext context, AsyncSnapshot snapshot) {
          if (snapshot.connectionState == ConnectionState.done) {
            if (snapshot.hasError) {
              return Center(
                  child: Text(snapshot.error.toString()),
              );
            } else
              return Page1();
          } else {
            return Center(
                child: CircularProgressIndicator(),
            );
          }
        },
      ),
    )

【讨论】:

  • 感谢您的 sn-ps。我做了错误处理,它工作正常。
【解决方案2】:

使用前需要先初始化hivesee this image to see how to do that.

【讨论】:

  • 我可以知道path_provider 是什么吗?我不知道它是如何工作的。
  • 一个 Flutter 插件,用于查找文件系统上的常用位置。支持安卓、iOS、Linux、macOS 和 Windows。并非所有平台都支持所有方法。 pub.dev/packages/path_provider
【解决方案3】:

我已经使用try{}catch(){} 错误处理修复了它,如下所示。该项目即将到期,我找不到任何更好的解决方案,但这很完美。这是代码。

void addData() async {
    try{ 
      Box<dynamic> data = Hive.box("boxName");
    }catch(error){
       await Hive.openBox("boxName");
       addData();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多