database - 在 Flutter 中使用 moor 时使用关键字时出错
问题描述
在 moor flutter 中,关键字select, into, update, delete
显示错误如下-
错误:无法推断类型参数“R”。试图推断“R”的“列表”不起作用:类型参数“R”声明为扩展“DataClass”。'Lists' 类型推断自:参数 'table' 声明为 'TableInfo' 但参数是 '$ListsTable'。考虑将显式类型参数传递给泛型。
import 'package:moor_flutter/moor_flutter.dart';
import 'package:moor/moor.dart';
part 'List.g.dart';
@DataClassName('Lists')
class Lists extends Table{
IntColumn get id => integer().autoIncrement()();
TextColumn get name => text().withLength(min:1, max: 50)();
DateTimeColumn get date => dateTime().nullable()();
BoolColumn get strikeThrough => boolean().withDefault(Constant(false))();
}
@UseMoor(tables: [Lists])
class AppDatabase extends _$AppDatabase {
AppDatabase(): super((FlutterQueryExecutor.inDatabaseFolder(path:'db.sqlite',logStatements:true)));
@override
int get schemaVersion => 1;
Future<List<Lists>> getAllLists() => select(lists).get();
Stream<List<Lists>> watchAllLists() => select(lists).watch();
Future insertLists(Lists list) => into(lists).insert(list);
Future updateLists(Lists list) => update(lists).replace(list);
Future deleteLists(Lists list) => delete(lists).delete(list);
}
解决方案
您Lists
在这些函数中使用类
Future<List<Lists>> getAllLists() => select(lists).get();
Stream<List<Lists>> watchAllLists() => select(lists).watch();
Future insertLists(Lists list) => into(lists).insert(list);
Future updateLists(Lists list) => update(lists).replace(list);
Future deleteLists(Lists list) => delete(lists).delete(list);
这是与沼泽桌相关的课程。你应该使用List
类。但是我建议重命名你的表,因为 Dart 已经有一个List
类。
从文档中,您可以看到Todos
getter 带有一个Todo
(单数)类:
// inside the database class, the `todos` getter has been created by moor.
@UseMoor(tables: [Todos, Categories]) // Todos getter
class MyDatabase extends _$MyDatabase {
Future<List<Todo>> get allTodoEntries => select(todos).get(); // Todo class
// ^ no "s" here
Stream<List<TodoEntry>> watchEntriesInCategory(Category c) {
return (select(todos)..where((t) => t.category.equals(c.id))).watch();
}
}
推荐阅读
- c# - 如何对 MassTransit 请求响应进行单元测试
- reactjs - Ionic Native 联系人花费大量时间并阻塞 UI
- internet-explorer - Google 翻译无法在 Edge 或 Internet Explorer 中运行
- python - 在python中对列表进行修改
- excel - 您如何在一个范围内查找条件,然后将另一个范围内的信息获取到单个单元格中?
- machine-learning - 为什么我在 Pytorch 的加载模型中得到 NONE 参数梯度,即使在 backword 之后?
- excel - id 找不到 SAP GUI 脚本错误 619 控件
- php - 将php数组元素添加到数组中如何具有相同的键和值
- jupyter-notebook - 如何从外壳重新初始化笔记本?
- php - 将一个类($this)的属性$action赋给一个变量$conf,为什么是数组?