Reputation: 724
I'm trying to get data from the firebase database. I'm getting this error:
The operator '[]' isn't defined for the class 'Object'
Try many methods but the error is still here.
StreamBuilder<QuerySnapshot>(
stream: _categoryProvider.category.snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot){
if(snapshot.hasError){
return Text('Something went wrong..');
}
if(snapshot.connectionState == ConnectionState.waiting){
return Center(child: CircularProgressIndicator(),);
}
return Expanded(
child: ListView(
children: snapshot.data.docs.map((DocumentSnapshot document){
return ListTile(
leading: CircleAvatar(
backgroundImage: NetworkImage(document?.data()['image']),// error is on this line
),
//title: Text(document.data()['category name']),
onTap: (){},
);
}).toList(),
),
);
}),
Here is CategoryProvider.
import 'package:cloud_firestore/cloud_firestore.dart';
class CategoryProvider{
CollectionReference category = FirebaseFirestore.instance.collection('categories');
}
Upvotes: 1
Views: 265
Reputation: 5608
I guess you confused QueryDocumentSnapshot
with DocumentSnapshot
. This is because there are two different snapshots()
methods (one from the Query
class and one from the DocumentReference
class).
Change this:
children: snapshot.data.docs.map((DocumentSnapshot document){
to this:
children: snapshot.data.docs.map((QueryDocumentSnapshot document) {
Upvotes: 1
Reputation: 2171
use this instead:
final temp = document.data; // once try this and if it did not work use json.decode(document.data)
return Expanded(
child: ListView(
children: snapshot.data.docs.map((DocumentSnapshot document){
return ListTile(
leading: CircleAvatar(
backgroundImage: NetworkImage(temp['image']),// error is on this line
),
//title: Text(temp['category name']),
onTap: (){},
);
}).toList(),
),
let me know the result.
Upvotes: 0