Error in onPressed Trying to pass onPressed Function but getting Error.
Error - The argument type 'Function' can't be assigned to the parameter type '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),
),);
}}
CodePudding user response:
The Function
type is actually a dynamic Function
type.
The ElevatedButton
expects a void Function
to its onPressed
method, which there is actually a type that is a typedef
for it: VoidCallback
So, replace your Function onPressed
with VoidCallback onPressed
.
CodePudding user response:
Change Function to 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),
),
);
}
}