feat : EvenDetails --> Add Animator with widget

This commit is contained in:
Yaël Perret
2025-09-13 17:53:24 +02:00
parent 8067125921
commit 6429854028
3 changed files with 89 additions and 3 deletions

View File

@@ -0,0 +1,56 @@
import 'package:flutter/material.dart';
class AnimatorWidget extends StatefulWidget {
final String authorName;
final String authorImageUrl;
final DateTime? publishDate;
final List<String>? 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<AnimatorWidget> createState() => _AnimatorWidgetWidgetState();
}
class _AnimatorWidgetWidgetState extends State<AnimatorWidget> {
@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)),
],
),
],
);
}
}

View File

@@ -1,9 +1,10 @@
import 'package:bahla_front/ui/common/ReadMoreText.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:stacked/stacked.dart'; import 'package:stacked/stacked.dart';
import 'event_details_viewmodel.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<EventDetailsViewModel> { class EventDetailsView extends StackedView<EventDetailsViewModel> {
final int eventId; final int eventId;
@@ -257,8 +258,24 @@ class EventDetailsView extends StackedView<EventDetailsViewModel> {
), ),
), ),
Divider(height: 2, indent: 20, endIndent: 20, color: Theme.of(context).colorScheme.primary), 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',
),
);
},
),
),
], ],
) ),
), ),
], ],
), ),

View File

@@ -32,4 +32,17 @@ class Post {
required this.title, required this.title,
required this.content, 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,
});
} }