@@ -27,114 +27,124 @@ import '../../radio/view/station_title.dart';
27
27
import '../../search/view/search_page.dart' ;
28
28
import '../../settings/view/settings_page.dart' ;
29
29
import 'main_page_icon.dart' ;
30
- import 'master_items .dart' ;
30
+ import 'master_item .dart' ;
31
31
32
- List <MasterItem > createMasterItems () {
33
- final libraryModel = di <LibraryModel >();
34
- return [
35
- MasterItem (
36
- titleBuilder: (context) => Text (context.l10n.search),
37
- pageBuilder: (_) => const SearchPage (),
38
- iconBuilder: (_) => Icon (Iconz .search),
39
- pageId: PageIDs .searchPage,
40
- ),
41
- MasterItem (
42
- titleBuilder: (context) => Text (context.l10n.local),
43
- pageBuilder: (_) => const LocalAudioPage (),
44
- iconBuilder: (selected) => MainPageIcon (
45
- audioType: AudioType .local,
46
- selected: selected,
47
- ),
48
- pageId: PageIDs .localAudio,
49
- ),
50
- MasterItem (
51
- titleBuilder: (context) => Text (context.l10n.radio),
52
- pageBuilder: (_) => const RadioPage (),
53
- iconBuilder: (selected) => MainPageIcon (
54
- audioType: AudioType .radio,
55
- selected: selected,
56
- ),
57
- pageId: PageIDs .radio,
58
- ),
59
- MasterItem (
60
- titleBuilder: (context) => Text (context.l10n.podcasts),
61
- pageBuilder: (_) => const PodcastsPage (),
62
- iconBuilder: (selected) => MainPageIcon (
63
- audioType: AudioType .podcast,
64
- selected: selected,
65
- ),
66
- pageId: PageIDs .podcasts,
67
- ),
68
- if (AppConfig .isMobilePlatform)
69
- MasterItem (
70
- titleBuilder: (context) => Text (context.l10n.settings),
71
- iconBuilder: (selected) =>
72
- Icon (selected ? Iconz .settingsFilled : Iconz .settings),
73
- pageBuilder: (context) => const SettingsPage (),
74
- pageId: PageIDs .settings,
75
- ),
76
- if (AppConfig .isMobilePlatform)
77
- MasterItem (
78
- titleBuilder: (context) => Text (context.l10n.home),
79
- iconBuilder: (selected) =>
80
- Icon (selected ? Iconz .homeFilled : Iconz .home),
81
- pageBuilder: (context) => const HomePage (),
82
- pageId: PageIDs .homePage,
83
- ),
32
+ Iterable <MasterItem > getAllMasterItems () => [
33
+ ...permanentMasterItems,
34
+ ...createPlaylistMasterItems (),
35
+ ...createPodcastMasterItems (),
36
+ ...createFavoriteAlbumsMasterItems (),
37
+ ...createStarredStationsMasterItems (),
38
+ ];
39
+
40
+ Iterable <MasterItem > permanentMasterItems = [
41
+ MasterItem (
42
+ titleBuilder: (context) => Text (context.l10n.search),
43
+ pageBuilder: (_) => const SearchPage (),
44
+ iconBuilder: (_) => Icon (Iconz .search),
45
+ pageId: PageIDs .searchPage,
46
+ ),
47
+ MasterItem (
48
+ titleBuilder: (context) => Text (context.l10n.local),
49
+ pageBuilder: (_) => const LocalAudioPage (),
50
+ iconBuilder: (selected) =>
51
+ MainPageIcon (audioType: AudioType .local, selected: selected),
52
+ pageId: PageIDs .localAudio,
53
+ ),
54
+ MasterItem (
55
+ titleBuilder: (context) => Text (context.l10n.radio),
56
+ pageBuilder: (_) => const RadioPage (),
57
+ iconBuilder: (selected) =>
58
+ MainPageIcon (audioType: AudioType .radio, selected: selected),
59
+ pageId: PageIDs .radio,
60
+ ),
61
+ MasterItem (
62
+ titleBuilder: (context) => Text (context.l10n.podcasts),
63
+ pageBuilder: (_) => const PodcastsPage (),
64
+ iconBuilder: (selected) =>
65
+ MainPageIcon (audioType: AudioType .podcast, selected: selected),
66
+ pageId: PageIDs .podcasts,
67
+ ),
68
+ if (AppConfig .isMobilePlatform)
84
69
MasterItem (
85
- iconBuilder: (selected) => Icon (Iconz .plus),
86
- titleBuilder: (context) => Text (context.l10n.add),
87
- pageBuilder: (_) => const CustomContentPage (),
88
- pageId: PageIDs .customContent,
70
+ titleBuilder: (context) => Text (context.l10n.settings),
71
+ iconBuilder: (selected) =>
72
+ Icon (selected ? Iconz .settingsFilled : Iconz .settings),
73
+ pageBuilder: (_) => const SettingsPage (),
74
+ pageId: PageIDs .settings,
89
75
),
76
+ if (AppConfig .isMobilePlatform)
90
77
MasterItem (
91
- titleBuilder: (context) => Text (context.l10n.likedSongs),
92
- pageId: PageIDs .likedAudios,
93
- pageBuilder: (_) => const LikedAudioPage (),
94
- subtitleBuilder: (context) => Text (context.l10n.playlist),
95
- iconBuilder: (selected) => LikedAudioPageIcon (selected: selected),
78
+ titleBuilder: (context) => Text (context.l10n.home),
79
+ iconBuilder: (selected) => Icon (selected ? Iconz .homeFilled : Iconz .home),
80
+ pageBuilder: (_) => const HomePage (),
81
+ pageId: PageIDs .homePage,
96
82
),
97
- for (final id in libraryModel.playlistIDs)
98
- MasterItem (
99
- titleBuilder: (context) => Text (id),
100
- subtitleBuilder: (context) => Text (context.l10n.playlist),
101
- pageId: id,
102
- pageBuilder: (_) => PlaylistPage (pageId: id),
103
- iconBuilder: (selected) => SideBarFallBackImage (
104
- color: getAlphabetColor (id),
105
- child: Icon (Iconz .playlist),
106
- ),
107
- ),
108
- for (final feedUrl in libraryModel.podcastFeedUrls)
109
- MasterItem (
110
- titleBuilder: (_) => PodcastPageTitle (
111
- feedUrl: feedUrl,
112
- ),
113
- subtitleBuilder: (context) => PodcastPageSubTitle (feedUrl: feedUrl),
114
- pageId: feedUrl,
115
- pageBuilder: (_) => LazyPodcastPage (feedUrl: feedUrl),
116
- iconBuilder: (selected) => PodcastPageSideBarIcon (feedUrl: feedUrl),
117
- ),
118
- for (final id in libraryModel.favoriteAlbums)
119
- MasterItem (
120
- titleBuilder: (context) => Text (id.albumOfId),
121
- subtitleBuilder: (context) => Text (id.artistOfId),
122
- pageId: id,
123
- pageBuilder: (_) => AlbumPage (id: id),
124
- iconBuilder: (selected) => AlbumPageSideBarIcon (
125
- albumId: id,
126
- ),
127
- ),
128
- for (final uuid in libraryModel.starredStations.where ((e) => e.isNotEmpty))
129
- MasterItem (
130
- titleBuilder: (context) => StationTitle (uuid: uuid),
131
- subtitleBuilder: (context) => Text (context.l10n.station),
132
- pageId: uuid,
133
- pageBuilder: (_) => StationPage (uuid: uuid),
134
- iconBuilder: (selected) => StationPageIcon (
135
- uuid: uuid,
136
- selected: selected,
137
- ),
138
- ),
139
- ];
140
- }
83
+ MasterItem (
84
+ iconBuilder: (selected) => Icon (Iconz .plus),
85
+ titleBuilder: (context) => Text (context.l10n.add),
86
+ pageBuilder: (_) => const CustomContentPage (),
87
+ pageId: PageIDs .customContent,
88
+ ),
89
+ MasterItem (
90
+ titleBuilder: (context) => Text (context.l10n.likedSongs),
91
+ pageId: PageIDs .likedAudios,
92
+ pageBuilder: (_) => const LikedAudioPage (),
93
+ subtitleBuilder: (context) => Text (context.l10n.playlist),
94
+ iconBuilder: (selected) => LikedAudioPageIcon (selected: selected),
95
+ ),
96
+ ];
97
+
98
+ Iterable <MasterItem > createPlaylistMasterItems () =>
99
+ di <LibraryModel >().playlistIDs.map (
100
+ (id) => MasterItem (
101
+ titleBuilder: (context) => Text (id),
102
+ subtitleBuilder: (context) => Text (context.l10n.playlist),
103
+ pageId: id,
104
+ pageBuilder: (_) => PlaylistPage (pageId: id),
105
+ iconBuilder: (selected) => SideBarFallBackImage (
106
+ color: getAlphabetColor (id),
107
+ child: Icon (Iconz .playlist),
108
+ ),
109
+ ),
110
+ );
111
+
112
+ Iterable <MasterItem > createStarredStationsMasterItems () =>
113
+ di <LibraryModel >().starredStations.map (
114
+ (uuid) => MasterItem (
115
+ titleBuilder: (_) => StationTitle (uuid: uuid),
116
+ subtitleBuilder: (context) => Text (context.l10n.station),
117
+ pageId: uuid,
118
+ pageBuilder: (_) => StationPage (uuid: uuid),
119
+ iconBuilder: (selected) => StationPageIcon (
120
+ uuid: uuid,
121
+ selected: selected,
122
+ ),
123
+ ),
124
+ );
125
+
126
+ Iterable <MasterItem > createFavoriteAlbumsMasterItems () =>
127
+ di <LibraryModel >().favoriteAlbums.map (
128
+ (id) => MasterItem (
129
+ titleBuilder: (context) => Text (id.albumOfId),
130
+ subtitleBuilder: (context) => Text (id.artistOfId),
131
+ pageId: id,
132
+ pageBuilder: (_) => AlbumPage (id: id),
133
+ iconBuilder: (selected) => AlbumPageSideBarIcon (
134
+ albumId: id,
135
+ ),
136
+ ),
137
+ );
138
+
139
+ Iterable <MasterItem > createPodcastMasterItems () =>
140
+ di <LibraryModel >().podcastFeedUrls.map (
141
+ (feedUrl) => MasterItem (
142
+ titleBuilder: (_) => PodcastPageTitle (
143
+ feedUrl: feedUrl,
144
+ ),
145
+ subtitleBuilder: (_) => PodcastPageSubTitle (feedUrl: feedUrl),
146
+ pageId: feedUrl,
147
+ pageBuilder: (_) => LazyPodcastPage (feedUrl: feedUrl),
148
+ iconBuilder: (selected) => PodcastPageSideBarIcon (feedUrl: feedUrl),
149
+ ),
150
+ );
0 commit comments