在onTap 方法中直接调用函数还是在Dart/Flutter 中使用fat 运算符?

Call function in onTap method directly or using fat operator in Dart/Flutter?

我在我的应用程序中创建了一个功能,可以根据我的需要制作自定义小部件。这是函数的代码

Widget customCircularButton(
  {String title, String subTitle, String img, void Function() onTap}) {
return Column(
  mainAxisSize: MainAxisSize.min,
  children: [
    GestureDetector(
      onTap: onTap,
      child: CircleAvatar(
        radius: screenWidth(context) / 6,
        backgroundColor: pColor,
        child: CircleAvatar(
          radius: screenWidth(context) / 6 - 2,
          backgroundColor: Colors.white,
          backgroundImage: Image.asset(img).image,
        ),
      ),
    ),
    Container(
      margin: EdgeInsets.all(5),
      child: Text(
        title,
        style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20),
      ),
    ),
    Container(
        margin: EdgeInsets.all(5),
        width: screenWidth(context) / 3,
        child: Text(
          subTitle,
          style: TextStyle(fontWeight: FontWeight.w300, fontSize: 12),
          textAlign: TextAlign.center,
        ))
  ],
);

}

所以为了将这个函数调用到我的小部件中,我这样称呼它

Row(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: [
          customCircularButton(
            title: 'Donate',
            subTitle: 'Donate/Buy food for needy',
            img: 'assets/images/donate-food.png',
            onTap: donateDiaolg,
          ),
          customCircularButton(
              title: 'Become Volunteer',
              subTitle: 'Distribute food to the needy',
              img: 'assets/images/become-volunteer.png',
              onTap: () {
                Navigator.push(
                    context,
                    MaterialPageRoute(
                        builder: (context) => BecomeVolunteer()));
              }),
        ],
      ),

这里的 donateDialog 是另一个打开对话框的函数。

void donateDiaolg() {
showDialog(..implementation..);}

所以我的疑问是应该使用 fat 运算符来调用 donateDialog 函数还是像上面的代码那样调用它。

我的基本问题是我应该使用这个

onTap: () => donateDialog(),

或这个

onTap: donateDialog(),

或者这样可以吗

onTap: donateDialog

如果有人能给我解释一下这三个函数调用就更好了。

这取决于函数签名。例如 onTap 属性 需要不带参数的函数。如果您的自定义函数相同,您可以直接使用您的函数名称,如 onTap: myFunc。如果您的函数签名采用 1 个或多个参数,您应该将空函数传递给 onTap 并通过它调用您的函数。