はじめに
Flutterで関数を引数として渡した時、次のようなエラーが出ることがあります。
class CustomTextFormField extends StatelessWidget{
const CustomTextFormField({
Key key,
this.validator
})
final Function() validator;
@override
Widget build(BuildContext context){
return TextFormField(
validator: validator, // <- ここでエラーが出る
);
}
}
error: The argument type 'dynamic Function()' can't be assigned to the parameter type 'String Function(String)'.
メッセージ通り、String Function(String)
型な関数が必要なのに、dynamic Function()
型として関数を受け取っているためエラーがでています。
対処方法
関数の引数・返り値を指定してあげれば、エラーが解消します。
class CustomTextFormField extends StatelessWidget{
const CustomTextFormField({
Key key,
this.validator
})
final String Function(String) validator;// <- 返り値と引数を指定する
@override
Widget build(BuildContext context){
return TextFormField(
validator: validator,
);
}
}