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

Flutter如何正确传递List到其他StatefulWidget类

问题说明

你在check_symptoms.dart中通过路由传_chosenItems的逻辑没有问题,报错来自results.dart中State类的参数接收写法错误:

  • Flutter框架要求createState()方法仅负责返回State实例,禁止在该方法内执行传参等逻辑,否则就会触发no_logic_in_createState警告,同时你给_ResultsState传入位置参数但没有定义对应的构造函数,才会出现参数数量不匹配的报错。
  • State类不需要手动接收Widget的传入参数,框架内置的widget属性可以直接获取关联的StatefulWidget上的所有公开属性,不需要手动传值。
修复方案

仅需要修改results.dart的代码即可,不需要调整check_symptoms.dart的传参逻辑:

  • 移除createState()方法里给_ResultsState传参的写法,直接返回无参的State实例
  • 在State的生命周期方法、build方法里,通过widget.list即可拿到传入的选中症状列表

修正后的results.dart完整代码:

import 'package:flutter/material.dart';

class Results extends StatefulWidget {
  final List list;
  // 补充key参数符合Flutter组件规范,不添加也不影响传参功能
  const Results({required this.list, Key? key}) : super(key: key);

  @override
  State<Results> createState() => _ResultsState();
}

class _ResultsState extends State<Results> {
  @override
  Widget build(BuildContext context) {
    // 通过widget.list直接访问传入的_chosenItems
    print(widget.list);
    return Scaffold(
      appBar: AppBar(title: const Text("结果页")),
      // 后续布局直接使用widget.list即可获取选中的症状数据
    );
  }
}

优化建议:如果你的列表存储的是字符串类型的症状名称,可以给List加上泛型约束,将final List list;改为final List<String> list;,可以避免不必要的类型报错。

内容的提问来源于stack exchange,提问作者Ahmed Azeez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:51:21