enum Category{ restaurant, pizzera, fast_food, other }
class XXX ...
如何从其他类中静态访问XXX.Category?
非常感谢您的宝贵时间;-)
答案 0 :(得分:2)
无法将文件,类,枚举或其他方式公开给全局Dart上下文,以使所有其他文件将自动访问。您可以将其创建为全局资源,然后将其显式导入需要它的其他文件中。
(myEnum.dart)
enum MyEnum {
value1,
value2,
value3,
}
(main.dart)
import 'relative/path/to/file/myEnum.dart'; // Load the contents of myEnum.dart into this file's scope
void main() {
var e = MyEnum.value1;
// Do whatever else you want with MyEnum
}
重新阅读问题后,似乎您真正想要的是将枚举声明为静态类的成员,也就是说,您可以使用语法ClassName.EnumName.value
来引用它。遗憾的是,Dart不支持嵌套类型。 (您不能在其他类中声明一个类或枚举。)
您可以使用一种变通方法,该方法将产生相同的语法结果,尽管我想记录在案,因为这是不推荐的,并且肯定会使事情变得比需要的复杂。
(foo.dart)
enum _MyEnum {
value1,
value2,
value3,
value4,
}
class _MyEnumContainer {
_MyEnum get value1 => _MyEnum.value1;
_MyEnum get value2 => _MyEnum.value2;
_MyEnum get value3 => _MyEnum.value3;
_MyEnum get value4 => _MyEnum.value4;
}
class Foo {
static _myEnumContainerInstance = _MyEnumContainer();
static _MyEnumContainer get MyEnum => _myEnumContainerInstance;
}
(main.dart)
import 'foo.dart';
void main() {
var e = Foo.MyEnum.value1;
}
或者(也建议使用),您也可以只从第一个示例中导入带有标签的文件。当然,这纯粹是一种装饰性选择,将无法执行,但是从句法上讲,它可以达到您想要的目的。
import 'myEnum.dart' as Foo;
void main() {
var e = Foo.MyEnum.value1;
}