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

Flutter如何返回指定长度(240条)的列表?

解决方案

要实现仅返回总共有240条数据的分块列表,可以通过以下两种方式修改代码:

方法一:先限制总元素数再分块

这种方式先从原始数据中截取最多240个元素,再进行分块补全,确保最终总元素数恰好为240:

static Future<List<List<int>>> localPath() async {
    File textAsset = File('/storage/emulated/0/RPSApp/assets/bluetooth.txt');
    final text = await textAsset.readAsString();
    final bytes = text.split(',')
        .map((s) => s.trim())
        .map((s) => int.parse(s))
        .toList();

    const int chunkSize = 20;
    const int totalTarget = 240;

    // 截取前240个元素,避免处理多余数据
    final limitedBytes = bytes.take(totalTarget).toList();

    List<int> padTo(List<int> input, int count) {
      return [...input, ...List.filled(count - input.length, 255)];
    }

    List<int> padToChunksize(List<int> input) => padTo(input, chunkSize);

    // 对截取后的元素进行分块并补全每个块到20个元素
    final items = limitedBytes.slices(chunkSize).map(padToChunksize).toList();

    // 如果分块后总元素数不足240,补充全255的块直到满足要求
    while (items.length * chunkSize < totalTarget) {
      items.add(List.filled(chunkSize, 255));
    }

    return items;
  }

方法二:直接限制分块数量

因为每个块包含20个元素,240条数据对应12个块,所以可以直接取前12个分块,再补全不足的块:

static Future<List<List<int>>> localPath() async {
    File textAsset = File('/storage/emulated/0/RPSApp/assets/bluetooth.txt');
    final text = await textAsset.readAsString();
    final bytes = text.split(',')
        .map((s) => s.trim())
        .map((s) => int.parse(s))
        .toList();

    const int chunkSize = 20;
    const int chunkCount = 12; // 12*20=240

    List<int> padTo(List<int> input, int count) {
      return [...input, ...List.filled(count - input.length, 255)];
    }

    List<int> padToChunksize(List<int> input) => padTo(input, chunkSize);

    // 生成分块并取前12个
    final items = bytes.slices(chunkSize).map(padToChunksize).take(chunkCount).toList();

    // 补全到12个块
    while (items.length < chunkCount) {
      items.add(List.filled(chunkSize, 255));
    }

    return items;
  }

说明

  • 两种方法都会确保最终返回的列表总元素数为240,每个子列表(块)包含20个元素,不足的部分用255填充。
  • 函数返回类型从Future<List>改为Future<List<List<int>>>,让类型更明确,避免类型警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:30:51