如何在Dart中创建静态扩展方法?

如何在Dart中创建静态扩展方法?,dart,Dart,我试图在我的一个类上创建一个静态类(它是自动生成的,所以我不能轻易地修改它)。根据文件,这应该是可能的: 扩展还可以有静态字段和静态辅助方法 但即使是这个小例子也无法编译: 字符串上的扩展名Foo{ 静态字符串foo()=>foo!'; } void main(){ 打印(String.foo()); } 我做错了什么?文档意味着扩展类本身可以有静态的字段和助手方法。这些将不是扩展类上的扩展。也就是说,在您的示例中,Foo.Foo()是合法的,但String.Foo()不是 当前无法创建静态的

我试图在我的一个类上创建一个静态类(它是自动生成的,所以我不能轻易地修改它)。根据文件,这应该是可能的:

扩展还可以有静态字段和静态辅助方法

但即使是这个小例子也无法编译:

字符串上的扩展名Foo{ 静态字符串foo()=>foo!'; } void main(){ 打印(String.foo()); }
我做错了什么?

文档意味着扩展类本身可以有
静态的
字段和助手方法。这些将不是扩展类上的扩展。也就是说,在您的示例中,
Foo.Foo()
是合法的,但
String.Foo()
不是

当前无法创建
静态的扩展方法。看


请注意,您可能还会看到被称为“静态扩展方法”的Dart扩展方法,但“静态”表示扩展是静态应用的(即,基于编译时已知的对象类型,而不是其运行时类型)。

如James所述,从今天起,您不能在扩展类上直接使用静态方法,您的问题的当前解决方案是:

extension Foo on String {
  String foo() => 'foo!';
}

void main() {
  print('Hi'.foo());
}

谢谢,一个规范的回答!由于这种“静态扩展方法”以及“静态”类型与扩展方法的结合,我很难进行搜索,这一定淹没了我所寻找的结果。我实际的类是抽象的。
extension Foo on String {
  String foo() => 'foo!';
}

void main() {
  print('Hi'.foo());
}