Flutter中如何将Map列表传入Column或Row组件?
解决方法
首先先修正你原始列表的语法错误:
final list = [ { 'name': 'abc', 'age': '25', 'gender': 'M', }, { 'name': 'def', 'age': '26', 'gender': 'F', }, { 'name': 'ghi', 'age': '25', 'gender': 'M', }, ];
接下来是展示内容的函数,需要接收这个包含Map的列表作为参数,遍历每个Map渲染对应文本,示例如下:
Widget buildUserList(List<Map<String, String>> userList) { return Column( children: userList.map((user) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(user['name']!), Text(user['age']!), Text(user['gender']!), const SizedBox(height: 16), // 分隔每个用户的信息 ], ); }).toList(), ); }
关键说明:
- 函数参数指定类型为
List<Map<String, String>>,明确数据结构,避免类型歧义 - 用
map()遍历列表中的每个用户Map,将每个Map转换为一组Text Widget - 通过
user['key']取出对应值,!用于确认键必然存在;如果不确定键是否存在,可替换为user['key'] ?? '默认值'处理空值 - 最后用
toList()将map()返回的Iterable转为Widget列表,适配Flutter的Widget集合要求
你可以在Widget的build方法中这样调用:
@override Widget build(BuildContext context) { return Scaffold( body: buildUserList(list), ); }
内容的提问来源于stack exchange,提问作者Abdul Moeez
相关产品推荐
相关产品推荐

