Flutter 使用“.withOpacity”导致“该字段被初始化为非常数值”
Posted
技术标签:
【中文标题】Flutter 使用“.withOpacity”导致“该字段被初始化为非常数值”【英文标题】:Flutter using ".withOpacity" leads to "the field is initialized with a non constant value" 【发布时间】:2021-12-16 11:26:05 【问题描述】:我有一个自己的应用颜色类:
import 'package:flutter/material.dart';
@immutable
class AppColors
final objectRow=const Color(0xFFFFFFFF).withOpacity(0.5);
const AppColors();
如果我不使用.withOpacity
,构造函数可以是const,但如果我使用它,我必须删除const
。我不明白为什么...请向我解释为什么在编译时无法知道不透明度
【问题讨论】:
【参考方案1】:在上面的代码中,const Color(0xFFFFFFFF)
是一个常量,但 withOpacity(0.5)
在运行时会创建一个具有不同不透明度的新 Color
值。
您不需要调用withOpacity
来调整颜色的不透明度,因为颜色中的前两个十六进制数字已经指的是不透明度。您可以通过调整const Color(0x80FFFFFF)
这些数字来达到预期的效果。
【讨论】:
以上是关于Flutter 使用“.withOpacity”导致“该字段被初始化为非常数值”的主要内容,如果未能解决你的问题,请参考以下文章