feat: Refactor remaining icon usage to utilize AppIcons class across multiple screens and update icon references

+5 -1
lib/app_icons.dart
··· 3 3 4 4 class AppIcons { 5 5 // Material Icons 6 + static const IconData edit = Icons.edit; 7 + static const IconData sort = Icons.sort; 6 8 static const IconData person = Icons.person; 7 9 static const IconData accountCircle = Icons.account_circle; 8 10 static const IconData close = Icons.close; ··· 15 17 static const IconData notifications = Icons.notifications; 16 18 static const IconData search = Icons.search; 17 19 static const IconData settings = Icons.settings; 20 + static const IconData photoLibrary = Icons.photo_library; 21 + static const IconData moreVertical = Icons.more_vert; 18 22 // FontAwesome Icons 19 23 static const IconData house = FontAwesomeIcons.house; 20 24 static const IconData magnifyingGlass = FontAwesomeIcons.magnifyingGlass; ··· 29 33 static const IconData arrowUpFromBracket = FontAwesomeIcons.arrowUpFromBracket; 30 34 static const IconData bars = FontAwesomeIcons.bars; 31 35 static const IconData arrowRightFromBracket = FontAwesomeIcons.arrowRightFromBracket; 32 - static const IconData checkCircle = FontAwesomeIcons.checkCircle; 36 + static const IconData checkCircle = FontAwesomeIcons.circleCheck; 33 37 }
+2 -1
lib/screens/explore_page.dart
··· 2 2 3 3 import 'package:flutter/material.dart'; 4 4 import 'package:grain/api.dart'; 5 + import 'package:grain/app_icons.dart'; 5 6 import 'package:grain/models/profile.dart'; 6 7 import 'package:grain/widgets/app_image.dart'; 7 8 import 'package:grain/widgets/plain_text_field.dart'; ··· 130 131 : CircleAvatar( 131 132 radius: 16, 132 133 backgroundColor: theme.colorScheme.surfaceContainerHighest, 133 - child: Icon(Icons.account_circle, color: theme.iconTheme.color), 134 + child: Icon(AppIcons.accountCircle, color: theme.iconTheme.color), 134 135 ), 135 136 title: Text( 136 137 profile.displayName?.isNotEmpty == true ? profile.displayName! : '@${profile.handle}',
+5 -4
lib/screens/gallery_action_sheet.dart
··· 1 1 import 'package:flutter/material.dart'; 2 + import 'package:grain/app_icons.dart'; 2 3 3 4 class GalleryActionSheet extends StatelessWidget { 4 5 final VoidCallback? onEditDetails; ··· 23 24 mainAxisSize: MainAxisSize.min, 24 25 children: [ 25 26 ListTile( 26 - leading: const Icon(Icons.edit), 27 + leading: Icon(AppIcons.edit), 27 28 title: const Text('Edit details'), 28 29 onTap: () { 29 30 Navigator.of(context).pop(); ··· 31 32 }, 32 33 ), 33 34 ListTile( 34 - leading: const Icon(Icons.photo_library), 35 + leading: Icon(AppIcons.photoLibrary), 35 36 title: const Text('Edit photos'), 36 37 onTap: () { 37 38 Navigator.of(context).pop(); ··· 39 40 }, 40 41 ), 41 42 ListTile( 42 - leading: const Icon(Icons.sort), 43 + leading: Icon(AppIcons.sort), 43 44 title: const Text('Edit sort order'), 44 45 onTap: () { 45 46 Navigator.of(context).pop(); ··· 47 48 }, 48 49 ), 49 50 ListTile( 50 - leading: const Icon(Icons.delete, color: Colors.red), 51 + leading: Icon(AppIcons.delete, color: Colors.red), 51 52 title: const Text('Delete gallery', style: TextStyle(color: Colors.red)), 52 53 onTap: () async { 53 54 Navigator.of(context).pop();
+3 -2
lib/screens/gallery_edit_photos_sheet.dart
··· 3 3 import 'package:flutter/services.dart'; 4 4 import 'package:flutter_riverpod/flutter_riverpod.dart'; 5 5 import 'package:grain/api.dart'; 6 + import 'package:grain/app_icons.dart'; 6 7 import 'package:grain/models/gallery_photo.dart'; 7 8 import 'package:grain/providers/gallery_cache_provider.dart'; 8 9 import 'package:grain/widgets/app_button.dart'; ··· 101 102 clipBehavior: Clip.antiAlias, 102 103 child: photo.thumb != null && photo.thumb!.isNotEmpty 103 104 ? AppImage(url: photo.thumb!, fit: BoxFit.cover) 104 - : const Icon(Icons.photo, size: 48), 105 + : const Icon(AppIcons.photo, size: 48), 105 106 ), 106 107 Positioned( 107 108 top: 8, ··· 162 163 valueColor: AlwaysStoppedAnimation<Color>(Colors.white), 163 164 ), 164 165 ) 165 - : const Icon(Icons.close, color: Colors.white, size: 20), 166 + : const Icon(AppIcons.close, color: Colors.white, size: 20), 166 167 ), 167 168 ), 168 169 ),
+3 -2
lib/screens/gallery_page.dart
··· 1 1 import 'package:flutter/material.dart'; 2 2 import 'package:flutter_riverpod/flutter_riverpod.dart'; 3 3 import 'package:grain/api.dart'; 4 + import 'package:grain/app_icons.dart'; 4 5 import 'package:grain/models/gallery_photo.dart'; 5 6 import 'package:grain/providers/gallery_cache_provider.dart'; 6 7 import 'package:grain/providers/profile_provider.dart'; ··· 119 120 actions: [ 120 121 if (gallery.creator?.did == widget.currentUserDid) 121 122 IconButton( 122 - icon: const Icon(Icons.more_vert), 123 + icon: const Icon(AppIcons.moreVertical), 123 124 tooltip: 'Gallery Actions', 124 125 onPressed: () async { 125 126 showModalBottomSheet( ··· 225 226 (gallery.creator == null || 226 227 (gallery.creator!.avatar?.isNotEmpty != true)) 227 228 ? Icon( 228 - Icons.account_circle, 229 + AppIcons.accountCircle, 229 230 size: 24, 230 231 color: theme.colorScheme.onSurface.withOpacity(0.4), 231 232 )