Dart / Flutter 嵌套类静态访问
Posted
技术标签:
【中文标题】Dart / Flutter 嵌套类静态访问【英文标题】:Dart / Flutter nested classes static access 【发布时间】:2021-04-28 10:38:24 【问题描述】:我正在尝试使用嵌套类的一个版本在 Flutter 中的整个应用程序中创建一个常量字符串树。我希望它们被嵌套,以便随着应用程序的增长快速找到 const 字符串,但仍然具有使用 Text() 小部件的 const 关键字的额外“速度”。
但是,我很难在 const Text() 小部件中使用它们。
这是一个示例:
class Strings
static const String ok = 'OK';
static TechnicianStrings technicianStrings = TechnicianStrings();
class TechnicianStrings
TechnicianStrings();
final String createTech = 'Create Technician';
final String technician = 'Technician';
在整个应用程序中,我想这样使用这些常量字符串:
const Text(Strings.ok), // <-- this works
const Text(Strings.technicianStrings.technician), //<-- only works without 'const'
const Text(Strings.technicianStrings.createTech), //<-- only works without 'const'
但是,当我对文本小部件使用 const 关键字时,我收到“创建常量的参数必须是常量表达式”的错误。
我尝试为 TechnicianStrings 的成员使用不同的“常量和静态”名称,但文本小部件出现“无效常量”等错误。我还将 TechnicianStrings 定义为静态 const,并在该行中收到“必须使用常量值初始化常量变量”的错误:
static const TechnicianStrings technicianStrings = TechnicianStrings();
有没有办法将这种嵌套类结构与 const Text() 小部件一起使用?
【问题讨论】:
我不确定,但是如果您想将您的应用本地化为另一种语言,那么整个问题就变得毫无意义。那么也许是时候使用本地化系统了? 我不打算对其进行本地化......但也许我会看看本地化包,看看他们是如何做这样的事情的。虽然,使用这种方法可以很容易地进行本地化......只需根据语言选择不同的类结构,不是吗? 【参考方案1】:TechnicianStrings
中需要一个常量构造函数。
class Strings
static const String ok = 'OK';
static const TechnicianStrings technicianStrings = TechnicianStrings();
class TechnicianStrings
const TechnicianStrings(); // <---
final String createTech = 'Create Technician';
final String technician = 'Technician';
【讨论】:
以上是关于Dart / Flutter 嵌套类静态访问的主要内容,如果未能解决你的问题,请参考以下文章
使用 Dart 语言解析嵌套 JSON 数组并将其放入模型类中
通过对象引用访问实例变量的静态嵌套类的 Java 示例 [重复]