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
相关产品推荐
相关产品推荐

