Flutter中Expanded嵌套ListView.builder出现类型不匹配报错
报错根因定位
- 该报错和
Expanded嵌套ListView.builder的布局组合无关,本质是类型不匹配:你向ListView.builder的某个预期接收int类型的入参,传入了List<Map<String, dynamic>>类型的数值 - 绝大多数场景下错误出在
itemCount参数的赋值上:itemCount要求传入列表的总长度整数值,你错误把完整的数据源列表直接赋值给了该参数
常见错误写法示例
// 数据源定义 List<Map<String, dynamic>> userList = [ {'id': 1, 'name': '张三'}, {'id': 2, 'name': '李四'} ]; // 错误的组件写法 Expanded( child: ListView.builder( itemCount: userList, // 此处错误:传入了完整列表而非长度整数 itemBuilder: (context, index) { return Text(userList[index]['name']); } ) )
修复方案
- 修改
itemCount参数的取值为数据源的长度属性即可:
Expanded( child: ListView.builder( itemCount: userList.length, // 修正为传入列表长度的int值 itemBuilder: (context, index) { return Text(userList[index]['name']); } ) )
- 如果
itemCount已经赋值.length仍报错,依次检查itemExtent、semanticChildCount等其他接收int类型参数的属性,确认是否误传入了列表值
内容的提问来源于stack exchange,提问作者reza amini
相关产品推荐
相关产品推荐

