在 Flutter 应用程序中关闭 Store 实例的最佳做法是什么?
What's the best practice to close the Store instance in a Flutter app?
我正在使用 ObjectBox 数据库构建一个 Flutter 应用程序。
应用程序在启动时调用 openStore();,并将 Store 实例保存在单例中 class 以便我可以从任何地方访问它。
但我不确定什么时候调用 store.close();
在 iOS 中,我们可以使用 applicationWillTerminate(_:)
在应用程序终止之前立即执行代码
不幸的是,Flutter 并没有为我们提供这样的东西。
我在预期最长寿命的 StatefulWidget 中尝试了以下代码,但它有时会更快地处理并且应用程序无法访问数据库。
@override
void dispose() {
StoreHelper().store?.close();
super.dispose();
}
我的问题是...
- 调用 store.close() 的最佳做法是什么?
- 如果我不关店会怎样?我的应用程序会丢失数据持久性吗?
我觉得你做的还不错。您可以将其略微更改为 StoreHelper().close()
,这也会清除将其 Store 引用设置为 null
,在这种情况下,如果应用程序的某些其他部分仍在尝试访问,您可以处理它(认识到它已关闭或重新打开它)。
此外,在大多数情况下,您应该在不明确关闭商店的情况下离开。除非您正在执行(许多)后台写入操作,在这种情况下,您应该至少尝试等待它在 dispose()
.
中完成
我正在使用 ObjectBox 数据库构建一个 Flutter 应用程序。
应用程序在启动时调用 openStore();,并将 Store 实例保存在单例中 class 以便我可以从任何地方访问它。
但我不确定什么时候调用 store.close();
在 iOS 中,我们可以使用 applicationWillTerminate(_:)
在应用程序终止之前立即执行代码不幸的是,Flutter 并没有为我们提供这样的东西。
我在预期最长寿命的 StatefulWidget 中尝试了以下代码,但它有时会更快地处理并且应用程序无法访问数据库。
@override
void dispose() {
StoreHelper().store?.close();
super.dispose();
}
我的问题是...
- 调用 store.close() 的最佳做法是什么?
- 如果我不关店会怎样?我的应用程序会丢失数据持久性吗?
我觉得你做的还不错。您可以将其略微更改为 StoreHelper().close()
,这也会清除将其 Store 引用设置为 null
,在这种情况下,如果应用程序的某些其他部分仍在尝试访问,您可以处理它(认识到它已关闭或重新打开它)。
此外,在大多数情况下,您应该在不明确关闭商店的情况下离开。除非您正在执行(许多)后台写入操作,在这种情况下,您应该至少尝试等待它在 dispose()
.