Преобразование даты и времени в другой тип времени выполнения в приложении флаттера - PullRequest
0 голосов
/ 29 февраля 2020

Я пытаюсь преобразовать значение 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();
  }

Если вы хотите, чтобы я предоставил дополнительную информацию по этому вопросу, я сделаю это.

Большое вам спасибо, Любовь.

1 Ответ

1 голос
/ 29 февраля 2020

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