常见错误:The argument type 'Function' can't be assigned to the parameter type 'void Function()?'.
int num1 = 1;
EmojiItem(
name: item.name,
unicode: item.unicode,
onEmojiClick:(){
print('打印');//
},
);
class EmojiItem extends StatelessWidget {
EmojiItem({this.name='', this.unicode=0,this.onEmojiClick});
String? name;
int? unicode;
Function()? onEmojiClick;//Function? btnClick;很容易写成这样
@override
Widget build(BuildContext context) {
return InkWell(
onTap: (){
if (onEmojiClick != null) {
onEmojiClick!();//执行打印
}
},
child: Container(
child: Text(
String.fromCharCode(unicode!),
style: TextStyle(
fontSize: 26,
),
),
),
);
}
}
函数回调方法1
Widget butttonRow(String tit, num1){
return InkWell(
onTap: ()=> addButtonClick(num1),
child: Text('$tit'),
);
}
addButtonClick(int type){
print(type);
}
@override
Widget build(BuildContext context) {
return Column(
children: [
butttonRow(
"入口",
0,
),
],);
}
函数回调方法2
Widget butttonRow(String tit,VoidCallback bnClick){
return InkWell(
onTap: bnClick,
child: Text('$tit'),
);
}
addButtonClick(){
print('----------');
}
@override
Widget build(BuildContext context) {
return Column(
children: [
SizedBox(height: 100,),
butttonRow(
"入口",
(){
print("回调执行了");
},
),
],);
}