From fb0b73ecafde5371172aec4e539e436277f415a4 Mon Sep 17 00:00:00 2001 From: Joshua Burman Date: Sat, 21 Dec 2024 17:51:56 -0500 Subject: [PATCH] dry-ing up activity view things --- lib/widgets/activity_view_categories.dart | 35 ++++++++++++++++ lib/widgets/activity_view_media.dart | 51 +++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 lib/widgets/activity_view_categories.dart create mode 100644 lib/widgets/activity_view_media.dart diff --git a/lib/widgets/activity_view_categories.dart b/lib/widgets/activity_view_categories.dart new file mode 100644 index 0000000..7bfb744 --- /dev/null +++ b/lib/widgets/activity_view_categories.dart @@ -0,0 +1,35 @@ +import 'package:flutter/material.dart'; + +class ActivityViewCategories extends StatelessWidget { + const ActivityViewCategories({super.key, this.categories}); + + final List? categories; + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Padding( + padding: const EdgeInsets.only(bottom: 10), + child: SizedBox( + height: 40, + child: ListView.builder( + shrinkWrap: true, + scrollDirection: Axis.horizontal, + padding: const EdgeInsets.fromLTRB(10, 0, 10, 0), + itemCount: categories?.length, + itemBuilder: (BuildContext context, int index) { + return Padding( + padding: const EdgeInsets.only(right: 5), + child: ActionChip( + visualDensity: VisualDensity.compact, + avatar: const Icon(Icons.check_circle_outline), + label: Text(maxLines: 1, '${categories?[index]}'), + onPressed: () {}, + )); + }, + ))), + ], + ); + } +} \ No newline at end of file diff --git a/lib/widgets/activity_view_media.dart b/lib/widgets/activity_view_media.dart new file mode 100644 index 0000000..1d6fcad --- /dev/null +++ b/lib/widgets/activity_view_media.dart @@ -0,0 +1,51 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:sendtrain/daos/media_items_dao.dart'; +import 'package:sendtrain/database/database.dart'; +import 'package:sendtrain/widgets/media_card.dart'; + +class ActivityViewMedia extends StatelessWidget { + const ActivityViewMedia({super.key, required this.activity}); + + final Activity activity; + + @override + Widget build(BuildContext context) { + return FutureBuilder>( + future: MediaItemsDao(Provider.of(context)).fromActivity(activity), + builder: (context, snapshot) { + if (snapshot.hasData) { + List mediaItems = snapshot.data!; + List mediaCards = []; + + for (int i = 0; i < mediaItems.length; i++) { + mediaCards.add(MediaCard(media: mediaItems[i])); + } + + return Column( + children: [ + SizedBox( + width: double.infinity, + height: 100, + child: GridView.count( + padding: const EdgeInsets.fromLTRB(15, 0, 0, 0), + scrollDirection: Axis.horizontal, + crossAxisSpacing: 5, + mainAxisSpacing: 5, + crossAxisCount: 1, + children: mediaCards)) + ], + ); + } else { + return Container( + alignment: Alignment.center, + child: SizedBox( + height: 50.0, + width: 50.0, + child: CircularProgressIndicator(), + )); + } + } + ); + } +} \ No newline at end of file