1

在我的小部件中,我将函数回调作为参数传递给小部件:

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 }
),
4

0 回答 0