Я работаю над динамическим списком в диалоговом контейнере, извлекающим обновления из строки.

Widget setupAlertDialoadContainer() {
  final List<Food> category = [];
  return Container(
    height: 300.0, // Change as per your requirement
    width: 300.0, // Change as per your requirement
    child: ListView.separated(itemBuilder: (context,index) => Text('${category[index]}'), separatorBuilder: (BuildContext context, int index) => Divider(), itemCount: category.length)
  );}

Нет данных из класса Food с категорией окончательного списка = [];

class Food {
  String id;
  String name;
  String category;
  String newcategory;
  String image;
  List subIngredients = [];
  Timestamp createdAt;
  Timestamp updatedAt;

  Food();

  Food.fromMap(Map<String, dynamic> data) {
    id = data['id'];
    name = data['name'];
    category = data['category'];
    newcategory = data['newcategory'];
    image = data['image'];
    subIngredients = data['subIngredients'];
    createdAt = data['create at'];
    updatedAt = data['updatedAt'];
  }

  Map<String, dynamic> toMap() {
    return {
      'id': id,
      'name': name,
      'category': category,
      'newcategory': newcategory,
      'image': image,
      'subIngredients': subIngredients,
      'create at': createdAt,
      'updatedAt': updatedAt,
    };
  }


Если кто-то видит проблему, результат - пустой диалог.

0
J L 30 Авг 2020 в 01:18

2 ответа

Лучший ответ

Сначала я думаю, что проблема в вашем конструкторе.

           class Food {
              String id;
              String name;
              String category;
              String newcategory;
              String image;
              List subIngredients = [];
              Timestamp createdAt;
              Timestamp updatedAt;
            
              // Food(); // here
              Food(this.id, this.name, this.category, this.newcategory, this.image,
 this.subingredients, this.createdAt, this.updatedAt); // should be like this
... // rest of your code here
}

Затем вам нужно заполнить свой список следующим образом:

Widget setupAlertDialoadContainer() {
  

final List<Food> category = [];
// this is just an example
  category.add(new Food(
 id, name, category, newCategory, image,subIngredients,
  createdAt, updatedAt,
  ));

  return Container(
    height: 300.0, // Change as per your requirement
    width: 300.0, // Change as per your requirement
    child: ListView.separated(itemBuilder: (context,index) => Text('${category[index]}'), separatorBuilder: (BuildContext context, int index) => Divider(), itemCount: category.length)
  );}
0
Becca 30 Авг 2020 в 02:09

Это работало со следующим:

  get category => Food();


Widget setupAlertDialoadContainer() {
  final List<Food> category = [this.category];
    FoodNotifier foodNotifier = Provider.of<FoodNotifier>(context);
        category.add(new Food());
  return Container(
    height: 300.0, // Change as per your requirement
    width: 300.0, // Change as per your requirement
    child: ListView.separated(itemBuilder: (context,index) => Text(foodNotifier.foodList[index].category), separatorBuilder: (BuildContext context, int index) => Divider(), itemCount: 200)
  );}
0
J L 30 Авг 2020 в 12:57