有没有办法直接在 Dart 中为类添加静态扩展方法?

Thi*_*tal 6 extension-methods dart

我在关于 C# 的类似问题的评论中读到扩展方法只能从实例中调用。Dart 也是如此吗?我正在尝试向将这样调用的Platform 添加一个 getter 。Platform.isDesktop. 然而,这仅在调用类的实例时有效,即Platform().isDesktop,即使将实例方法声明为静态。为什么我们不能添加静态成员?

代码:

extension on Platform {
  bool get isMobile => Platform.isAndroid || Platform.isIOS;
  bool get isDesktop => Platform.isWindows || Platform.isMacOS || Platform.isLinux;
}
Run Code Online (Sandbox Code Playgroud)

lrn*_*lrn 21

是的,Dart 也是如此。扩展方法的作用类似于实例方法,而不是静态方法。目前没有办法从类外部向类添加静态方法。

您可以在扩展中声明静态方法,但它们在扩展本身上是静态的(您使用 调用它们ExtensionName.methodName())。

https://github.com/dart-lang/language/issues/723 中有关于添加扩展静态方法的讨论。