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

View File

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

View File

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