Flutter List.生成编辑器错误

k5ifujac  于 2022-11-30  发布在  Flutter
关注(0)|答案(2)|浏览(428)

如果我们通过这种方式创建一个2D/3D列表:

List recipes = List.generate(
      999,
      (i) => List.generate(
          999,
          (i) => List<Ingredient>.filled(
              0,
              Ingredient(
                  name: '',
                  carbohydrates: 0,
                  proteins: 0,
                  lipids: 0,
                  fibers: 0),
              growable: true)));

请假设Ingredient是一个简单的类。
当我们尝试访问它时:
print(recipes[0][0][0].name);
到达这一点的:
print(recipes[0][0][0].
我们需要查看(访问)类属性(如kcal、名称、碳水化合物等);与一维列表中完全相同。
但是,至少在VS代码中,代码编辑器只显示以下内容:hashCode、运行时类型、目标字符串()、无此类方法(...)
当我尝试通过这种方式创建列表时:

List<List<List<Ingredient>>> ingredient =
      List.generate(999, (index) => [[]], growable: true);

这个bug不存在,但是我不知道如何填充(给出一个维度和类)第一个和第二个列表...
我的第一个目标是不要失去自动完成功能(由编辑器),因为记住每个www.example.com太难List.properties/funcions。
配料分类:

class Ingredient {
  String? name;
  int? kcal;
  int? carbohydrates;
  int? proteins;
  int? lipids;
  int? fibers;

  Ingredient(
      {this.name,
      this.kcal,
      this.carbohydrates,
      this.proteins,
      this.lipids,
      this.fibers});
}
s3fp2yjn

s3fp2yjn1#

你可以使用varfinal,它会自动从赋值中知道列表的类型,但是只显式地写一个List是行不通的。

var ingredient = (List.generate( 
      999,
      (i) => List.generate(
          999,
          (i) => List<Ingredient>.filled(
              1, // -> put 1 if you want to populate your list or else it will be empty list
              Ingredient(
                  name: '',
                  carbohydrates: 0,
                  proteins: 0,
                  lipids: 0,
                  fibers: 0),
              growable: true))));

  print(ingredient[0][0][0]);
  print(ingredient[0][0][0].carbohydrates);
nhhxz33t

nhhxz33t2#

找到了正确的方法(和测试)。我离开这里,因为其他人:

List<List<List<Ingredient>>> ingredient = (List.generate(
      999,
      (i) => List.generate(
          999,
          (i) => List<Ingredient>.filled(
              0,
              Ingredient(
                  name: '',
                  carbohydrates: 0,
                  proteins: 0,
                  lipids: 0,
                  fibers: 0),
              growable: true))));

编辑器按预期工作,List是真正的多维和可迭代的。
此类型的列表为:
列表[整数][整数][成分(整数)].类属性

相关问题