首页 > 解决方案 > 颤振中的功能

问题描述

我尝试在小部件中使用函数,但收到此错误错误:无法将参数类型“函数”分配给参数类型“无效函数()?”。

我在这里搜索,看到有人建议使用我在代码中设置的相同方法,那么问题是什么?

import 'package:flutter/material.dart';

class ReusableCard extends StatelessWidget {
  ReusableCard(
      {required this.colour, required this.cardChild, required this.onPress});
  final Color colour;
  final Widget cardChild;
  final Function onPress;

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: onPress,
      child: Container(
        child: cardChild,
        margin: EdgeInsets.all(15.0),
        decoration: BoxDecoration(
          borderRadius: BorderRadius.circular(10.0),
          color: colour,
        ),
      ),
    );
  }
}

标签: flutterandroid-studiodart

解决方案


默认情况下,Function类型是没有参数的动态类型值返回函数。

通常,Flutter 期望其按钮内部有 void 回调,这意味着它期望一个void Function没有参数的类型。

解决此问题的一种常见、灵活且易读的方法是使用 void 函数包装您的函数,例如:

() => myFunction()

即使您的函数非常不同(例如,它有一些参数),这也会起作用,从而使您的代码更加灵活。

() => myFunctionThatAcceptsAnInteger(5)


推荐阅读