在 Flutter 应用程序中将日期时间转换为其他运行时类型

Convert datetime to other runtimetype in flutter app

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

我想实现这个的原因是因为 moor_flutter 库在某些情况下使用并接受库的 custom 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();
  }

如果您希望我提供更多相关信息,我会提供。

谢谢你,真爱。

isBetweenSqlType进行比较。 您必须使用 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});
}