From 6429854028a3e85255ae315a9fd0a2e27bc82771 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ya=C3=ABl=20Perret?= Date: Sat, 13 Sep 2025 17:53:24 +0200 Subject: [PATCH] feat : EvenDetails --> Add Animator with widget --- lib/ui/common/animator_widget.dart | 56 +++++++++++++++++++ .../event_details/event_details_view.dart | 23 +++++++- .../event_details_viewmodel.dart | 13 +++++ 3 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 lib/ui/common/animator_widget.dart diff --git a/lib/ui/common/animator_widget.dart b/lib/ui/common/animator_widget.dart new file mode 100644 index 0000000..a574049 --- /dev/null +++ b/lib/ui/common/animator_widget.dart @@ -0,0 +1,56 @@ +import 'package:flutter/material.dart'; + +class AnimatorWidget extends StatefulWidget { + final String authorName; + final String authorImageUrl; + final DateTime? publishDate; + final List? imageUrls; + final int likesCount; + final int commentsCount; + final int sharesCount; + final VoidCallback? onLike; + final VoidCallback? onComment; + final VoidCallback? onShare; + final double? aspectRatio; // Nouveau paramètre pour le ratio (largeur/hauteur) + + const AnimatorWidget({ + Key? key, + required this.authorName, + required this.authorImageUrl, + this.publishDate, + this.imageUrls, + this.likesCount = 0, + this.commentsCount = 0, + this.sharesCount = 0, + this.onLike, + this.onComment, + this.onShare, + this.aspectRatio, // null = ratio naturel de l'image, ex: 16/9, 4/3, 1/1 + }) : super(key: key); + + @override + State createState() => _AnimatorWidgetWidgetState(); +} + +class _AnimatorWidgetWidgetState extends State { + + @override + Widget build(BuildContext context) { + return Row( + children: [ + CircleAvatar( + backgroundImage: NetworkImage(widget.authorImageUrl), + ), + const SizedBox(width: 8), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(widget.authorName, style: Theme.of(context).textTheme.bodyLarge?.copyWith(color: Colors.black)), + //Text('${widget.publishDate.toLocal()}'.split(' ')[0], style: const TextStyle(color: Colors.grey, fontSize: 12)), + ], + ), + ], + ); + } + +} diff --git a/lib/ui/views/event_details/event_details_view.dart b/lib/ui/views/event_details/event_details_view.dart index faabf6a..14a0f5d 100644 --- a/lib/ui/views/event_details/event_details_view.dart +++ b/lib/ui/views/event_details/event_details_view.dart @@ -1,9 +1,10 @@ -import 'package:bahla_front/ui/common/ReadMoreText.dart'; import 'package:flutter/material.dart'; import 'package:stacked/stacked.dart'; import 'event_details_viewmodel.dart'; -import '../../common/post_card_widget.dart'; +import 'package:bahla_front/ui/common/ReadMoreText.dart'; +import 'package:bahla_front/ui/common/animator_widget.dart'; +import 'package:bahla_front/ui/common/post_card_widget.dart'; class EventDetailsView extends StackedView { final int eventId; @@ -257,8 +258,24 @@ class EventDetailsView extends StackedView { ), ), Divider(height: 2, indent: 20, endIndent: 20, color: Theme.of(context).colorScheme.primary), + // The ListView inside a Column needs bounded height => wrap with Expanded + Expanded( + child: ListView.builder( + padding: const EdgeInsets.all(16.0), + itemCount: 10, + itemBuilder: (context, index) { + return Padding( + padding: const EdgeInsets.only(bottom: 12.0), + child: AnimatorWidget( + authorName: 'Animateur ${index + 1}', + authorImageUrl: 'https://placehold.co/400x400/png', + ), + ); + }, + ), + ), ], - ) + ), ), ], ), diff --git a/lib/ui/views/event_details/event_details_viewmodel.dart b/lib/ui/views/event_details/event_details_viewmodel.dart index 3688fe7..b6d9313 100644 --- a/lib/ui/views/event_details/event_details_viewmodel.dart +++ b/lib/ui/views/event_details/event_details_viewmodel.dart @@ -32,4 +32,17 @@ class Post { required this.title, required this.content, }); +} + +class Animator { + final String id; + final String name; + final String content; + final String authorImageUrl = 'https://placehold.co/400x400/png'; + + Animator({ + required this.id, + required this.name, + required this.content, + }); } \ No newline at end of file