dart / Flutter 扩展中的运算符重载

Operator overloading within an extension in dart / Flutter

我希望能够使用简单的运算符比较 dart 中的两个 DateTime,因此我创建了一个名为 'date_comparison.dart' 的文件,其中包含以下代码:

extension DateComparison on DateTime {
  bool operator >(other) => compareTo(other) > 0;
  bool operator <(other) => compareTo(other) < 0;
  bool operator >=(other) => compareTo(other) >= 0;
  bool operator <=(other) => compareTo(other) <= 0;
}

在另一个文件中,我导入了这个文件并使用了比较运算符,VS Code 没有给我任何错误。 (该文件的代码对于 post 来说有点太多,但重点是除此之外一切正常)

但是,当我尝试 运行 应用程序时,出现 运行 时间错误 NoSuchMethodError 说 »Class 'DateTime' 没有实例方法'<='.«

所以我解决了这个问题:

事实证明,只要类型被扩展修改的变量是动态类型,即使为该变量分配了正确的值,扩展也会被忽略。

就我而言,我不小心忘记在我想使用我的运算符扩展的变量上声明 DateTime 类型,因此它是动态的并且扩展没有效果。