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

Flutter中如何用ListView展示onScan获取的item.model_Name数据?

解决Flutter中用ListView展示解析后数据的问题

第一步:先把解析的数据存起来

你现在的onScan只是打印数据,没有保存,UI根本拿不到这些数据。首先在你的scanDeviceProvider里加个列表变量来存解析后的item:

class ScanDeviceProvider extends ChangeNotifier {
  // 保留你原来的其他代码
  bool getVisible = ...; // 你的现有变量

  // 新增:存储解析后的item列表
  List<Data> items = [];
}

然后修改onScan,把解析出来的item存到这个列表里,还要通知UI更新:

Future<void> onScan(dynamic data) async {
  var dataResponse = DataResponse.fromJson(data);
  List<dynamic> dt = jsonDecode(jsonEncode(dataResponse.data).toString());
  
  // 先清空旧数据,再添加新数据
  scanDeviceProvider.items.clear();
  for (var element in dt) {
    var item = Data.fromJson(element);
    scanDeviceProvider.items.add(item);
    print(item.model_Name);
  }
  // 通知UI数据更新,这步很重要
  scanDeviceProvider.notifyListeners();
}

第二步:在指定位置添加ListView.builder

原来的SizedBox里的Container直接换成ListView,注意Column里放ListView必须处理高度问题,要么用Expanded包裹让它占满剩余空间,要么给ListView加shrinkWrap: true(适合数据量小的情况)。这里用Expanded更稳妥:

return Container(
  color: Palette.scienceBlue,
  child: Visibility(
    replacement: DevicePage(),
    visible: scanDeviceProvider.getVisible,
    child: Column(
      children: [
        const AppBarSideBarAndAddButton(),
        // 用Expanded包裹ListView,解决高度报错问题
        Expanded(
          child: ListView.builder(
            // 列表长度就是你存的items数量
            itemCount: scanDeviceProvider.items.length,
            // 每个item的UI
            itemBuilder: (context, index) {
              final currentItem = scanDeviceProvider.items[index];
              // 这里用ListTile示例,你可以改成自定义的Container样式
              return ListTile(
                title: Text(currentItem.model_Name),
                // 还可以加副标题、图标等,比如:
                // subtitle: Text("其他字段"),
                // leading: Icon(Icons.devices),
              );
            },
          ),
        ),
      ],
    ),
  ),
);

常见错误排查

  • 忘记调用notifyListeners():数据更新后UI不会刷新,所以一定要加
  • 没处理ListView的高度:Column里的ListView默认会无限高度,必须用Expanded或者shrinkWrap
  • itemCount设置错误:比如写成固定值,导致越界或者显示不全

内容的提问来源于stack exchange,提问作者natt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:55:30