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

标签 dart extension-methods

我读了 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/

相关文章:

dart - 如何为 ListView 索引 firestore 文档映射项

dart - 流函数调用在Google Dart中是异步的吗?

C#:使用别名 using 指令无法访问扩展方法

c# - 从扩展方法修改 ValueType?

c# - 如何使用 Moq 模拟扩展方法?

c# - 如何向枚举添加多个属性?

dart - Dart 中模型的简单可选类型

dart - 如何从 map 构造带有命名参数的类?

android - 应用程序被杀死时是否可以跟踪用户的位置( flutter )

swift - 如何从扩展中调用选择器?