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

Flutter如何通过传入变量名返回指定变量?

不用if/switch,通过传入名称获取对应关卡列表的实现方案

完全可以做到,核心思路是用Map映射来存储各个关卡的列表,通过键(关卡名称/标识)直接取值,彻底避开条件判断。

具体实现代码(Dart)

// 存储所有关卡问题列表的映射表,键为关卡标识,值为对应列表
final Map<String, List<Map<String, Object>>> levelQuestionMap = {
  'level1': const [
    {
      'question': '德国啤酒节(Oktoberfest)主要在哪个月份举办?',
      'answers': [
        {'answerText': '一月', 'score': false},
        {'answerText': '十月', 'score': false},
        {'answerText': '九月', 'score': true},
      ],
    },
    {
      'question': '谁为《刺猬索尼克3》创作了音乐?',
      'answers': [
        {'answerText': '布兰妮·斯皮尔斯', 'score': false},
        {'answerText': '提姆巴兰', 'score': false},
        {'answerText': '迈克尔·杰克逊', 'score': true},
      ],
    },
    {
      'question': '在美国佐治亚州,用叉子吃什么是违法的?',
      'answers': [
        {'answerText': '汉堡', 'score': false},
        {'answerText': '炸鸡', 'score': true},
        {'answerText': '披萨', 'score': false},
      ],
    },
  ],
  // 新增关卡只需在这里添加键值对
  'level2': const [
    // 关卡2的问题列表
  ],
};

// 获取指定关卡的问题列表
List<Map<String, Object>> getLevelQuestions(String levelKey) {
  // 若传入的关卡不存在,返回空列表避免报错,也可根据需求抛出提示
  return levelQuestionMap[levelKey] ?? [];
}

使用方式

点击关卡1时,直接调用getLevelQuestions('level1')就能拿到对应的问题列表。后续新增关卡,只需要在levelQuestionMap里添加新的键值对即可,不需要修改函数逻辑。

原代码的问题说明

你原来的代码里,_1未声明类型且未正确关联到传入的参数s,直接返回s根本无法实现“根据名称取列表”的逻辑。用Map映射的方式可以完美解决这个问题,同时让代码扩展性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 10:21:37