我的Flutter应用程序在调用Isar数据库时出现问题

bxgwgixi  于 2023-04-22  发布在  Flutter
关注(0)|答案(1)|浏览(294)

我的Flutter应用程序在调用Isar数据库时遇到了一个问题。我在一个页面中有数据结构,在另一个页面中有函数,在我的主.dart页面中有指令,如果不存在,则创建两个用户,但我不知道如何修复adduseredituserdeleteuser函数中的错误。

@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);
    });
  }
}

但是这三个函数给予我以下的错误
无法将参数类型“Future Function(dynamic)”分配给参数类型“Future Function()”。
我已经看了教程,并遵循了几个指南,我已经得到(摆脱)了很多错误,但现在我只有这三个。

brc7rcf0

brc7rcf01#

看起来你有"isar"作为类中的声明变量。如果这是真的,它可能会混淆你的writeTxn函数中的isar
如果您确实将isar更改为其他isar并重试。

相关问题