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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 10:42:17