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

Flutter中点击按钮获取数组内对象值及在函数与Text组件中使用

Flutter中使用answers数组内对象值的实现方案

首先修正数组类型,让类型更明确(原代码中List<Object>可改为List<Map<String, String>>,避免后续类型转换的冗余操作):

List<Map<String, String>> answers = [
  {
    'a': 'Red',
    'b': 'Blue',
    'c': 'Yellow',
    'd': 'Black',
  },
];

1. 在Text组件中使用数组内的对象值

直接通过数组索引+Map键获取对应值,比如显示选项a的内容:

ElevatedButton(
  onPressed: () => pressAnswer(),
  // 显示第一个对象中键'a'对应的值,添加空值兜底
  child: Text(answers[0]['a'] ?? '无数据'),
)

如果需要展示所有选项,可拼接字符串:

child: Text(
  '所有选项:${answers[0]['a']}, ${answers[0]['b']}, ${answers[0]['c']}, ${answers[0]['d']}'
),

2. 在pressAnswer函数中获取对象值

定义pressAnswer函数,通过数组索引访问内部Map,可获取单个值或遍历所有键值对:

void pressAnswer() {
  // 取出数组中第一个对象
  Map<String, String> currentAnswer = answers[0];
  
  // 获取单个键对应的值
  String optionC = currentAnswer['c']!;
  print('选项c的值:$optionC');
  
  // 遍历所有键值对并打印
  currentAnswer.forEach((key, value) {
    print('键:$key,值:$value');
  });
}

完整可运行示例代码

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('示例')),
        body: const AnswerButton(),
      ),
    );
  }
}

class AnswerButton extends StatefulWidget {
  const AnswerButton({super.key});

  @override
  State<AnswerButton> createState() => _AnswerButtonState();
}

class _AnswerButtonState extends State<AnswerButton> {
  List<Map<String, String>> answers = [
    {
      'a': 'Red',
      'b': 'Blue',
      'c': 'Yellow',
      'd': 'Black',
    },
  ];

  void pressAnswer() {
    Map<String, String> currentAnswer = answers[0];
    // 打印单个值
    print('选项b的值:${currentAnswer['b']}');
    // 遍历所有键值对
    currentAnswer.forEach((key, value) {
      print('$key: $value');
    });
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: ElevatedButton(
        onPressed: pressAnswer,
        child: Text('当前选项A:${answers[0]['a']}'),
      ),
    );
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 01:11:05