最近在学习Flutter,还是遇到Extension这个高级功能,所以有必要去了解一下。

Flutter 是基于Dart这个语言的。在Dart 2.7 版本中,新加入了一个重要的语法功能,叫做extension。Extension的主要功能给已经存在的类添加新的member function,往里面增加新的函数。通过extension, 我们可以向诸如 Iterable , String 这样的常用类里面增加一些方便的函数。

扩展 String 的功能

我们创建一个文件名为 “string_parser_extension.dart”,其中的内容如下。

extension ParseNumbers on String {
  int parseInt() {
    return int.parse(this);
  }
  double parseDouble() {
    return double.parse(this);
  }
}

需要注意的是,在extension函数中,我们可以通过this来访问string 中原有的其它方法。这里的this指的是当前的string instance

使用扩展功能

要使用这两个extension函数,只需要 import ‘{文件路径}:string_parser_extension.dart’ , 然后我们就可以对代码中的 string 类型使用这两个函数了。

final d = '2';
print(d.parseInt());

另外如下的写法也都是可以的:

dynamic v = '1';
print(v.parseInt());
var v = '1';
print(v.parseInt());

也就是说,通过extension来为 String class 增加方便的功能,可以增加服用,简化代码。