feat : EvenDetails --> Add Animator with widget
This commit is contained in:
56
lib/ui/common/animator_widget.dart
Normal file
56
lib/ui/common/animator_widget.dart
Normal 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)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
)
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -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,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user