+5
-1
lib/app_icons.dart
+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
}
+4
-3
lib/screens/create_gallery_page.dart
+4
-3
lib/screens/create_gallery_page.dart
···
7
7
import 'package:flutter/services.dart';
8
8
import 'package:flutter_riverpod/flutter_riverpod.dart';
9
9
import 'package:grain/api.dart';
10
+
import 'package:grain/app_icons.dart';
10
11
import 'package:grain/models/gallery.dart';
11
12
import 'package:grain/providers/profile_provider.dart';
12
13
import 'package:grain/widgets/app_button.dart';
···
266
267
child: AppButton(
267
268
label: 'Upload photos',
268
269
onPressed: _pickImages,
269
-
icon: Icons.photo_library,
270
+
icon: AppIcons.photoLibrary,
270
271
variant: AppButtonVariant.primary,
271
272
height: 40,
272
273
fontSize: 15,
···
313
314
borderRadius: BorderRadius.circular(4),
314
315
),
315
316
child: Icon(
316
-
Icons.check_circle,
317
+
AppIcons.checkCircle,
317
318
color: theme.colorScheme.onSecondary,
318
319
size: 16,
319
320
),
···
330
331
shape: BoxShape.circle,
331
332
),
332
333
padding: const EdgeInsets.all(4),
333
-
child: const Icon(Icons.close, color: Colors.white, size: 20),
334
+
child: const Icon(AppIcons.close, color: Colors.white, size: 20),
334
335
),
335
336
),
336
337
),
+2
-1
lib/screens/explore_page.dart
+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
+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
-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
+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
)