feat(flutter): adopt MainAppBarActions in Search, Discover, Playlists, Settings
Search keeps its conditional clear-text button and gains the shared nav widget after it. Discover/Playlists/Settings get an actions row they didn't have before. The kebab is now reachable from every top-level screen, which is the prerequisite for the Admin entry. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -7,6 +7,7 @@ import '../api/endpoints/discover.dart';
|
|||||||
import '../api/errors.dart';
|
import '../api/errors.dart';
|
||||||
import '../library/library_providers.dart' show dioProvider;
|
import '../library/library_providers.dart' show dioProvider;
|
||||||
import '../models/lidarr.dart';
|
import '../models/lidarr.dart';
|
||||||
|
import '../shared/widgets/main_app_bar_actions.dart';
|
||||||
import '../theme/theme_extension.dart';
|
import '../theme/theme_extension.dart';
|
||||||
|
|
||||||
final _discoverApiProvider = FutureProvider<DiscoverApi>((ref) async {
|
final _discoverApiProvider = FutureProvider<DiscoverApi>((ref) async {
|
||||||
@@ -87,6 +88,7 @@ class _DiscoverScreenState extends ConsumerState<DiscoverScreen> {
|
|||||||
onPressed: () => context.pop(),
|
onPressed: () => context.pop(),
|
||||||
),
|
),
|
||||||
title: Text('Discover', style: TextStyle(color: fs.parchment)),
|
title: Text('Discover', style: TextStyle(color: fs.parchment)),
|
||||||
|
actions: const [MainAppBarActions(currentRoute: '/discover')],
|
||||||
),
|
),
|
||||||
body: Column(children: [
|
body: Column(children: [
|
||||||
Padding(
|
Padding(
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|||||||
import 'package:go_router/go_router.dart';
|
import 'package:go_router/go_router.dart';
|
||||||
|
|
||||||
import '../models/playlist.dart';
|
import '../models/playlist.dart';
|
||||||
|
import '../shared/widgets/main_app_bar_actions.dart';
|
||||||
import '../theme/theme_extension.dart';
|
import '../theme/theme_extension.dart';
|
||||||
import 'playlists_provider.dart';
|
import 'playlists_provider.dart';
|
||||||
|
|
||||||
@@ -22,6 +23,7 @@ class PlaylistsListScreen extends ConsumerWidget {
|
|||||||
backgroundColor: fs.obsidian,
|
backgroundColor: fs.obsidian,
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
title: Text('Playlists', style: TextStyle(color: fs.parchment)),
|
title: Text('Playlists', style: TextStyle(color: fs.parchment)),
|
||||||
|
actions: const [MainAppBarActions(currentRoute: '/playlists')],
|
||||||
),
|
),
|
||||||
body: list.when(
|
body: list.when(
|
||||||
loading: () => const Center(child: CircularProgressIndicator()),
|
loading: () => const Center(child: CircularProgressIndicator()),
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import '../library/widgets/artist_card.dart';
|
|||||||
import '../library/widgets/track_row.dart';
|
import '../library/widgets/track_row.dart';
|
||||||
import '../models/search_response.dart';
|
import '../models/search_response.dart';
|
||||||
import '../player/player_provider.dart';
|
import '../player/player_provider.dart';
|
||||||
|
import '../shared/widgets/main_app_bar_actions.dart';
|
||||||
import '../theme/theme_extension.dart';
|
import '../theme/theme_extension.dart';
|
||||||
import 'search_provider.dart';
|
import 'search_provider.dart';
|
||||||
|
|
||||||
@@ -73,6 +74,7 @@ class _SearchScreenState extends ConsumerState<SearchScreen> {
|
|||||||
_focus.requestFocus();
|
_focus.requestFocus();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
const MainAppBarActions(currentRoute: '/search'),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
body: results.when(
|
body: results.when(
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import '../api/endpoints/settings.dart';
|
|||||||
import '../api/errors.dart';
|
import '../api/errors.dart';
|
||||||
import '../library/library_providers.dart' show dioProvider;
|
import '../library/library_providers.dart' show dioProvider;
|
||||||
import '../models/my_profile.dart';
|
import '../models/my_profile.dart';
|
||||||
|
import '../shared/widgets/main_app_bar_actions.dart';
|
||||||
import '../theme/theme_extension.dart';
|
import '../theme/theme_extension.dart';
|
||||||
|
|
||||||
final _settingsApiProvider = FutureProvider<SettingsApi>((ref) async {
|
final _settingsApiProvider = FutureProvider<SettingsApi>((ref) async {
|
||||||
@@ -37,6 +38,7 @@ class SettingsScreen extends ConsumerWidget {
|
|||||||
onPressed: () => context.pop(),
|
onPressed: () => context.pop(),
|
||||||
),
|
),
|
||||||
title: Text('Settings', style: TextStyle(color: fs.parchment)),
|
title: Text('Settings', style: TextStyle(color: fs.parchment)),
|
||||||
|
actions: const [MainAppBarActions(currentRoute: '/settings')],
|
||||||
),
|
),
|
||||||
body: ListView(
|
body: ListView(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||||
|
|||||||
Reference in New Issue
Block a user