Sqlite与Ffltter桌面窗口?

7xllpg7q  于 2022-11-15  发布在  SQLite
关注(0)|答案(3)|浏览(155)

该应用程序适用于Android,但不适用于台式机
[Error:Ffltter/lib/ui/ui_dart_state.cc(186)]未处理异常:MissingPluginException(通道com.tekartik.sqflite上的方法getDatabasesPath没有实现)

o7jaxewo

o7jaxewo1#

正如评论中指出的,sqflite_common_ffi允许在桌面上使用SQFlite API。它不是作为颤动插件实现的,因为它也可以在常规的飞镖VM中工作。
您可以阅读this以了解如何在桌面上使用现有的SQFlite代码。但是,由于多解释一点总是比添加一个链接更好,下面是基本步骤:

设置

首先添加依赖项:

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());
}
ua4mk5z4

ua4mk5z42#

目前,sqflite仅支持Android iOS和Mac。或者,您可以使用Hive或Sembast。
如果您想在数据库上执行查询,我建议您使用Sembast。
这两个包目前都支持所有平台,但如果您使用的是Sembast,则必须包含包sembast_web以获得Web支持。

套餐:

Hivehttps://pub.dev/packages/hive
Sembasthttps://pub.dev/packages/sembast
Sembast_webhttps://pub.dev/packages/sembast_web

wvmv3b1j

wvmv3b1j3#

正如@alextk所指出的,你可以使用sqflite_common_ffi来获得你想要的Windows支持。根据您的要求,纯DART选项可能是更好的替代方案。
如果您只想存储键/值对,Hive可能是最佳选择,但如果您想存储对象,ObjectBox可能是最佳选择。
这是一篇很好的文章,它比较了现有的Fflight存储技术:
https://objectbox.io/flutter-databases-sqflite-hive-objectbox-and-moor/

相关问题