flutter - 如何将静态变量转换为常量并使用它传递给期望最终的类构造函数
问题描述
以下代码出错
Cannot invoke a non-'const' constructor where a const expression is expected.
Try using a constructor or factory that is 'const'.
static const MyClass darkerText = MyClass(param);
了解static
在这种情况下使用可能不合适。只是想看看是否有任何可能的方法。
class MyClass {
final int total;
MyClass(total);
}
class Test {
static int param = 10;
static const MyClass darkerText = MyClass(param);
}
main() {
new Test();
}
解决方案
您似乎误解了const
and的意义final
。const
是针对在编译时已知的值,因此在您的情况下,如果您的所有值都是编译时常量,尽管有点毫无意义,但这是可能的:
class MyClass {
final int total;
const MyClass(this.total);
}
class Test {
static const int param = 10;
static const MyClass darkerText = MyClass(param);
}
main() {
new Test();
}
更正常的是使用final
变量,它可以在程序的生命周期中设置,但设置后不要更改,在这种情况下你会使用这样的东西:
class MyClass {
final int total;
MyClass(this.total);
}
class Test {
static int param = 10;
static final MyClass darkerText = MyClass(param);
}
main() {
new Test();
}
推荐阅读
- javascript - 如何修复 ajax 调用,以便我可以隐藏我的令牌?
- python - Django 中的“输入文件”出错。无法识别文件
- angular - 如何在无线电组更改之前获取无线电值?
- c# - 如何修复 InvalidOperationException:无法在线程中使用 Freezable System.Windows.Shell.WindowChrome,因为它们不能被冻结
- django - 用户登录后如何在导航栏中的登录链接上显示用户名
- laravel - 我正在尝试在 Laravel 中添加关系。它自己加入一对多关系
- android - Android ProGuard androidx 保持受保护的方法,但发布是公开的
- php - 为什么 ImageColorSet() 在 PHP 中不起作用?
- php - 如何在php中更改json数组格式?
- apache-kafka-streams - Kafka Streams 应用程序无法以 Cloud Foundry 中的“what():资源暂时不可用”开始