Удаление с ListView.Builder

Отображаю список категории в ListView.Builder, категории хранятся в CloudFirestore. Функция на удаление дает ошибку NoSuchMethodError: invalid member on null: 'id'.

    class CategoriesListtest extends StatefulWidget {
  @override
  _CategoriesListtestState createState() => _CategoriesListtestState();
}

  Categories categories;
  @override
  Widget build(BuildContext context) {
    return StreamBuilder<List<Categories>>(
      stream: CategoryData().categoriesData,
      builder: (context, snapshot) {
        if (snapshot.hasData) {
          return AlertDialog(
            content: Container(
              width: 300,
              child: ListView.builder(
                itemCount: snapshot.data.length,
                itemBuilder: (context, index) {
                  return Row(
                    children: <Widget>[
                      Expanded(
                        child: ListTile(
                          title: Text(snapshot.data[index].categoryname),
                        ),
                      ),
                      IconButton(
                          icon: Icon(Icons.delete),
                          onPressed: () {
                            CategoryData().deleteCategory(categories);
                          }),
                    ],
                  );
                },
              ),
            ),
          );
        } else {
          return Container();
        }
      },
    );
  }

  void deleteCategory(Categories category) {
    categoryData.document(category.id).delete();
  }
}

сохранение категории:

CollectionReference categoryData = Firestore.instance
  .collection('category')
  .document('house')
  .collection('subCategory');

Future createCategory(_categorynameController) async {
String categoryID = categoryData.document().documentID;
await categoryData
    .document(categoryID)
    .setData({'categoryname': _categorynameController, 'id': categoryID});

}


Ответы (1 шт):

Автор решения: MiT

У вас category.id пустой (null) из-за Categories categories;. Добавите инициализацию categories, либо в CategoryData().deleteCategory(categories); вы должны передавать что-то другое...

→ Ссылка