Flutter onPressed 函数

Flutter onPressed Function

onPressed 错误 尝试传递 onPressed 函数但出现错误。

错误 - 参数类型 'Function' 无法分配给参数类型 'void Function()?'。

class CircleButton extends StatelessWidget {
  CircleButton({required this.icon, required this.onPressed});
  final IconData icon;
  final Function onPressed;                 [![Error][1]][1]//Here
  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      child: Icon(icon),
      onPressed: onPressed,
      style: ElevatedButton.styleFrom(
        elevation: 6.0,
        primary: Color(0xFF4C4F5E),
        shape: CircleBorder(),
        padding: EdgeInsets.all(15),
      ),);
  }}

Function类型实际上是dynamic Function类型

ElevatedButton 期望其 onPressed 方法有一个 void Function,实际上有一个类型是 typedefVoidCallback

因此,将您的 Function onPressed 替换为 VoidCallback onPressed

将函数更改为 VoidCallback

class CircleButton extends StatelessWidget {
  CircleButton({required this.icon, required this.onPressed});
  final IconData icon;
  final VoidCallback onPressed;   //Change Function to VoidCallback
  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: onPressed,
      child: Icon(icon),
      style: ElevatedButton.styleFrom(
        elevation: 6.0,
        primary: Color(0xFF4C4F5E),
        shape: CircleBorder(),
        padding: EdgeInsets.all(15),
      ),
    );
  }
}