Flutter onPressed Function

3

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

错误 - 参数类型'Function'不能被赋值给参数类型'void Function()?'. enter image description here

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),
      ),);
  }}

2
这个回答解决了你的问题吗? [在使用空安全后,参数类型'Function'无法分配给参数类型'void Function()'] (https://dev59.com/O1IG5IYBdhLWcg3wiQ55) - Yeasin Sheikh
2个回答

7

Function类型实际上是一个动态的Function类型。

ElevatedButton期望一个void Function来作为它的onPressed方法,实际上这个类型有一个别名typedefVoidCallback

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


1

将函数改为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),
      ),
    );
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接