@@ -95,55 +95,10 @@ class TabDashboard extends ConsumerWidget {
9595 ),
9696
9797 /// Restrictions
98- ContentSectionHeader (
99- title: context.locale.restrictions_heading,
100- ),
101-
102- /// Apps blocking
103- DefaultListTile (
104- position: ItemPosition .top,
105- leadingIcon: FluentIcons .app_title_20_regular,
106- titleText: context.locale.apps_blocking_tile_title,
107- subtitleText: context.locale.apps_blocking_tile_subtitle,
108- onPressed: () =>
109- TabControllerProvider .maybeOf (context)? .animateToTab (
110- DefaultHomeTab .statistics.index,
111- ),
112- ),
113-
114- /// Grouped apps blocking
115- DefaultListTile (
116- position: ItemPosition .mid,
117- leadingIcon: FluentIcons .app_recent_20_regular,
118- titleText: context.locale.grouped_apps_blocking_tile_title,
119- subtitleText:
120- context.locale.grouped_apps_blocking_tile_subtitle,
121- trailing: const Icon (FluentIcons .chevron_right_20_regular),
122- onPressed: () => Navigator .of (context)
123- .pushNamed (AppRoutes .restrictionGroupsPath),
124- ),
98+ ..._restrictions (context),
12599
126- /// Shorts restrictions
127- DefaultListTile (
128- position: ItemPosition .mid,
129- leadingIcon: FluentIcons .resize_video_20_regular,
130- titleText: context.locale.shorts_blocking_tab_title,
131- subtitleText: context.locale.shorts_blocking_tile_subtitle,
132- trailing: const Icon (FluentIcons .chevron_right_20_regular),
133- onPressed: () => Navigator .of (context)
134- .pushNamed (AppRoutes .shortsBlockingPath),
135- ),
136-
137- /// Website restrictions
138- DefaultListTile (
139- position: ItemPosition .bottom,
140- leadingIcon: FluentIcons .earth_20_regular,
141- titleText: context.locale.websites_blocking_tab_title,
142- subtitleText: context.locale.websites_blocking_tile_subtitle,
143- trailing: const Icon (FluentIcons .chevron_right_20_regular),
144- onPressed: () => Navigator .of (context)
145- .pushNamed (AppRoutes .websitesBlockingPath),
146- ),
100+ /// Productivity
101+ ..._productivity (context),
147102 ].animateListOnce (
148103 ref: ref,
149104 uniqueKey: "home.dashboard" ,
@@ -161,4 +116,99 @@ class TabDashboard extends ConsumerWidget {
161116 ),
162117 );
163118 }
119+
120+ static List <Widget > _restrictions (BuildContext context) => [
121+ /// Restrictions
122+ ContentSectionHeader (
123+ title: context.locale.restrictions_heading,
124+ ),
125+
126+ /// Apps blocking
127+ DefaultListTile (
128+ position: ItemPosition .top,
129+ leadingIcon: FluentIcons .app_title_20_regular,
130+ titleText: context.locale.apps_blocking_tile_title,
131+ subtitleText: context.locale.apps_blocking_tile_subtitle,
132+ onPressed: () => TabControllerProvider .maybeOf (context)? .animateToTab (
133+ DefaultHomeTab .statistics.index,
134+ ),
135+ ),
136+
137+ /// Grouped apps blocking
138+ DefaultListTile (
139+ position: ItemPosition .mid,
140+ leadingIcon: FluentIcons .app_recent_20_regular,
141+ titleText: context.locale.grouped_apps_blocking_tile_title,
142+ subtitleText: context.locale.grouped_apps_blocking_tile_subtitle,
143+ trailing: const Icon (FluentIcons .chevron_right_20_regular),
144+ onPressed: () =>
145+ Navigator .of (context).pushNamed (AppRoutes .restrictionGroupsPath),
146+ ),
147+
148+ /// Shorts restrictions
149+ DefaultListTile (
150+ position: ItemPosition .mid,
151+ leadingIcon: FluentIcons .resize_video_20_regular,
152+ titleText: context.locale.shorts_blocking_tab_title,
153+ subtitleText: context.locale.shorts_blocking_tile_subtitle,
154+ trailing: const Icon (FluentIcons .chevron_right_20_regular),
155+ onPressed: () =>
156+ Navigator .of (context).pushNamed (AppRoutes .shortsBlockingPath),
157+ ),
158+
159+ /// Website restrictions
160+ DefaultListTile (
161+ position: ItemPosition .bottom,
162+ leadingIcon: FluentIcons .earth_20_regular,
163+ titleText: context.locale.websites_blocking_tab_title,
164+ subtitleText: context.locale.websites_blocking_tile_subtitle,
165+ trailing: const Icon (FluentIcons .chevron_right_20_regular),
166+ onPressed: () =>
167+ Navigator .of (context).pushNamed (AppRoutes .websitesBlockingPath),
168+ ),
169+ ];
170+
171+ static List <Widget > _productivity (BuildContext context) => [
172+ /// Productivity
173+ const ContentSectionHeader (title: "Productivity" ),
174+
175+ /// Habits
176+ DefaultListTile (
177+ position: ItemPosition .top,
178+ leadingIcon: FluentIcons .drink_coffee_20_regular,
179+ titleText: "Habits" ,
180+ subtitleText: "Build better habits and track them." ,
181+ trailing: const Icon (FluentIcons .chevron_right_20_regular),
182+ onPressed: () => context.showSnackAlert (
183+ "Coming soon..." ,
184+ icon: FluentIcons .info_20_filled,
185+ ),
186+ ),
187+
188+ /// Tasks and todos
189+ DefaultListTile (
190+ position: ItemPosition .mid,
191+ leadingIcon: FluentIcons .reading_list_20_regular,
192+ titleText: "Tasks and todos" ,
193+ subtitleText: "Plan your future with tasks and todos." ,
194+ trailing: const Icon (FluentIcons .chevron_right_20_regular),
195+ onPressed: () => context.showSnackAlert (
196+ "Coming soon..." ,
197+ icon: FluentIcons .info_20_filled,
198+ ),
199+ ),
200+
201+ /// Notes & lists
202+ DefaultListTile (
203+ position: ItemPosition .bottom,
204+ leadingIcon: FluentIcons .note_20_regular,
205+ titleText: "Notes and lists" ,
206+ subtitleText: "Capture thoughts, checklists, or ideas." ,
207+ trailing: const Icon (FluentIcons .chevron_right_20_regular),
208+ onPressed: () => context.showSnackAlert (
209+ "Coming soon..." ,
210+ icon: FluentIcons .info_20_filled,
211+ ),
212+ ),
213+ ];
164214}
0 commit comments