无法在 Flutter 中用阴影重构颜色

Posted

技术标签:

【中文标题】无法在 Flutter 中用阴影重构颜色【英文标题】:cant refactor color with shade in Flutter 【发布时间】:2021-11-24 07:00:12 【问题描述】:

我正在尝试重构我的代码。这是我的代码,我遇到了问题

import 'package:flutter/material.dart';

class AppBarButton extends StatelessWidget 
  const AppBarButton(
      Key? key,
      required this.buttnoAction,
      this.buttonColor = Colors.grey[300], // the error getting is " The default value of an optional parameter must be constant. " 
      required this.iconLogo,
      this.iconSize = 15,)
      : super(key: key);

  final void Function() buttnoAction;
  final Color buttonColor;
  final IconData iconLogo;
  final double iconSize;

  @override
  Widget build(BuildContext context) 
    return Container(
      child: IconButton(
        onPressed: buttnoAction,
        icon: Icon(
          iconLogo,
          color: buttonColor,
          size: iconSize,
        ),
      ),
    );
  

这里我在使用Colors.grey 时没有收到错误,但无法使用Colors.grey[300] 如何解决此问题。 为什么我会收到此错误

【问题讨论】:

【参考方案1】:

试试这个。

this.buttonColor = Colors.grey, 

或者,

this.buttonColor =Color(0xFFE0E0E0) //This is equal to grey[w300]

更多详情https://dart.dev/tools/diagnostic-messages#non_constant_default_value

【讨论】:

A code-only answer is not high quality。虽然此代码可能很有用,但您可以通过说明其工作原理、工作方式、何时应该使用以及它的局限性来改进它。请edit您的回答包括解释和相关文档的链接。 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:

不完全确定,但可能是因为 Colors.grey 是一个 const(常量),而 Colors.grey[300] 不是一个 const,因此不被接受为可选参数的默认值。

如果你还想使用 Colors.grey[300] 作为默认值,你需要将其设为 const,这可以通过使用相应的颜色代码来完成:

const Color(0xFFE0E0E0)

所以改变这个

this.buttonColor = Colors.grey[300],

进入这个

this.buttonColor = const Color(0xFFE0E0E0),

【讨论】:

以上是关于无法在 Flutter 中用阴影重构颜色的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 绘制实践 | 路径篇 - 阴影模糊

Flutter - 更改 OutlineInputBorder 的边框颜色

Flutter 尺寸缩放形状颜色阴影变换动画

Flutte VS RN

Flutter之Decoration(边框圆角阴影形状渐变背景图像等)

flutte学习-编译模式