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

如何在FlutterFlame中把Firebase数组映射为Vector2列表?

将Firebase获取的数组转换为Flutter Flame的Vector2列表

根据Firebase返回数据的不同结构,这里提供两种常见场景的转换方案:

场景1:Firebase返回二维数值数组

如果从Firebase拿到的是类似 [[100.0, 200.0], [300.0, 400.0]] 这样的二维数组,直接通过map转换即可:

import 'package:flame/geometry.dart';

// 从Firebase获取原始数组
List<List<double>> firebaseCoords = await yourFirebaseFetchMethod();

// 转换为Vector2列表
List<Vector2> vectorList = firebaseCoords
    .map((coordPair) => Vector2(coordPair[0], coordPair[1]))
    .toList();

场景2:Firebase返回含x/y字段的Map列表

如果返回的是包含x、y字段的Map列表(比如 [{"x": 100, "y": 200}, ...]),需要提取对应字段转换:

import 'package:flame/geometry.dart';

// 从Firebase获取原始Map列表
List<Map<String, dynamic>> firebaseDataList = await yourFirebaseFetchMethod();

// 转换为Vector2列表
List<Vector2> vectorList = firebaseDataList
    .map((data) => Vector2(
          (data['x'] as num).toDouble(),
          (data['y'] as num).toDouble(),
        ))
    .toList();

额外注意事项

  • 如果Firebase返回的是整数类型,务必通过.toDouble()转换为double,避免类型错误
  • 若数据可能存在缺失x/y的情况,建议添加空值过滤:
List<Vector2> vectorList = firebaseDataList
    .where((data) => data['x'] != null && data['y'] != null)
    .map((data) => Vector2(
          (data['x'] as num).toDouble(),
          (data['y'] as num).toDouble(),
        ))
    .toList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:15:37