enum Category{ restaurant, pizzera, fast_food, other }
class XXX ...
Run Code Online (Sandbox Code Playgroud)
如何从其他类静态访问XXX.Category?
非常感谢您抽出时间;-)
无法以所有其他文件自动访问它的方式将文件、类、枚举或其他方式公开给全局 Dart上下文。您可以将其创建为全局资源,然后将其显式导入到需要它的其他文件中。
(myEnum.dart)
enum MyEnum {
value1,
value2,
value3,
}
Run Code Online (Sandbox Code Playgroud)
(主要.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
}
Run Code Online (Sandbox Code Playgroud)
重新阅读问题后,似乎您真正想要的是将枚举声明为静态类的成员,即这样您就可以使用语法引用它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;
}
Run Code Online (Sandbox Code Playgroud)
(主要.dart)
import 'foo.dart';
void main() {
var e = Foo.MyEnum.value1;
}
Run Code Online (Sandbox Code Playgroud)
或者(更推荐),您也可以使用标签从第一个示例中导入文件。当然,这纯粹是一个装饰选项,并且没有办法强制执行,但从语法上讲,它实现了您想要的。
import 'myEnum.dart' as Foo;
void main() {
var e = Foo.MyEnum.value1;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3801 次 |
| 最近记录: |