Added rounting mechanism

This commit is contained in:
Alex 2024-09-06 14:47:09 -05:00
parent 9d6a177547
commit 746354b779
No known key found for this signature in database
GPG Key ID: 53CD082B3A5E1082
6 changed files with 139 additions and 95 deletions

View File

@ -7,6 +7,13 @@ class AlbumsCollectionPage extends HookConsumerWidget {
const AlbumsCollectionPage({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
return Container();
return Scaffold(
appBar: AppBar(
title: const Text('albums_collection_page_title'),
),
body: const Center(
child: Text('albums_collection_page_content'),
),
);
}
}

View File

@ -7,6 +7,13 @@ class LocalAlbumsCollectionPage extends HookConsumerWidget {
const LocalAlbumsCollectionPage({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
return Container();
return Scaffold(
appBar: AppBar(
title: const Text('on_this_device'),
),
body: const Center(
child: Text('on_this_device_content'),
),
);
}
}

View File

@ -7,6 +7,13 @@ class PeopleCollectionPage extends HookConsumerWidget {
const PeopleCollectionPage({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
return Container();
return Scaffold(
appBar: AppBar(
title: const Text('people'),
),
body: const Center(
child: Text('people'),
),
);
}
}

View File

@ -7,6 +7,13 @@ class PlacesCollectionPage extends HookConsumerWidget {
const PlacesCollectionPage({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
return Container();
return Scaffold(
appBar: AppBar(
title: const Text('places'),
),
body: const Center(
child: Text('places'),
),
);
}
}

View File

@ -87,41 +87,44 @@ class PeopleCollectionCard extends ConsumerWidget {
Widget build(BuildContext context, WidgetRef ref) {
final people = ref.watch(getAllPeopleProvider);
final size = MediaQuery.of(context).size.width * 0.5 - 20;
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: size,
width: size,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: context.colorScheme.secondaryContainer.withAlpha(100),
return GestureDetector(
onTap: () => context.pushRoute(const PeopleCollectionRoute()),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: size,
width: size,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: context.colorScheme.secondaryContainer.withAlpha(100),
),
child: people.widgetWhen(
onData: (people) {
return GridView.count(
crossAxisCount: 2,
padding: const EdgeInsets.all(12),
crossAxisSpacing: 8,
mainAxisSpacing: 8,
physics: const NeverScrollableScrollPhysics(),
children: people.take(4).map((person) {
return CircleAvatar(
backgroundImage: NetworkImage(
getFaceThumbnailUrl(person.id),
headers: ApiService.getRequestHeaders(),
),
);
}).toList(),
);
},
),
),
child: people.widgetWhen(
onData: (people) {
return GridView.count(
crossAxisCount: 2,
padding: const EdgeInsets.all(12),
crossAxisSpacing: 8,
mainAxisSpacing: 8,
physics: const NeverScrollableScrollPhysics(),
children: people.take(4).map((person) {
return CircleAvatar(
backgroundImage: NetworkImage(
getFaceThumbnailUrl(person.id),
headers: ApiService.getRequestHeaders(),
),
);
}).toList(),
);
},
Padding(
padding: const EdgeInsets.all(8.0),
child: Text('People', style: context.textTheme.labelLarge),
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text('People', style: context.textTheme.labelLarge),
),
],
],
),
);
}
}
@ -137,38 +140,43 @@ class AlbumsCollectionCard extends ConsumerWidget {
? ref.watch(albumProvider).where((album) => album.isLocal)
: ref.watch(albumProvider).where((album) => album.isRemote);
final size = MediaQuery.of(context).size.width * 0.5 - 20;
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: size,
width: size,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: context.colorScheme.secondaryContainer.withAlpha(100),
return GestureDetector(
onTap: () => context.pushRoute(isLocal
? const LocalAlbumsCollectionRoute()
: const AlbumsCollectionRoute()),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: size,
width: size,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: context.colorScheme.secondaryContainer.withAlpha(100),
),
child: GridView.count(
crossAxisCount: 2,
padding: const EdgeInsets.all(12),
crossAxisSpacing: 8,
mainAxisSpacing: 8,
physics: const NeverScrollableScrollPhysics(),
children: albums.take(4).map((album) {
return AlbumThumbnailCard(
album: album,
showTitle: false,
);
}).toList(),
),
),
child: GridView.count(
crossAxisCount: 2,
padding: const EdgeInsets.all(12),
crossAxisSpacing: 8,
mainAxisSpacing: 8,
physics: const NeverScrollableScrollPhysics(),
children: albums.take(4).map((album) {
return AlbumThumbnailCard(
album: album,
showTitle: false,
);
}).toList(),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
isLocal ? 'On this device' : 'Albums',
style: context.textTheme.labelLarge,
),
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
isLocal ? 'On this device' : 'Albums',
style: context.textTheme.labelLarge,
),
),
],
],
),
);
}
}
@ -178,33 +186,37 @@ class PlacesCollectionCard extends StatelessWidget {
@override
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size.width * 0.5 - 20;
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: size,
width: size,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: context.colorScheme.secondaryContainer.withAlpha(100),
),
child: IgnorePointer(
child: MapThumbnail(
zoom: 8,
centre: const LatLng(
21.44950,
-157.91959,
return GestureDetector(
onTap: () => context.pushRoute(const PlacesCollectionRoute()),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: size,
width: size,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: context.colorScheme.secondaryContainer.withAlpha(100),
),
child: IgnorePointer(
child: MapThumbnail(
zoom: 8,
centre: const LatLng(
21.44950,
-157.91959,
),
showAttribution: false,
themeMode:
context.isDarkTheme ? ThemeMode.dark : ThemeMode.light,
),
showAttribution: false,
themeMode: context.isDarkTheme ? ThemeMode.dark : ThemeMode.light,
),
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Places', style: context.textTheme.labelLarge),
),
],
Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Places', style: context.textTheme.labelLarge),
),
],
),
);
}
}

View File

@ -240,21 +240,25 @@ class AppRouter extends RootStackRouter {
page: HeaderSettingsRoute.page,
guards: [_duplicateGuard],
),
AutoRoute(
CustomRoute(
page: PeopleCollectionRoute.page,
guards: [_authGuard, _duplicateGuard],
transitionsBuilder: TransitionsBuilders.slideLeft,
),
AutoRoute(
CustomRoute(
page: AlbumsCollectionRoute.page,
guards: [_authGuard, _duplicateGuard],
transitionsBuilder: TransitionsBuilders.slideLeft,
),
AutoRoute(
CustomRoute(
page: LocalAlbumsCollectionRoute.page,
guards: [_authGuard, _duplicateGuard],
transitionsBuilder: TransitionsBuilders.slideLeft,
),
AutoRoute(
CustomRoute(
page: PlacesCollectionRoute.page,
guards: [_authGuard, _duplicateGuard],
transitionsBuilder: TransitionsBuilders.slideLeft,
),
];
}