在我的小部件中,我将函数回调作为参数传递给小部件:
onTap: onTapRestaurantItemCallback
在屏幕小部件中,其中包含上面的小部件,然后我执行函数回调:
onTapRestaurantItemCallback: () { // Handling the callback method }
我正在使用 Lint for Dart/Flutter 来检查我的代码: https ://pub.dev/packages/lint
linter 对我的函数参数不满意并给我一个错误,我违反了规则:
argument_type_not_assignable
“参数类型 'Function' 不能分配给参数类型 'void Function()'” https://dart.dev/tools/diagnostic-messages#argument_type_not_assignable
显然问题是小部件“onTap”期望无效,而回调返回一个未来。
我可以通过编写以下内容使小部件中的错误消失:
onTap: () => onTapRestaurantItemCallback
但是后来我的函数回调停止工作。
你知道我如何像我一样将函数回调传递给我的小部件,并且仍然保留 argument_type_not_assignable lint 规则吗?
下面我在上面描述的场景中粘贴了更完整的代码:
// WIDGET USED BY OTHER WIDGET BELOW
class RestaurantItem extends StatelessWidget {
// FUNCTION CALLBACK
final Function onTapRestaurantItemCallback;
const RestaurantItem({
// FUNCTION CALLBACK
@required this.onTapRestaurantItemCallback,
});
@override
Widget build(BuildContext context) {
return GestureDetector(
// FUNCTION CALLBACK
onTap: onTapRestaurantItemCallback,
// CONTAINING SCREEN WIDGET - USING WIDGET ABOVE
// .... //
RestaurantItem(
// FUNCTION CALLBACK
onTapRestaurantItemCallback: () => { // Handling the callback method }
),