如何使用Dart / Flutter在Cloud Firestore中存储简单矩阵?

ThiagoAM

假设我在Dart中具有以下整数矩阵:

final List<List<int>> myMatrix = [
  [1, 0, 0],
  [0, 1, 0],
  [0, 0, 1],
];

然后,我尝试将其存储在Cloud Firestore中,如下所示:

await Firestore.instance.collection("anyCollection").add({
    "matrix" : myMatrix,
});

但是,一旦我运行上面的代码,模拟器就会崩溃,并且出现以下错误:

*** First throw call stack:
(
    0   CoreFoundation                      0x00007fff23c4f02e __exceptionPreprocess + 350
    1   libobjc.A.dylib                     0x00007fff50b97b20 objc_exception_throw + 48
    2   Runner                              0x000000010e83f8b5 _ZN8firebase9firestore4util16ObjcThrowHandlerENS1_13ExceptionTypeEPKcS4_iRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEE + 581
    3   Runner                              0x000000010e83edf3 _ZN8firebase9firestore4util5ThrowENS1_13ExceptionTypeEPKcS4_iRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEE + 67
    4   Runner                              0x000000010e890589 _ZN8firebase9firestore4util20ThrowInvalidArgumentIJEEEvPKcDpRKT_ + 57
    5   Runner                              0x000000010e959f65 -[FSTUserDataConverter parseData:context:] + 1045
    6   Runner                              0x000000010e<…>
Lost connection to device.

我正在文件中运行cloud_firestore: ^0.13.0+1(当前为最新版本)pubspec.yaml运行flutter doctor命令时,一切都很好。

我究竟做错了什么?甚至可以将矩阵存储在Firestore中吗?如果没有,我可以使用其他逻辑存储该数据吗?

ThiagoAM

我最终做了以下帮助程序,将矩阵转换为与Firestore兼容的地图:

class MatrixHelper {

  // Creates a map that can be stored in Firebase from an int matrix.
  static Map<String, dynamic> mapFromIntMatrix(List<List<int>> intMatrix) {
    Map<String, Map<String, dynamic>> map = {};
    int index = 0;
    for (List<int> row in intMatrix) {
      map.addEntries([MapEntry(index.toString(), {})]);
      for (int value in row) {
        map[index.toString()].addEntries(
            [MapEntry(value.toString(), true)]
        );
      }
      index += 1;
    }
    return map;
  }

  // Creates an int matrix from a dynamic map.
  static List<List<int>> intMatrixFromMap(Map<dynamic, dynamic> dynamicMap) {
    final map = Map<String, dynamic>.from(dynamicMap);
    List<List<int>> matrix = [];
    map.forEach((stringIndex, value) {
      Map<String, dynamic> rowMap = Map<String, dynamic>.from(value);
      List<int> row = [];
      rowMap.forEach((stringNumber, boolean) {
        row.add(int.parse(stringNumber));
      });
      matrix.add(row);
    });
    return matrix;
  }

}

使用起来非常简单,要保存在Firestore中,就像这样:

final List<List<int>> myMatrix = [
  [1, 0, 0],
  [0, 1, 0],
  [0, 0, 1],
];

await Firestore.instance.collection("anyCollection").add({
    "matrix" : MatrixHelper.mapFromIntMatrix(myMatrix),
});

要从Firestore加载矩阵,方法如下:

// Loads the DocumentSnapshot:
final document = await Firestore.instance.collection("anyCollection").document("anyDocument").get();
// Retrieves the Matrix:
final List<List<int>> matrix = MatrixHelper.intMatrixFromMap(document.data["matrix"]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Flutter:如何在Flutter中创建嵌套对象以存储在Cloud Firestore中

来自分类Dev

向Cloud Firestore添加阵列(Flutter / Dart)

来自分类Dev

如何在Cloud Flutter Firestore中处理嵌套集合查询?

来自分类Dev

如何使用Flutter / Dart在FirebaseDatabase中获取值的键?

来自分类Dev

如何使用dart(Flutter)中的Future和.then()转换此简单的异步,等待格式化的代码?

来自分类Dev

如何存储Future <dynamic>数据以供以后在dart / Flutter中的程序中使用?

来自分类Dev

Flutter和Cloud Firestore

来自分类Dev

如何从我的简单 .dart 文件创建一个插件以在 Flutter 中使用?

来自分类Dev

Flutter和Cloud-Firestore:如何读取链接到Flutter FutureBuilder的Firestore文档

来自分类Dev

如何从Cloud Firestore中获取user.uid等于flutter中的文档ID的数据?

来自分类Dev

如何使用Dart / Flutter中的列表从列表中删除重复元素?

来自分类Dev

如何使用Dart在Flutter中检测字符串中的表情符号?

来自分类Dev

如何在Flutter中设置,获取和更新数据到Cloud Firestore?

来自分类Dev

如何从cloud_firestore获取数据并在flutter中将其显示在TextField中

来自分类Dev

如何获取文档列表而不在Flutter Cloud Firestore中侦听更改?

来自分类Dev

如何在Flutter中使用Cloud Firestore知道DocumentChange的更改类型

来自分类Dev

如何为使用 Cloud Firestore 的 Flutter 应用程序设置安全规则?

来自分类Dev

如何使用 flutter cloud_firestore 插件从 DocumentID 获取文档引用

来自分类Dev

使用Dart / Flutter,如何在ListViewBuilder中添加收藏夹?

来自分类Dev

如何使用Flutter dart中的共享首选项保存和读取类对象的列表?

来自分类Dev

如何使用 dart 中传递的数据编写 if else 语句(flutter app)

来自分类Dev

如何使用graphQL将来自api的响应转换为flutter中的Plain Old Dart Object?

来自分类Dev

Cloud Firestore Firebase集合参考上的IN查询是否具有Flutter / Dart等效项?

来自分类Dev

如何在 Dart/Flutter 中重试 Future?

来自分类Dev

在flutter中从cloud_firestore删除文档

来自分类Dev

使用dart:HTML库在Flutter Web中选择文件时,如何在Flutter中获取文件名?

来自分类Dev

如何使用Flutter / Dart根据选择将单个Firestore文档ID传递给另一个类?

来自分类Dev

如何将Cloud Firestore中的单个文档字段保存到Flutter中的局部变量中?

来自分类Dev

Flutter:即使导入了包,也无法使用Firestore.instance(cloud_firestore)

Related 相关文章

  1. 1

    Flutter:如何在Flutter中创建嵌套对象以存储在Cloud Firestore中

  2. 2

    向Cloud Firestore添加阵列(Flutter / Dart)

  3. 3

    如何在Cloud Flutter Firestore中处理嵌套集合查询?

  4. 4

    如何使用Flutter / Dart在FirebaseDatabase中获取值的键?

  5. 5

    如何使用dart(Flutter)中的Future和.then()转换此简单的异步,等待格式化的代码?

  6. 6

    如何存储Future <dynamic>数据以供以后在dart / Flutter中的程序中使用?

  7. 7

    Flutter和Cloud Firestore

  8. 8

    如何从我的简单 .dart 文件创建一个插件以在 Flutter 中使用?

  9. 9

    Flutter和Cloud-Firestore:如何读取链接到Flutter FutureBuilder的Firestore文档

  10. 10

    如何从Cloud Firestore中获取user.uid等于flutter中的文档ID的数据?

  11. 11

    如何使用Dart / Flutter中的列表从列表中删除重复元素?

  12. 12

    如何使用Dart在Flutter中检测字符串中的表情符号?

  13. 13

    如何在Flutter中设置,获取和更新数据到Cloud Firestore?

  14. 14

    如何从cloud_firestore获取数据并在flutter中将其显示在TextField中

  15. 15

    如何获取文档列表而不在Flutter Cloud Firestore中侦听更改?

  16. 16

    如何在Flutter中使用Cloud Firestore知道DocumentChange的更改类型

  17. 17

    如何为使用 Cloud Firestore 的 Flutter 应用程序设置安全规则?

  18. 18

    如何使用 flutter cloud_firestore 插件从 DocumentID 获取文档引用

  19. 19

    使用Dart / Flutter,如何在ListViewBuilder中添加收藏夹?

  20. 20

    如何使用Flutter dart中的共享首选项保存和读取类对象的列表?

  21. 21

    如何使用 dart 中传递的数据编写 if else 语句(flutter app)

  22. 22

    如何使用graphQL将来自api的响应转换为flutter中的Plain Old Dart Object?

  23. 23

    Cloud Firestore Firebase集合参考上的IN查询是否具有Flutter / Dart等效项?

  24. 24

    如何在 Dart/Flutter 中重试 Future?

  25. 25

    在flutter中从cloud_firestore删除文档

  26. 26

    使用dart:HTML库在Flutter Web中选择文件时,如何在Flutter中获取文件名?

  27. 27

    如何使用Flutter / Dart根据选择将单个Firestore文档ID传递给另一个类?

  28. 28

    如何将Cloud Firestore中的单个文档字段保存到Flutter中的局部变量中?

  29. 29

    Flutter:即使导入了包,也无法使用Firestore.instance(cloud_firestore)

热门标签

归档