使用 Provider 时长度为空
length was null using Provider
应用运行顺畅。但是错误显示在控制台上。
The getter 'length' was called on null. Receiver: null Tried calling:
length User-created ancestor of the error-causing widget was:
StreamProvider>
file:///Users/Documents/flutter_job_manager/lib/components/router.dart:23:24
我将 Firebase 云存储与提供商一起使用
这里出现错误:(在我的 generateRoute 上)
case AddCategory.route:
return MaterialPageRoute(
builder: (_) => StreamProvider<List<CategoryModel>>.value(
value: DatabaseService().streamCategories(),
child: AddCategory()
)
);
只想知道:
streamCategories
在数据库服务()
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,
),
);
}),
))
我添加了initialData
。现在控制台上没有错误..
return MaterialPageRoute(
builder: (_) => StreamProvider<List<CategoryModel>>.value(
initialData: [CategoryModel(categoryName: "no current categories")],
value: DatabaseService().streamCategories(),
child: AddCategory()
)
);
应用运行顺畅。但是错误显示在控制台上。
The getter 'length' was called on null. Receiver: null Tried calling: length User-created ancestor of the error-causing widget was:
StreamProvider> file:///Users/Documents/flutter_job_manager/lib/components/router.dart:23:24
我将 Firebase 云存储与提供商一起使用
这里出现错误:(在我的 generateRoute 上)
case AddCategory.route:
return MaterialPageRoute(
builder: (_) => StreamProvider<List<CategoryModel>>.value(
value: DatabaseService().streamCategories(),
child: AddCategory()
)
);
只想知道:
streamCategories
在数据库服务()
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,
),
);
}),
))
我添加了initialData
。现在控制台上没有错误..
return MaterialPageRoute(
builder: (_) => StreamProvider<List<CategoryModel>>.value(
initialData: [CategoryModel(categoryName: "no current categories")],
value: DatabaseService().streamCategories(),
child: AddCategory()
)
);