我读了 comment在 C# 的类似问题上,扩展方法只能从实例中调用。 Dart 也是如此吗?我正在尝试向 Platform
添加一个 setter/getter class这将被称为这样。 Platform.isDesktop
.但是,这仅在调用类的实例时有效,即 Platform().isDesktop
,即使将实例方法声明为静态。为什么我们不能添加静态成员?
代码:
extension on Platform {
bool get isMobile => Platform.isAndroid || Platform.isIOS;
bool get isDesktop => Platform.isWindows || Platform.isMacOS || Platform.isLinux;
}
最佳答案
是的,Dart 也是如此。扩展方法的作用类似于实例方法,而不是静态方法。目前没有办法从类外部向类添加静态方法。
您可以在扩展中声明静态方法,但它们在扩展本身上是静态的(您可以使用 ExtensionName.methodName()
调用它们)。
https://github.com/dart-lang/language/issues/723中有关于添加扩展静态方法的讨论.
关于dart - 有没有办法直接在 Dart 中为类添加静态扩展方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59725226/