In StreamBuilder snapshot return null data as I am passing a stream of single DocumentSnapshot, Also as you can see I have added the data and connection checks, but it always shows no profile data which means the data is null. Is there something that is missing as I am following the example of articles that people have implemented
UserModel.dart
import 'package:cloud_firestore/cloud_firestore.dart';
class UserModel {
String? earningsUnit;
String? email;
String? fullName;
String? lastUpdate;
String? profileImageUrl;
String? superAdmin;
String? totalPoints;
String? totalWorkMinutes;
String? uid;
String? updatedBy;
UserModel({
this.earningsUnit,
this.email,
this.fullName,
this.lastUpdate,
this.profileImageUrl,
this.superAdmin,
this.totalPoints,
this.totalWorkMinutes,
this.uid,
this.updatedBy,
});
factory UserModel.fromDocumentSnapshot(Map<String,dynamic> data) {
return UserModel(
earningsUnit:
data.containsKey("earningsUnit") ? data["earningsUnit"] ?? "" : "",
email: data.containsKey("email") ? data["email"] ?? "" : "",
fullName: data.containsKey("fullname") ? data["fullname"] ?? "" : "",
lastUpdate:
data.containsKey("lastupdate") ? data["lastupdate"] ?? false : false,
profileImageUrl: data.containsKey("profileImageUrl")
? data["profileImageUrl"] ?? 0
: 0,
superAdmin: data.containsKey("superAdmin") ? data["superAdmin"] ?? 0 : 0,
totalPoints:
data.containsKey("totalPoints") ? data["totalPoints"] ?? 0 : 0,
totalWorkMinutes: data.containsKey("totalWorkMinutes")
? data["totalWorkMinutes"] ?? ""
: "",
uid: data.containsKey("uid") ? data["uid"] ?? "" : "",
updatedBy: data.containsKey("updatedby") ? data["updatedby"] ?? "" : "",
);
}
}
UserNetwork.dart
class UserNetwork {
final FirebaseFirestore _db = FirebaseFirestore.instance;
Stream<UserModel> retrieveUserData(String id) {
final stream = _db.collection('users').doc(id).snapshots();
return stream.map((snap) => UserModel.fromDocumentSnapshot(snap.data()!));
}
}
StreamBuilder Implementation
StreamBuilder(
stream: userNetwork
.retrieveUserData(FirebaseAuth.instance.currentUser!.uid),
builder: (BuildContext context, snapshot) {
if (snapshot.connectionState == ConnectionState.active) {
if (snapshot.data != null) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(
padding: const EdgeInsets.fromLTRB(20, 0, 0, 0),
child: Text(
snapshot.data!.fullName ?? "",
style: const TextStyle(
fontWeight: FontWeight.w900,
fontSize: 25,
),
),
),
InkWell(
onTap: () {
Navigator.pushNamed(context, EditProfile.id);
},
child: Container(
padding: const EdgeInsets.fromLTRB(0, 0, 20, 0),
child: CircleAvatar(
backgroundImage:
NetworkImage(snapshot.data!.profileImageUrl!),
radius: 40,
),
),
),
],
);
} else {
return Center(
child: Text(
'No Profile Data',
style: cTextStyleMedium,
),
);
}
}
return Center(
child: CustomLoading(),
);
},
),