flutter - 参数类型 'Function?' 无法分配给参数类型“void Function()?”

标签 flutter dart

这是我的错误代码的屏幕截图

此代码是我的输入页面:

  child:  ReusableCard(
    onPress: (){
      setState(() {
        selectGender=Gender.male;
      });
    },
      cardChild: IconContent(icon: FontAwesomeIcons.mars,label: 'Male',),
      colour: selectGender==Gender.male? activeCardColor:inactivecolor,
    ),

另一页:onpress 功能不起作用。

class ReusableCard extends StatelessWidget {

  ReusableCard({@required this.colour,this.cardChild,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),
        decoration: BoxDecoration(
          color: colour,
          borderRadius: BorderRadius.circular(10.0),
        ),
      ),
    );
  }
}

我提供屏幕截图以便您更好地理解

最佳答案

因为小部件的 onTap 被定义为 void Function()? onTap,需要返回该值才能使用(作为回调)。所以使用:

onTap: ()=> onPress,

您还可以将onPress定义为VoidCallback?,那么您只需:

onTap: onPress,

关于flutter - 参数类型 'Function?' 无法分配给参数类型“void Function()?”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70458163/

相关文章:

firebase - 如何从子集合文档中获取数据,firestore(Flutter)

flutter - 如何在 Flutter 应用程序中集成谷歌移动广告

json - Map.mapValues((value)=> newValue)是否有Dart惯用法,使所有键保持不变?

flutter - 在表单窗口小部件中放置扩展的位置

windows - Flutter 卡在 'flutter' 命令上 - 没有输出到控制台,并且永远不会完成

firebase - 如何在用户注销时终止通知

flutter - 可变大小的 ListView 或 SingleChildScrollView

google-maps - 断言失败 : 'latitude != null' : is not true. 我已经尝试了几件事

flutter - 如何在Flutter中制作顶部导航栏?

function - 在 Dart 中定义函数时,如何将参数的默认值设置为 { },即空 Map?