【问题标题】:Usage of extensions in FlutterFlutter 中扩展的使用
【发布时间】:2022-01-12 17:36:48
【问题描述】:

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

在 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 使用的函数。

【问题讨论】:

    标签: flutter dart extension-methods


    【解决方案1】:

    在 Dart 2.7 中引入的名为 Extension methods 的功能允许我们向已有的库添加新功能。虽然它不允许我们直接修改现有代码,但它使我们能够以一种我们可以轻松阅读和使用的方式自定义一个类。

    我们还可以为 getter、setter 和操作符编写扩展,这些称为扩展成员。它被命名为“扩展方法”,因此来自 Kotlin、C# 的开发人员也可以使用它。

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

    【讨论】:

    • 谢谢,这意味着如果我有一个类(例如:Map()),我可以创建一个扩展名为 Map() 的新文件,然后我可以添加 Map() 将使用?
    • 准确的说是可以使用函数的Map的实例。供您参考,扩展中的静态函数不能在它扩展的类上使用。
    猜你喜欢
    • 1970-01-01
    • 2021-04-03
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 2018-12-30
    • 2021-10-08
    • 2018-01-15
    相关资源
    最近更新 更多