You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter报错参数类型Function无法赋值给void Function()?该如何解决

问题解决方法

错误原因

Dart的强类型校验机制要求ElevatedButton组件的onPressed参数必须接收void Function()?类型(无参数、无返回值的可选函数对象)。你在answer.dart中将回调参数声明为通用Function类型,通用Function没有限定参数和返回值格式,不符合onPressed的类型要求,因此触发编译报错。

修复步骤

仅需要修改answer.dart中的selectHandler变量的类型声明即可,有两种可选写法:

写法1:直接明确函数签名

将

final Function selectHandler;

修改为

final void Function() selectHandler;

写法2:使用Flutter内置别名

Flutter已经预置了VoidCallback类型作为void Function()的别名,也可以写成:

final VoidCallback selectHandler;

修改后的完整answer.dart代码

import 'package:flutter/material.dart';

class Answer extends StatelessWidget {
  final VoidCallback selectHandler;
  Answer(this.selectHandler);

  @override
  Widget build(BuildContext context) {
    return Container(
      width: double.infinity,
      child: ElevatedButton(
        child: Text('Ans 1'),
        onPressed: selectHandler,
        style: ElevatedButton.styleFrom(
          primary: Colors.red,
        ),
      ),
    );
  }
}

补充:如果你的项目开启了空安全且存在回调不传的场景,也可以给类型加可空标记final VoidCallback? selectHandler;,直接传入onPressed即可适配可空要求。

内容的提问来源于stack exchange,提问作者Vineet Bhargava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:18:00