You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求解析Flutter/Dart中Getter内this关键字的作用

解析Dart扩展中Getter里的this关键字用法

先看完整代码:

enum CategoryStatus { initial, success, error, loading, selected }

extension CategoryStatusX on CategoryStatus {
  bool get isInitial => this == CategoryStatus.initial;
  bool get isSuccess => this == CategoryStatus.success;
  bool get isError => this == CategoryStatus.error;
  bool get isLoading => this == CategoryStatus.loading;
  bool get isSelected => this == CategoryStatus.selected;
}

核心用法解析

  • this的指代对象:在这个扩展的Getter方法里,this直接指向调用该Getter的具体CategoryStatus枚举实例。比如你写CategoryStatus.initial.isInitial时,this就是CategoryStatus.initial这个枚举值;写CategoryStatus.loading.isLoading时,this就是CategoryStatus.loading实例。

  • 为什么必须用this:因为扩展是给CategoryStatus类型添加额外成员,Getter本质是当前实例的属性,必须用this来明确要拿当前实例和枚举常量做比较。如果省略this直接写== CategoryStatus.initial,语法上缺少比较的左值,根本无法运行。

  • 实际价值:这种写法把枚举值的判断逻辑封装成可读性更强的Getter,原本要写if (currentStatus == CategoryStatus.success),现在可以写成if (currentStatus.isSuccess),代码更简洁易懂,也符合Dart的语法糖设计思路。

内容的提问来源于stack exchange,提问作者Nahom Ersom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 06:05:21