【问题标题】:dart Arguments of a constant creation must be constant expressionsdart 常量创建的参数必须是常量表达式
【发布时间】:2018-10-26 00:52:52
【问题描述】:

在使用 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));

请教教我吧!

【问题讨论】:

    标签: dart flutter


    【解决方案1】:

    因为颜色是在一个类中定义的,所以你必须执行如下操作:

    AppStyle.colorGreen
    

    日期:

    哦,我明白了,您使用的是cont TextStyle。因此,您可以删除const 或为您的AppStyle 添加const

    我只是从TextStyle 中删除了const

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

    Understand how const works.

    【讨论】:

    • 谢谢你的回答,我也和你一样试过了,但是有问题。static TextStyle listRowTitle = const TextStyle(fontSize: 20.0, color: AppStyle.colorGreen);错误信息:[dart] Invalid constant value。类 AppStyle
    • 谢谢。我的问题已经解决了。我想我应该更深入地研究飞镖的语法。最后,你能帮我解释一下原因吗?
    • @sunmoon 你必须了解constnew 阅读此stackoverflow.com/questions/47996420/…
    • 问题是您将变量值(colorGreen)声明为常量小部件的属性(颜色)。常量小部件不能变化,改变。
    【解决方案2】:

    问题是您将变量值(colorGreen)声明为常量小部件的属性(颜色)。常量小部件不能变化,改变。

    只需从您的小部件中删除修饰符 const

    static TextStyle listRowTitle = const TextStyle(fontSize: 20.0, color: colorGreen);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      • 2013-02-09
      • 1970-01-01
      • 2014-11-13
      • 1970-01-01
      • 2021-03-08
      相关资源
      最近更新 更多