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
相关产品推荐
相关产品推荐

