无状态小部件,具有必需值和可选值以及 null 安全性

Mar*_*ing 4 widget dart flutter

所以我试图创建一个可以在我的 flutter 应用程序中使用的自定义小部件。创建此小部件时,我希望始终选择一种颜色(因此是所需的值),但我希望保持 cardChild 和 onpres 值可选。我该怎么做呢?我尝试提供一个空容器和空函数作为默认值,但随后出现错误

错误:可选参数的默认值必须是常量。(non_constant_default_value 位于 [untitled1] lib/Components/reusable_card.dart:6)

这是我的小部件构造函数:

class ReusableCard extends StatelessWidget {ReusableCard(
{required this.colour, this.cardChild = Container(), this.onPress = () {}});

  final Color colour;
  final Widget cardChild;
  final Function onPress;

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () {
        onPress;
      },
      child: Container(
        child: cardChild,
        margin: EdgeInsets.all(15.0),
        decoration: BoxDecoration(
          borderRadius: BorderRadius.all(Radius.circular(15.0)),
          color: colour,
        ),
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

Ham*_*qui 6

你可以使用以下方法

    class ReusableCard extends StatelessWidget {ReusableCard(
        {required this.colour, this.cardChild, this.onPress});
    
    final Color colour;
    final Widget? cardChild;
    final Function? onPress;
    
    @override
    Widget build(BuildContext context) {
      return GestureDetector(
        onTap: () {
          if(onPress != null){
            onPress!();
          }
        },
        child: Container(
          child: cardChild ?? Container(),
          margin: EdgeInsets.all(15.0),
          decoration: BoxDecoration(
            borderRadius: BorderRadius.all(Radius.circular(15.0)),
            color: colour,
          ),
        ),
      );
    }
  }
Run Code Online (Sandbox Code Playgroud)