Flutter将JSON列表映射TabBar报错:期望String类型却获JsonMap
解决Flutter TabBar映射JSON列表时的类型错误问题
报错原因
你的dataResponse中每个元素是JsonMap类型(比如{"JSON1": {...}}),但Text组件要求传入String类型参数,直接把Map传给Text会触发类型不匹配错误。
解决方案
要显示"JSON1"作为Tab标题,需要从每个Map中提取键名(也就是"JSON1")——这才是你需要的字符串标题。
修正后的代码
List dataResponse = [{"JSON1": {"key1": "val1", "key2": "val2"}}]; TabBar( tabAlignment: TabAlignment.start, indicatorSize: TabBarIndicatorSize.tab, dividerColor: Theme.of(context).dividerColor, controller: _tabController, indicatorColor: Theme.of(context).colorScheme.primary, labelColor: Theme.of(context).colorScheme.primary, unselectedLabelColor: Theme.of(context).primaryColorDark.withOpacity(0.8), isScrollable: Responsive.isDesktop(context) ? true : true, // 关键修正:提取Map的键名作为Text内容 tabs: dataResponse.map((e) => Text(e.keys.first.toString())).toList(), );
补充说明
- 如果你的JSON数据中每个元素的键名固定为"JSON1",也可以直接写
Text("JSON1"); - 使用
e.keys.first能适配动态变化的键名,当后续JSON结构中出现其他键名时,无需修改代码就能自动显示对应的标题。
内容的提问来源于stack exchange,提问作者Pari07
相关产品推荐
相关产品推荐

