将回调函数作为参数传递给小部件,同时保持Lint规则“ argument_type_not_assignable”

问题描述

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

onTap: onTapRestaurantItemCallback

在包含上面小部件的屏幕小部件中,然后执行函数回调:

onTapRestaurantItemCallback: () { // Handling the callback method }

我正在使用Lint for Dart / Flutter检查我的代码https://pub.dev/packages/lint

lint对我的功能参数不满意,并给我一个错误,我违反了规则:

argument_type_not_assignable

“不能将参数类型'Function'分配给参数类型'void Function()'” https://dart.dev/tools/diagnostic-messages#argument_type_not_assignable

显然,问题在于小部件“ onTap”期望为空,而回调函数返回的是Future。

我可以通过以下方式使小部件中的错误消失:

onTap: () => onTapRestaurantItemCallback

但是我的函数回调停止工作了。

您知道我如何像我一样将函数回调传递给我的小部件并仍然保持 arguments_type_not_assignable 皮棉规则?

下面,我在上述情况下粘贴了更完整的代码

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)