Flutter 扩展的使用

Usage of extensions in Flutter

很抱歉这个问题,但我是 Flutter 的新手。 我通常在 swift 中编写代码,并且使用 UIKit 框架。有时向 Class 添加扩展名非常有用,我在其中添加与 Class 相关的函数以获得干净的代码。

是否correct/professional在Flutter中使用扩展?

例如:

extension on _MapViewScreenState {
  double calculateDistance(lat1, lon1, lat2, lon2) {
    var p = 0.017453292519943295;
    var c = cos;
    var a = 0.5 -
        c((lat2 - lat1) * p) / 2 +
        c(lat1 * p) * c(lat2 * p) * (1 - c((lon2 - lon1) * p)) / 2;
    return 12742 * asin(sqrt(a));
  }

  // Other functions
  //...
}

此扩展包含 _MapViewScreenState 使用的函数。

Dart 2.7 中引入的名为扩展方法的功能允许我们向现有库添加新功能。虽然它不允许我们直接修改现有代码,但它使我们能够以一种易于阅读和使用的方式自定义 class。

我们还可以为 getters、setters 和 operators 编写扩展,这些称为扩展成员。它被命名为“扩展方法”,以便来自 Kotlin、C# 的开发人员也可以与之相关。

extension ExtendedString on String {
  bool get isValidName {
    return !this.contains(new RegExp(r'[0–9]'));
  }
}