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

Flutter Dart报错:实参数量超出预期(预期0个,传入1个)

错误修复方案

问题原因

你定义的answerQuestion是VoidCallback类型,该类型代表无参数、无返回值的函数,但调用时传入了answer['score']作为参数,导致参数数量不匹配报错。

解决步骤

  1. 调整answerQuestion的函数类型,从VoidCallback改为可接收对应参数的类型(比如score是整数就用Function(int),不确定类型则用Function(Object));
  2. 同步更新构造函数的参数类型定义;
  3. 确保调用时传入的参数类型与定义一致。

修改后的完整代码:

import 'package:flutter/material.dart';
import './answer.dart';
import './question.dart';

class Quiz extends StatelessWidget {
  final List<Map<String, Object>> questions;
  final int questionIndex;
  // 调整为接收int类型参数的函数(假设score是整数)
  final Function(int) answerQuestion;
  Quiz({
    required this.questions,
    required this.questionIndex,
    required this.answerQuestion,
  });

  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        Question((questions[questionIndex]['questionText']) as String),
        ...(questions[questionIndex]['answers'] as List<Map<String, Object>>)
            .map((answer) {
          // 将score转为对应类型后传入
          return Answer(
            () => answerQuestion(answer['score'] as int), 
            answer['text'] as String
          );
        }).toList()
      ],
    );
  }
}

如果你的score不是整数,只需将Function(int)替换为对应类型即可(比如Function(String)或Function(num))。

内容的提问来源于stack exchange,提问作者Tooraj rezaei

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:22:37