Dropzone OK et refactor page event_add
This commit is contained in:
@ -1,8 +1,8 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||
|
||||
class ProfilePictureWidget extends StatelessWidget {
|
||||
final String? userId; // Modifié pour être nullable
|
||||
class ProfilePictureWidget extends StatefulWidget {
|
||||
final String? userId;
|
||||
final double radius;
|
||||
final String? defaultImageUrl;
|
||||
|
||||
@ -13,28 +13,58 @@ class ProfilePictureWidget extends StatelessWidget {
|
||||
this.defaultImageUrl,
|
||||
});
|
||||
|
||||
@override
|
||||
State<ProfilePictureWidget> createState() => _ProfilePictureWidgetState();
|
||||
}
|
||||
|
||||
class _ProfilePictureWidgetState extends State<ProfilePictureWidget> {
|
||||
late Future<DocumentSnapshot?> _userFuture;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_userFuture = _getUserFuture();
|
||||
}
|
||||
|
||||
@override
|
||||
void didUpdateWidget(ProfilePictureWidget oldWidget) {
|
||||
super.didUpdateWidget(oldWidget);
|
||||
if (oldWidget.userId != widget.userId) {
|
||||
_userFuture = _getUserFuture();
|
||||
}
|
||||
}
|
||||
|
||||
Future<DocumentSnapshot?> _getUserFuture() {
|
||||
if (widget.userId == null || widget.userId!.isEmpty) {
|
||||
return Future.value(null);
|
||||
}
|
||||
return FirebaseFirestore.instance
|
||||
.collection('users')
|
||||
.doc(widget.userId)
|
||||
.get();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
// Vérifier si userId est null ou vide
|
||||
if (userId == null || userId!.isEmpty) {
|
||||
return _buildDefaultAvatar(radius, defaultImageUrl);
|
||||
if (widget.userId == null || widget.userId!.isEmpty) {
|
||||
return _buildDefaultAvatar(widget.radius, widget.defaultImageUrl);
|
||||
}
|
||||
|
||||
return FutureBuilder<DocumentSnapshot>(
|
||||
future: FirebaseFirestore.instance.collection('users').doc(userId).get(),
|
||||
return FutureBuilder<DocumentSnapshot?>(
|
||||
future: _userFuture,
|
||||
builder: (context, snapshot) {
|
||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
||||
return _buildLoadingAvatar(radius);
|
||||
return _buildLoadingAvatar(widget.radius);
|
||||
} else if (snapshot.hasError) {
|
||||
print("Error loading profile: ${snapshot.error}");
|
||||
return _buildDefaultAvatar(radius, defaultImageUrl);
|
||||
return _buildDefaultAvatar(widget.radius, widget.defaultImageUrl);
|
||||
} else if (snapshot.data != null && snapshot.data!.exists) {
|
||||
final userData = snapshot.data!.data() as Map<String, dynamic>?;
|
||||
final profilePhotoUrl = userData?['profilePhotoUrl'] as String?;
|
||||
|
||||
if (profilePhotoUrl != null && profilePhotoUrl.isNotEmpty) {
|
||||
return CircleAvatar(
|
||||
radius: radius,
|
||||
radius: widget.radius,
|
||||
backgroundImage: NetworkImage(profilePhotoUrl),
|
||||
onBackgroundImageError: (e, stack) {
|
||||
print("Error loading profile image: $e");
|
||||
@ -42,7 +72,7 @@ class ProfilePictureWidget extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
}
|
||||
return _buildDefaultAvatar(radius, defaultImageUrl);
|
||||
return _buildDefaultAvatar(widget.radius, widget.defaultImageUrl);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user