0

我正在尝试将DateTimeruntimetype 值转换为Expression<DateTime, DateTimeType>. 近三天来,我一直在努力实现这一目标。我尝试了不同的方法,但没有工作。

我想实现这一点的原因是因为moor_flutter库在某些情况下使用并接受库的自定义 runtimetypes方法以及这些方法的参数值。

以下是示例代码;

final DateTime dateToday = new DateTime.now(); // convert DateTime to Expression<DateTime, DateTimeType>
var dateWithNewRuntimetype; // assign the converted value to this variable

我以为我通过添加变量值as as Expression<DateTime, DateTimeType>的值来解决这个问题,dateWithNewRuntimetype但是这也不是解决方案。

该解决方案将适用于以下代码

Stream<List> getLoansWithTomorrowDueDate(int dayInFuture) {
    return (select(loans)
          ..where((l) => l.due_date.isBetween(
              dateToday, // it should be Expression<DateTime, DateTimeType> not DateTIme
              futureDate, // it should be Expression<DateTime, DateTimeType> not DateTIme)))
        .watch();
  }

如果您希望我提供有关此的更多信息,我会这样做。

谢谢你,太爱了。

4

1 回答 1

1

isBetween比较SqlType。您必须使用isBetweenValues.

/// Defines extension functions to express comparisons in sql
extension ComparableExpr<DT, ST extends ComparableType<DT>>
    on Expression<DT, ST> {

  Expression<bool, BoolType> isBetween(
      Expression<DT, ST> lower, Expression<DT, ST> higher,
      {bool not = false});

  Expression<bool, BoolType> isBetweenValues(DT lower, DT higher,
      {bool not = false});
}
于 2020-02-29T08:56:02.557 回答