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

cant refactor color with shade in Flutter

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

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] 如何解决这个问题。 为什么我会收到此错误

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

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

const Color(0xFFE0E0E0)

所以改变这个

this.buttonColor = Colors.grey[300],

进入这个

this.buttonColor = const Color(0xFFE0E0E0),

试试这个。

this.buttonColor = Colors.grey, 

或者,

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

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