我正在尝试制作一个简单的应用程序来发送/接收 SMS 并将数据存储在 noSQL 数据库中。作为小型数据库,我选择了sembast。
然后出现了一些问题。
- 几乎所有示例都是针对旧版本的颤振,因此 null-safety 会阻止获取应用程序的工作示例。在花了一天无用的努力使代码正确之后,我找到了另一个例子。
- 在作者的github 页面上有一个工作示例,但它是以流直接馈送到 UI 的方式编写的。无论如何,我想通过使用 cubits 的bloc架构来保留数据层抽象。
弄清楚如何通过 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?这似乎有点过于复杂。
- 如果您对如何
not_provider
通过bloc
架构进行工作有提示,那就太好了。现在的计划是监听onNotes
Stream 并在事件中发出“notes”列表,以便 UI 重绘小部件。
先感谢您。