Updated player style

This commit is contained in:
2025-12-16 23:57:12 +08:00
parent bdc277a2e3
commit 8e9abbc364

View File

@@ -1,3 +1,5 @@
import 'dart:ui';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:drift/drift.dart' as drift; import 'package:drift/drift.dart' as drift;
@@ -38,6 +40,37 @@ class PlayerScreen extends HookConsumerWidget {
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));
// Build blurred background if cover art is available
Widget? background;
metadataAsync.when(
data: (meta) {
if (meta.artBytes != null) {
background = Positioned.fill(
child: Stack(
children: [
Container(
decoration: BoxDecoration(
image: DecorationImage(
image: MemoryImage(meta.artBytes!),
fit: BoxFit.cover,
),
),
),
BackdropFilter(
filter: ImageFilter.blur(sigmaX: 50, sigmaY: 50),
child: Container(color: Colors.black.withOpacity(0.6)),
),
],
),
);
} else {
background = null;
}
},
loading: () => background = null,
error: (_, __) => background = null,
);
return Focus( return Focus(
autofocus: true, autofocus: true,
onKeyEvent: (node, event) { onKeyEvent: (node, event) {
@@ -62,6 +95,7 @@ class PlayerScreen extends HookConsumerWidget {
child: Scaffold( child: Scaffold(
body: Stack( body: Stack(
children: [ children: [
...background != null ? [background!] : [],
// Main content (StreamBuilder) // Main content (StreamBuilder)
Builder( Builder(
builder: (context) { builder: (context) {