0

我正在使用moor_flutter包与颤振应用程序上的 sqlite 数据库进行交互。我试图将明天解析为一个月中的天数。例如今天的日期是24,因此我25在 moor_flutter 的isSmallerOrEqual()方法中解析为明天。目的是将 25 解析为 inruntimetype **Expression<int, IntType>**但我将其解析为runtimetype **int**,这是因为我不知道如何转换intExpression<int, IntType>. 我尝试了一些不同的方法,但没有一个成功。

下面是我正在执行此操作的功能。

Future NearDueDate() {
    // final DateTime currentDate = new DateTime.now();
    var dayToday = currentDate.day;
    var tommorow = int.parse(dayToday.toString()) + 1;
    return (select(the_records)
          ..where((t_r) => t_r.due_date.day.isSmallerOrEqual(tommorow)))
        .get();
  }

请注意这里的问题是我如何转换intExpression<int, IntType>这样我不会得到任何错误t_r.due_date.day.isSmallerOrEqual(tommorow)

谢谢,用爱发帖。

4

1 回答 1

0

对不起,我不能评论这个答案。

如果Expression是某种模型。您必须通过创建Expression.

以此为例:

我们有一个模型,User

class User {

    int _id;
    String _name;

    User(this._name);

    User.withId(this._id, this._name );

    int get id => _id;

    String get name => _name;

    set name(String newName) {
        if (newName.length <= 255) {
            this._name = newName;
        }
    }

    // Convert a User object into a Map object
    Map<String, dynamic> toMap() {

        var map = Map<String, dynamic>();
        if (id != null) {
            map['id'] = _id;
        }
        map['name'] = _name;

        return map;
    }

    // Extract a User object from a Map object
    User.fromMapObject(Map<String, dynamic> map) {
        this._id = map['id'];
        this._name = map['name'];
    }
}

所以这是这里的重点

要创建一种类型,User我们会做这样的事情

user = User('John');

现在的类型user.nameUser<String>

通常,'John'只是一个字符串。现在它是 User 类的一部分。这是User<String>

于 2020-02-24T14:45:27.900 回答