💄 Adjust UI

This commit is contained in:
2025-12-16 22:44:31 +08:00
parent da71c31e2a
commit 2c56de7b06
3 changed files with 83 additions and 78 deletions

View File

@@ -23,6 +23,11 @@ class MyApp extends StatelessWidget {
brightness: Brightness.light, brightness: Brightness.light,
), ),
useMaterial3: true, useMaterial3: true,
inputDecorationTheme: InputDecorationTheme(
border: OutlineInputBorder(
borderRadius: const BorderRadius.all(Radius.circular(12)),
),
),
), ),
darkTheme: ThemeData( darkTheme: ThemeData(
colorScheme: ColorScheme.fromSeed( colorScheme: ColorScheme.fromSeed(
@@ -30,6 +35,11 @@ class MyApp extends StatelessWidget {
brightness: Brightness.dark, brightness: Brightness.dark,
), ),
useMaterial3: true, useMaterial3: true,
inputDecorationTheme: InputDecorationTheme(
border: OutlineInputBorder(
borderRadius: const BorderRadius.all(Radius.circular(12)),
),
),
), ),
themeMode: ThemeMode.system, themeMode: ThemeMode.system,
home: const Shell(), home: const Shell(),

View File

@@ -458,6 +458,7 @@ class LibraryScreen extends HookConsumerWidget {
builder: (context) => AlertDialog( builder: (context) => AlertDialog(
title: const Text('Edit Track'), title: const Text('Edit Track'),
content: Column( content: Column(
spacing: 16,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
TextField( TextField(

View File

@@ -23,11 +23,7 @@ class PlayerScreen extends HookConsumerWidget {
final tabController = useTabController(initialLength: 2); final tabController = useTabController(initialLength: 2);
final isMobile = MediaQuery.sizeOf(context).width <= 640; final isMobile = MediaQuery.sizeOf(context).width <= 640;
return Scaffold( return StreamBuilder<Playlist>(
body: Stack(
children: [
// Main content (StreamBuilder)
StreamBuilder<Playlist>(
stream: player.stream.playlist, stream: player.stream.playlist,
initialData: player.state.playlist, initialData: player.state.playlist,
builder: (context, snapshot) { builder: (context, snapshot) {
@@ -37,11 +33,15 @@ class PlayerScreen extends HookConsumerWidget {
return const Center(child: Text('No media selected')); return const Center(child: Text('No media selected'));
} }
final media = medias[index]; final media = medias[index];
final path = Uri.decodeFull(Uri.parse(media.uri).path);
final path = Uri.decodeFull(Uri.parse(media.uri).path);
final metadataAsync = ref.watch(trackMetadataProvider(path)); final metadataAsync = ref.watch(trackMetadataProvider(path));
return Builder( return Scaffold(
body: Stack(
children: [
// Main content (StreamBuilder)
Builder(
builder: (context) { builder: (context) {
if (isMobile) { if (isMobile) {
return Padding( return Padding(
@@ -65,8 +65,6 @@ class PlayerScreen extends HookConsumerWidget {
); );
} }
}, },
);
},
), ),
// IconButton // IconButton
Positioned( Positioned(
@@ -85,6 +83,8 @@ class PlayerScreen extends HookConsumerWidget {
top: MediaQuery.of(context).padding.top + 14, top: MediaQuery.of(context).padding.top + 14,
left: 54, left: 54,
right: 54, right: 54,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 24),
child: TabBar( child: TabBar(
controller: tabController, controller: tabController,
tabAlignment: TabAlignment.fill, tabAlignment: TabAlignment.fill,
@@ -98,9 +98,13 @@ class PlayerScreen extends HookConsumerWidget {
splashFactory: NoSplash.splashFactory, splashFactory: NoSplash.splashFactory,
), ),
), ),
),
_LyricsRefreshButton(trackPath: path),
], ],
), ),
); );
},
);
} }
} }
@@ -370,21 +374,14 @@ class _PlayerLyrics extends HookConsumerWidget {
final lyricsData = LyricsData.fromJsonString(track.lyrics!); final lyricsData = LyricsData.fromJsonString(track.lyrics!);
if (lyricsData.type == 'timed') { if (lyricsData.type == 'timed') {
return Stack( return _TimedLyricsView(
children: [
_TimedLyricsView(
lyrics: lyricsData, lyrics: lyricsData,
player: player, player: player,
trackPath: trackPath!, trackPath: trackPath!,
),
_LyricsRefreshButton(trackPath: trackPath!),
],
); );
} else { } else {
// Plain text lyrics // Plain text lyrics
return Stack( return ListView.builder(
children: [
ListView.builder(
padding: const EdgeInsets.all(16), padding: const EdgeInsets.all(16),
itemCount: lyricsData.lines.length, itemCount: lyricsData.lines.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
@@ -397,9 +394,6 @@ class _PlayerLyrics extends HookConsumerWidget {
), ),
); );
}, },
),
_LyricsRefreshButton(trackPath: trackPath!),
],
); );
} }
} catch (e) { } catch (e) {