该应用程序适用于Android,但不适用于台式机[Error:Ffltter/lib/ui/ui_dart_state.cc(186)]未处理异常:MissingPluginException(通道com.tekartik.sqflite上的方法getDatabasesPath没有实现)
o7jaxewo1#
正如评论中指出的,sqflite_common_ffi允许在桌面上使用SQFlite API。它不是作为颤动插件实现的,因为它也可以在常规的飞镖VM中工作。您可以阅读this以了解如何在桌面上使用现有的SQFlite代码。但是,由于多解释一点总是比添加一个链接更好,下面是基本步骤:
sqflite_common_ffi
首先添加依赖项:
dependencies: sqflite_common_ffi:
然后在运行应用程序之前初始化FFI:
import 'package:sqflite_common_ffi/sqflite_ffi.dart'; import 'package:sqflite/sqflite.dart'; Future main() async { if (Platform.isWindows || Platform.isLinux) { // Initialize FFI sqfliteFfiInit(); // Change the default factory databaseFactory = databaseFactoryFfi; } runApp(MyApp()); }
ua4mk5z42#
目前,sqflite仅支持Android iOS和Mac。或者,您可以使用Hive或Sembast。如果您想在数据库上执行查询,我建议您使用Sembast。这两个包目前都支持所有平台,但如果您使用的是Sembast,则必须包含包sembast_web以获得Web支持。
sqflite
sembast_web
套餐:
Hive:https://pub.dev/packages/hiveSembast:https://pub.dev/packages/sembastSembast_web:https://pub.dev/packages/sembast_web
Hive
Sembast
Sembast_web
wvmv3b1j3#
正如@alextk所指出的,你可以使用sqflite_common_ffi来获得你想要的Windows支持。根据您的要求,纯DART选项可能是更好的替代方案。如果您只想存储键/值对,Hive可能是最佳选择,但如果您想存储对象,ObjectBox可能是最佳选择。这是一篇很好的文章,它比较了现有的Fflight存储技术:https://objectbox.io/flutter-databases-sqflite-hive-objectbox-and-moor/
3条答案
按热度按时间o7jaxewo1#
正如评论中指出的,
sqflite_common_ffi
允许在桌面上使用SQFlite API。它不是作为颤动插件实现的,因为它也可以在常规的飞镖VM中工作。您可以阅读this以了解如何在桌面上使用现有的SQFlite代码。但是,由于多解释一点总是比添加一个链接更好,下面是基本步骤:
设置
首先添加依赖项:
初始化
然后在运行应用程序之前初始化FFI:
ua4mk5z42#
目前,
sqflite
仅支持Android iOS和Mac。或者,您可以使用Hive或Sembast。如果您想在数据库上执行查询,我建议您使用Sembast。
这两个包目前都支持所有平台,但如果您使用的是Sembast,则必须包含包
sembast_web
以获得Web支持。套餐:
Hive
:https://pub.dev/packages/hiveSembast
:https://pub.dev/packages/sembastSembast_web
:https://pub.dev/packages/sembast_webwvmv3b1j3#
正如@alextk所指出的,你可以使用sqflite_common_ffi来获得你想要的Windows支持。根据您的要求,纯DART选项可能是更好的替代方案。
如果您只想存储键/值对,Hive可能是最佳选择,但如果您想存储对象,ObjectBox可能是最佳选择。
这是一篇很好的文章,它比较了现有的Fflight存储技术:
https://objectbox.io/flutter-databases-sqflite-hive-objectbox-and-moor/