Flutter 函数的颤振默认值

Flutter 函数的颤振默认值,flutter,dart,dart-null-safety,Flutter,Dart,Dart Null Safety,我目前正在学习一门关于颤振的课程。它们为您提供了一个旧的存根项目(可空)。 当我尝试迁移到Flatter2.12.0或更高版本时,空安全性起作用。 我对它的工作原理有一个基本的了解,但我在谷歌或StackOverFlow上找不到 我有一个自定义卡片小部件。它需要一个颜色参数。我还需要它能够接收小部件子参数以及onPress函数,但我不想让它们成为必需的。 请帮忙。如何为小部件和函数创建默认值 class ReusableCard extends StatelessWidget { Reusa

我目前正在学习一门关于颤振的课程。它们为您提供了一个旧的存根项目(可空)。 当我尝试迁移到Flatter2.12.0或更高版本时,空安全性起作用。 我对它的工作原理有一个基本的了解,但我在谷歌或StackOverFlow上找不到

我有一个自定义卡片小部件。它需要一个颜色参数。我还需要它能够接收小部件子参数以及onPress函数,但我不想让它们成为必需的。 请帮忙。如何为小部件和函数创建默认值

class ReusableCard extends StatelessWidget {
  ReusableCard({@required this.cardColor, this.cardChild, this.onPress});
  final Color cardColor;
  final Widget cardChild;
  final Function onPress;

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: onPress,
      child: Container(
        child: cardChild,
        margin: EdgeInsets.all(10.0),
        decoration: BoxDecoration(
          borderRadius: BorderRadius.circular(10.0),
          color: cardColor,
        ),
      ),
    );
  }
}

我想这就是你需要的:

您可以将变量定义为

late final Widget cardChild; 
late final Function onPress;

然后在使用它们之前,在构造函数中初始化它们(或在状态对象中初始化initState)。

您可以将它们设置为可为空的字段,如下所示

  ReusableCard({required this.cardColor, this.cardChild, this.onPress});
  final Color cardColor;
  final Widget? cardChild;
  final VoidCallback? onPress;
  • 对于可空函数,请使用

    class FooWidget扩展了无状态Widget{
    
    final Function?onPressed;//可选参数的默认值必须为常量