Dart常量的创建参数必须是常量表达式

5

在使用Flutter开发应用时,我希望定义一些常见的样式。

代码如下:

import 'package:flutter/material.dart';
class AppStyle {
  static Color colorRed = const Color(0xffe04f5f);
  static Color colorWhite = const Color(0xffffffff);
  static Color colorGreen = const Color(0xff1abc9c);
}

现在,我想定义一个新的样式。
static TextStyle listRowTitle = const TextStyle(fontSize: 20.0, color: colorGreen);

如果您写到上述位置,那么colorGreen将会出现问题。错误信息为:
[dart] Invalid constant value.
[dart] Arguments of a constant creation must be constant expressions.
Color colorGreen

如果您将colorGreen更改为Color(0xff1abc9c),那就没有问题了!
static TextStyle listRowTitle = const TextStyle(fontSize: 20.0, color: Color(0xff1abc9c));

请教我,让我来教你!

2个回答

3

由于颜色是在类中定义的,您需要执行以下操作:

AppStyle.colorGreen

更新:

哦,我明白了,你正在使用 cont TextStyle。所以,你可以删除 const 或者为你的 AppStyle 添加 const

我只是从 TextStyle 中删除了 const

TextStyle(fontSize: 20.0, color: AppStyle.colorGreen)

了解const的工作原理。


感谢您的回答,我按照您所说的尝试了,但出现了问题。静态文字样式 listRowTitle = const TextStyle(fontSize: 20.0, color: AppStyle.colorGreen); 错误信息为:[dart]无效的常量值。类AppStyle。 - sunmoon
谢谢。我的问题已经解决了。我想我应该更深入地了解Dart语法。最后,你能帮我解释一下为什么吗? - sunmoon
@sunmoon 你需要理解 constnew,阅读这篇文章 https://dev59.com/-FYN5IYBdhLWcg3wFkoL - Blasanka
1
问题在于您将一个变量值(colorGreen)声明为一个常量小部件(widget)的属性(color)。常量小部件是不能变化、改变的。 - egidiocs

0
问题在于您正在将变量值(colorGreen)声明为常量小部件的属性(color)。常量小部件不能变化或更改。
只需从小部件中删除修饰符“const”即可。
static TextStyle listRowTitle = const TextStyle(fontSize: 20.0, color: colorGreen);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接