длина была нулевой с использованием провайдера - PullRequest
0 голосов
/ 10 октября 2019

Приложение работает без сбоев. Но ошибка отображается на консоли.

Получатель 'length' был вызван на нуль. Получатель: null Пробный вызов: длина Созданный пользователем предок вызывающего ошибки виджета был:
StreamProvider> file: ///Users/Documents/flutter_job_manager/lib/components/router.dart: 23: 24

Я использую Firebase Cloud Storage с провайдером

Ошибка здесь: (на моем generateRoute)

  case AddCategory.route:
    return MaterialPageRoute(
      builder: (_) => StreamProvider<List<CategoryModel>>.value(
        value: DatabaseService().streamCategories(),
          child:  AddCategory()
      )
    );

просто чтобы знать: streamCategoriesв DatabaseService ()

  Stream<List<CategoryModel>> streamCategories() {
    var ref = _db.collection('categories');

    return ref.snapshots().map((list) =>
        list.documents.map((doc) => CategoryModel.fromFirestore(doc)).toList());
  }

AddCategory в StatelessWidget

      StreamProvider<List<CategoryModel>>.value(
          value: db.streamCategories(),
          child:ListView.builder(
                itemCount: category.length,
                itemBuilder: (BuildContext context, int index) {
                  return ListTile(
                      title: Text(
                        category[index].categoryName,
                        ),
                  );
                }),
          ))

1 Ответ

0 голосов
/ 11 октября 2019

Я добавил initialData. Теперь нет ошибок на консоли ..

  return MaterialPageRoute(
      builder: (_) => StreamProvider<List<CategoryModel>>.value(
        initialData: [CategoryModel(categoryName: "no current categories")],
        value: DatabaseService().streamCategories(),
          child:  AddCategory()
      )
    );
...