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

Dart中如何将枚举(enum)转换为整数(int)?

在Dart中将枚举值转换为整数值的解决方法

嘿,这个问题我之前也碰到过!Dart里枚举和int是不同的类型,直接赋值肯定会报错,给你两种常用的解决方法:

方法一:使用枚举自带的index属性

Dart的枚举每个值默认都自带一个index属性,它的数值从0开始递增,对应枚举值在定义中的顺序。这个方法简单直接,适合不需要自定义数值的场景。

示例代码:

enum ETabs { eTabRed, eTabGreen, eTabBlue }

void main() {
  int tabIndex = ETabs.eTabRed.index; // 得到0
  int greenIndex = ETabs.eTabGreen.index; // 得到1
  print(tabIndex); // 输出0
}

方法二:自定义枚举的整数字段(更推荐)

如果你担心后续调整枚举值顺序导致index变化,或者想给枚举值指定自定义的整数(比如从1开始,或者跳步的数值),可以给枚举添加一个自定义的int属性,这样更灵活可靠。

示例代码:

enum ETabs {
  eTabRed(0),
  eTabGreen(1),
  eTabBlue(2); // 这里可以随便指定数值,比如改成10、20都没问题

  final int value;
  const ETabs(this.value); // 定义构造函数来初始化数值
}

void main() {
  int tabIndex = ETabs.eTabRed.value; // 获取自定义的0
  int blueIndex = ETabs.eTabBlue.value; // 获取自定义的2
  print(tabIndex); // 输出0
}

为什么直接赋值会报错?

Dart是强类型语言,ETabs是一个独立的枚举类型,int是数值类型,两者属于不同的类型系统,不能直接隐式转换,必须通过上面的方式显式获取对应的整数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 14:37:49