Flutter (Dart) 可选参数具有数据类型为 Function 的默认值?

问题描述 投票:0回答:1

所以我尝试为我的项目创建一个自定义小部件,并且该类的某些实例将需要 onFinish 函数。但是我似乎无法为函数数据类型设置默认值,它一直说:“可选参数的默认值必须是常量。”

我想要实现的目标有可能吗?谢谢

这是我的代码,这样你就可以看到我的内容:

class MyWidget extends StatelessWidget {
  const MyWidget({
    super.key,
    this.title = "",
    this.message = "",
    this.actions = const [],
    this.onFinished = () {},
  });

  final String title;
  final String message;
  final List<Widget> actions;
  final Function onFinished;

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}
flutter dart optional-parameters
1个回答
0
投票

您可以将 Function 设置为可为空,而不是将 Function 作为必需参数,并且由于大多数 onClick 回调都接受可为 null 的函数,因此您将很容易处理。

class MyWidget extends StatelessWidget {
  const MyWidget({
    super.key,
    this.title = "",
    this.message = "",
    this.actions = const [],
    this.onFinished,
  });

  final String title;
  final String message;
  final List<Widget> actions;
  final Function? onFinished;

  @override
  Widget build(BuildContext context) {
    return InkWell(onTap: onFinished, child: Container());
  }
}

或者如果你想使用 onFinished Function 作为回调函数,那么你可以这样使用它。

onFinished?.call()

© www.soinside.com 2019 - 2024. All rights reserved.