gpt4 book ai didi

flutter - 如何在 dart 中全局公开一个枚举?

转载 作者:行者123 更新时间:2023-12-03 03:24:03 31 4
gpt4 key购买 nike

enum Category{ restaurant, pizzera, fast_food, other }

class XXX ...
如何从其他类静态访问 XXX.Category?
非常感谢您的时间;-)

最佳答案

无法以所有其他文件都可以自动访问它的方式将文件、类、枚举或其他方式公开给全局 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;
}

关于flutter - 如何在 dart 中全局公开一个枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59722317/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com