Dropzone OK et refactor page event_add

This commit is contained in:
2025-05-27 20:08:39 +02:00
parent 49dffff1bf
commit 9489183b68
8 changed files with 627 additions and 590 deletions

View File

@ -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);
},
);
}