【发布时间】:2021-11-20 09:44:18
【问题描述】:
我正在尝试制作一个发送/接收 SMS 并将数据存储在 noSQL 数据库中的简单应用程序。作为小型数据库,我选择了sembast。
然后出现了一些问题。
- 几乎所有示例都是针对旧版本的颤振,因此 null-safety 会阻止获取应用程序的工作示例。在花了一天无用的努力使代码正确之后,我找到了另一个示例。
- 在作者的github page 上有一个工作示例,但它是以流直接馈送到 UI 的方式编写的。无论如何,我想通过使用bloc架构的cubits来保留数据层抽象。
弄清楚如何通过cubit->emit调用转发流并不是什么大问题,但是这段代码让我有点困惑:
Future<void> init({required String packageName}) async {
WidgetsFlutterBinding.ensureInitialized();
platformInit();
// For dev, find the proper sqlite3.dll
if (!kIsWeb) {
sqflite.sqfliteWindowsFfiInit();
}
var databaseFactory = getDatabaseFactory(packageName: packageName);
noteProvider = DbNoteProvider(databaseFactory);
// devPrint('/notepad Starting');
await noteProvider.ready;
runApp(MyApp());
}
核心问题是我无法弄清楚这个getDatabaseFactory 方法来自哪里,而在我的应用程序中它只是给出了Method not found: 'getDatabaseFactory'。
我在主题上找到的唯一内容是在某些数据库上提到了这种 Java 方法。
另一方面,克隆和运行 (flutter run) 初始笔记本示例运行正常。当我尝试转储getDatabaseFactory 的结果时,它给了我Instance of 'DatabaseFactoryWeb'。
问题是:
- 有没有简单的方法来解决这个
getDatabaseFactory?也许我想念依赖? - 有没有办法简化整个note_provider?这似乎有点过于复杂了。
- 如果您有关于如何通过
bloc架构使not_provider工作的提示,那就太好了。目前的计划是收听onNotesStream 并在事件中发出“注释”列表,以便 UI 重绘小部件。
提前谢谢你。
【问题讨论】:
标签: flutter dart nosql bloc sembast