调用Isar数据库时,我的Flutter应用程序有问题。 我在一个页面中有数据结构,在另一个页面中有函数,在我的 main.dart 页面中有创建两个用户(如果它们不存在)的说明,但我不知道如何修复adduser
、edituser
和deleteuser
函数中的错误。
@Collection()
class User {
Id? id = Isar.autoIncrement;
@Index(unique: true)
String? username;
String? password;
bool? isAdmin;
User({
this.id,
this.username,
this.password,
this.isAdmin,
});
}
主页 .dart 包含
@override
Widget build(BuildContext context) {
// Revisa si el usuario Admin existe
IsarQueries.getUserByUsername('admin').then((user) {
if (user == null) {
// Crea un nuevo usuario Admin
final admin = User()
..username = 'admin'
..password = '1234'
..isAdmin = true;
IsarQueries.addUser(admin);
}
});
// Revisa si el usuario mms existe
IsarQueries.getUserByUsername('mms').then((user) {
if (user == null) {
// Crea un nuevo usuario mms
final mms = User()
..username = 'mms'
..password = '4321'
..isAdmin = true;
IsarQueries.addUser(mms);
}
});
return Scaffold(
appBar: AppBar(
title: const Text('Fitgate App'),
),
body: LoginPage(),
backgroundColor: Colors.white,
);
}
}
在我拥有的页面函数中:
static Future<void> addUser(User user) async {
await _isar.writeTxn((isar) async {
isar.user.put(user);
});
}
static Future<void> updateUser(User user) async {
await _isar.writeTxn((isar) async {
isar.user.put(user);
});
}
static Future<void> deleteUser(User user) async {
await _isar.writeTxn((isar) async {
isar.user.delete(user);
});
}
}
但是这三个函数给了我以下错误
参数类型"未来函数(动态)"不能分配给参数类型"未来函数()"。
我看过教程并遵循了一些指南,并且我得到了(摆脱)很多错误,但现在我只有这三个。
似乎您"isar"
是类中声明的变量。如果这是真的,可能会混淆writeTxn
函数中的isar
。
如果您确实将isar
更改为其他,请重试。