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:
2026-05-08 21:50:29 -04:00
parent 5546787f78
commit fc0350cb96
4 changed files with 8 additions and 0 deletions
@@ -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),