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
,实际上有一个类型是 typedef
:VoidCallback
因此,将您的 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),
),
);
}
}
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
,实际上有一个类型是 typedef
:VoidCallback
因此,将您的 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),
),
);
}
}