首页 > 解决方案 > 静态扩展函数在 Dart 中不起作用

问题描述

我想要一个静态扩展功能。我创建了一个,它不起作用。我从教程中复制了一个,它可以工作。

为什么复制的函数对我的函数不起作用?

这是扩展

extension DateTimeExtension on DateTime {
  String toDbDate() {
    return DbService.dtFormat.format(this);
  }

  static DateTime parseDbDate(String dbDate) {
    return DbService.dtFormat.parse(dbDate);
  }
}

// extension from tutorial I followed works
extension ShapeBorderX on ShapeBorder {
  static ShapeBorder roundedRectangle(double radius) {
    return RoundedRectangleBorder(
      borderRadius: BorderRadius.all(
        Radius.circular(radius),
      ),
    );
  }
}

这就是我使用它的方式

  method() {
    DateTime.now().toDbDate();           // works
    DateTime.parseDbDate("2020-02-01");  // does not work
    ShapeBorderX.roundedRectangle(12.0); // works
  }

显然我做错了什么,但我不知道是什么..

谢谢你的帮助。

标签: flutterdart

解决方案


好的,我现在看到了。

我必须在扩展而不是在它扩展的类上调用该方法。

DateTimeExtension.parseDbDate(...)工作正常。


推荐阅读