【问题标题】:How does getx realize the `.obs` thinggetx是如何实现`.obs`的东西的
【发布时间】:2021-07-20 01:54:04
【问题描述】:

学习 Flutter/getx 包我遇到了如下示例代码:

import 'package:get/get.dart';

class MyHomePageController extends GetxController {
  final count = 0.obs;
}

代码0.obs 吓到我了。我的意思是整数如何具有.obs 属性? getx 包对我的代码做了什么?

【问题讨论】:

    标签: flutter dart flutter-getx


    【解决方案1】:

    这是 Dart 2.7 中引入的名为 extension 的 dart 语言功能,它是一种向现有库添加功能的方法。

    你可能会在不知不觉中使用扩展方法。

    例如,当您在 IDE 中使用代码完成时,它会建议扩展方法和常规方法。

    例如,考虑以下代码将字符串解析为整数

    int.parse('42')
    

    功能改为在字符串上可能会更好——更短且更容易与工具一起使用——:

    '42'.parseInt()
    

    要启用该代码,您可以导入包含 String 类的扩展的库:

    import 'string_apis.dart';
    // ···
    print('42'.parseInt()); // Use an extension method.
    

    扩展不仅可以定义方法,还可以定义其他成员,例如 getter、setter 和运算符。此外,扩展有名称,如果出现 API 冲突,这会很有帮助。下面介绍了如何使用对字符串进行操作的扩展(名为 NumberParsing)来实现扩展方法 parseInt()

    extension NumberParsing on String {
      int parseInt() {
        return int.parse(this);
      }
      // ···
    }
    

    摘要

    get 包在后台使用扩展调用RxInt 的getter。

    对象,所以属性实际上并没有被原始数据类型调用

    这是来自get包的源代码……你可以通过按ctrl+“.obs”来访问它

    extension IntExtension on int {
      /// Returns a `RxInt` with [this] `int` as initial value.
      RxInt get obs => RxInt(this);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-09
      • 2014-03-21
      • 2021-06-07
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多