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

Flutter中如何处理无键值对的API返回数组并展示到UI

在Flutter中解析无键二维数组并展示到UI

1. 解析无键二维数组

你可以直接将API返回的JSON数据解析为List<List<int>>类型,无需额外定义模型类,因为这是纯数值组成的二维结构。

示例代码(基于http包实现请求):

import 'dart:convert';
import 'package:http/http.dart' as http;

Future<List<List<int>>> fetchActivityData() async {
  final response = await http.get(Uri.parse('你的API接口地址'));
  
  if (response.statusCode == 200) {
    // 直接解码并转换为List<List<int>>类型
    return List<List<int>>.from(
      jsonDecode(response.body).map((item) => List<int>.from(item))
    );
  } else {
    throw Exception('数据请求失败');
  }
}

2. 将解析后的数据展示到UI

以ListView.builder为例,假设二维数组中第一个元素是activityId,第二个是对应的统计数值(比如关联文档数量),直接通过下标取值并渲染:

class ActivityStatsPage extends StatefulWidget {
  const ActivityStatsPage({super.key});

  @override
  State<ActivityStatsPage> createState() => _ActivityStatsPageState();
}

class _ActivityStatsPageState extends State<ActivityStatsPage> {
  late Future<List<List<int>>> _activityDataFuture;

  @override
  void initState() {
    super.initState();
    _activityDataFuture = fetchActivityData();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('活动数据统计')),
      body: FutureBuilder<List<List<int>>>(
        future: _activityDataFuture,
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            return ListView.builder(
              itemCount: snapshot.data!.length,
              itemBuilder: (context, index) {
                final dataItem = snapshot.data![index];
                final activityId = dataItem[0];
                final statsValue = dataItem[1];
                return ListTile(
                  title: Text('活动ID: $activityId'),
                  subtitle: Text('统计值: $statsValue'),
                );
              },
            );
          } else if (snapshot.hasError) {
            return Center(child: Text('加载失败: ${snapshot.error}'));
          }
          // 加载中状态
          return const Center(child: CircularProgressIndicator());
        },
      ),
    );
  }
}

额外提示

如果二维数组的元素对应其他业务含义,只需要调整dataItem[0]、dataItem[1]的下标取值,以及UI上的文本描述即可,核心逻辑完全通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 08:06:21