参数类型 'Function?' 无法分配给参数类型 'void Function()?'

The argument type 'Function?' can't be assigned to the parameter type 'void Function()?'

我有一个重构的小部件,它有一个 onPressed。但是每当我尝试访问该函数时,我都会收到此错误:

The argument type Function? can't be assigned to the parameter type void Function()?

这是重构小部件的代码:

class DialogBox extends StatelessWidget {
  const DialogBox(
      {@required this.contentTitle, @required this.labelText, this.onpressed});
  final String? contentTitle;
  final String? labelText;
  final Function? onpressed;

  @override
  Widget build(BuildContext context) {
    return new AlertDialog(
      title: Text(
        contentTitle!,
        style: TextStyle(
          color: Theme.of(context).colorScheme.secondary,
        ),
      ),
      content: new SingleChildScrollView(
        child: ListBody(
          children: <Widget>[
            TextFormField(
              decoration: InputDecoration(
                border: OutlineInputBorder(),
                labelText: labelText,
              ),
              keyboardType: TextInputType.text,
            ),
          ],
        ),
      ),
      actions: [
        new TextButton(
          child: new Text(
            'Confirm',
            style: TextStyle(
              color: Theme.of(context).colorScheme.secondary,
            ),
          ),
          onPressed: 
            onpressed, //getting the error here.
         
        ),
        new TextButton(
          child: new Text(
            'Cancel',
            style: TextStyle(
              color: Theme.of(context).colorScheme.secondary,
            ),
          ),
          onPressed: () {
            Navigator.of(context).pop();
          },
        ),
      ],
    );
  }
}

请大神解释一下这个问题的原因。任何帮助将不胜感激。

对于 onpressed 变量,您需要使用 Function()? 数据类型而不是 Function?

final Function()? onpressed;

此外,删除 ; 并将 , 放在以下行中:

onPressed: onpressed,

这是在声明一个函数类型的参数?与类型 void Function()? 不同。这是因为函数类型的参数?与 void Function() 类型有很大不同吗?因为前者可以有任何 return 值,但后者明确地 returns 非(注意:非不同于 null)。

要解决此问题:尝试更改声明函数?在上面的函数代码中?无效功能()?。

像这样:

class DialogBox extends StatelessWidget {
   const DialogBox(
    {@required this.contentTitle, @required this.labelText, 
this.onpressed});
final String? contentTitle;
final String? labelText;
final void Function()? onpressed;

 ...
}