Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Dart中创建静态扩展方法_Dart_Flutter - Fatal编程技术网

在Dart中创建静态扩展方法

在Dart中创建静态扩展方法,dart,flutter,Dart,Flutter,通常,当我创建自定义类时,我可以创建一个将该类用作参数的函数,例如: class Sphere{ double calculateRadius() {return 40.0;} } 然后我可以调用Sphere.calculateRadius() 但是对于预先存在的类,比如字符串1,这是无法实现的。例如我试过这样做: String.createFrom(String s){return "new";} 但它不起作用(Android Studio甚至不让我编译) 这可

通常,当我创建自定义类时,我可以创建一个将该类用作参数的函数,例如:

class Sphere{
    double calculateRadius() {return 40.0;}
}
然后我可以调用Sphere.calculateRadius()

但是对于预先存在的类,比如字符串1,这是无法实现的。例如我试过这样做:

String.createFrom(String s){return "new";}
但它不起作用(Android Studio甚至不让我编译)


这可能吗?如果可能,我怎样才能在Dart中做到?如果我创建了它,我将如何访问调用该方法的对象?(示例中的字符串)

您可能指的是扩展方法。这还不受支持,但Dart团队已经尝试设计这样的功能,很有可能它会被添加到语言中


从现在到2020年1月,Dart 2.7正式引入了扩展方法。 要扩展类,可以执行以下操作:

extension NewExtension on double {
  int get myMethod {
    return (1/this*10).toInt();
  }
}

使用扩展方法

使用以下语法创建扩展:

extension <extension name> on <type> {
  (<member definition>)*
}
extension MyString on String {
  String addHello() {
    return 'Hello : $this';
  }
}
 void main() {
      var name = 'Kab';
      var nameWithHello = name.addHello();
      print(nameWithHello);
    }
用法:

extension <extension name> on <type> {
  (<member definition>)*
}
extension MyString on String {
  String addHello() {
    return 'Hello : $this';
  }
}
 void main() {
      var name = 'Kab';
      var nameWithHello = name.addHello();
      print(nameWithHello);
    }
输出:
你好:Kab


您可以在这里了解更多信息:

这就是我的意思!我不可能自己解决的谢谢你!我要编辑这个问题!是的,我可以看到这个问题在不被支持的时候已经过时了,但现在它正在支持它。你解释得很好。