try adding animated bars

This commit is contained in:
Pato05 2024-03-31 21:33:45 +02:00
parent 3f9c9d5027
commit 93d3e88bc4
No known key found for this signature in database
GPG Key ID: ED4C6F9C3D574FB6
7 changed files with 3697 additions and 33 deletions

30
build.sh Normal file → Executable file
View File

@ -1,15 +1,35 @@
echo "1. Linux"
echo "2. Android"
echo "3. All"
echo ""
echo -n "Target? "
read target
case "$target" in
1) target="linux";;
2) target="android --split-per-abi"
esac
build() {
set -x
flutter build $@
set +x
}
build_linux() {
build linux
}
build_android() {
build apk --split-per-abi
}
set -x
flutter pub get
flutter pub run build_runner build
flutter build $target
set +x
case "$target" in
1) build_linux;;
2) build_android;;
3)
build_linux &
build_android &
wait
;;
esac

59
lib/ui/animated_bars.dart Normal file
View File

@ -0,0 +1,59 @@
import 'dart:math';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
class AnimatedBars extends StatefulWidget {
final double size;
final Color? color;
const AnimatedBars({
super.key,
this.size = 24.0,
this.color,
});
@override
State<AnimatedBars> createState() => _AnimatedBarsState();
}
class _AnimatedBarsState extends State<AnimatedBars>
with TickerProviderStateMixin {
late final _controller = AnimationController(
vsync: this, duration: const Duration(milliseconds: 1000))
..repeat(reverse: true);
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
final color = widget.color ?? Theme.of(context).colorScheme.onSurface;
final r = Random();
final count = 3;
AnimatedIcons.search_ellipsis;
return SizedBox.square(
dimension: widget.size,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: List.generate(
count,
(index) => SizedBox(
width: widget.size / count,
child: Align(
alignment: Alignment.bottomCenter,
child: SizeTransition(
sizeFactor: Tween(begin: 1.0, end: 0.2)..animate(
CurvedAnimation(
parent: _controller.,
curve: Interval(0.1 * index, 0.3 * index,
curve: Curves.easeIn))),
axisAlignment: 1.0,
child: Container(color: color)),
),
)),
));
}
}

View File

@ -96,6 +96,7 @@ class PlayerScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
lazy: false,
create: (context) => BackgroundProvider(),
child: PlayerArtColorScheme(
child: PlayerScreenBackground(
@ -126,25 +127,21 @@ class PlayerArtColorScheme extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Consumer<BackgroundProvider>(
builder: (context, backgroundProvider, child) {
if (backgroundProvider.dominantColor == null) {
// do nothing
return child!;
}
final backgroundProvider = context.watch<BackgroundProvider>();
if (backgroundProvider.dominantColor == null) {
// do nothing
return child;
}
final brightness = forceDark
? Brightness.dark
: Theme.of(context).colorScheme.brightness;
final brightness =
forceDark ? Brightness.dark : Theme.of(context).colorScheme.brightness;
return Theme(
data: Theme.of(context).copyWith(
colorScheme: ColorScheme.fromSeed(
seedColor: backgroundProvider.dominantColor!,
brightness: brightness,
)),
child: child!);
},
return Theme(
data: Theme.of(context).copyWith(
colorScheme: ColorScheme.fromSeed(
seedColor: backgroundProvider.dominantColor!,
brightness: brightness,
)),
child: child);
}
}
@ -233,7 +230,7 @@ class PlayerScreenBackground extends StatelessWidget {
(settings.blurPlayerBackground || settings.colorGradientBackground);
final color = hasBackground
? Colors.transparent
: Theme.of(context).scaffoldBackgroundColor;
: Theme.of(context).colorScheme.background;
Widget widgetChild = Scaffold(
appBar: appBar,
backgroundColor: color,

View File

@ -8,6 +8,7 @@ import 'package:freezer/api/player/player_helper.dart';
import 'package:freezer/icons.dart';
import 'package:freezer/main.dart';
import 'package:freezer/translations.i18n.dart';
import 'package:freezer/ui/animated_bars.dart';
import '../api/definitions.dart';
import 'cached_image.dart';
@ -117,6 +118,29 @@ class TrackTile extends StatelessWidget {
width: 48.0,
height: 48.0,
),
// StreamBuilder<MediaItem?>(
// initialData: audioHandler.mediaItem.value,
// stream: audioHandler.mediaItem,
// builder: (context, snapshot) {
// final child = CachedImage(
// url: artUri,
// width: 48.0,
// height: 48.0,
// );
//
// if (snapshot.data?.id == trackId) {
// return Stack(children: [
// child,
// const Positioned.fill(
// child: DecoratedBox(
// decoration: BoxDecoration(color: Colors.black26),
// child: AnimatedBars()),
// ),
// ]);
// }
//
// return child;
// }),
onTap: onTap,
onLongPress: normalizeSecondary(onSecondary),
trailing: Row(

3563
page.web.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -60,10 +60,9 @@ packages:
audio_service_mpris:
dependency: "direct main"
description:
name: audio_service_mpris
sha256: a8d1583f9143d17b2facc994a99bd1ea257cec43adcb8d7349458555c62b570f
url: "https://pub.dev"
source: hosted
path: "../audio-service-mpris"
relative: true
source: path
version: "0.1.3"
audio_service_platform_interface:
dependency: transitive

View File

@ -84,17 +84,19 @@ dependencies:
# Player
just_audio: ^0.9.35
# Player plugin for Linux and Windows
just_audio_media_kit:
path: ../just_audio_media_kit
just_audio_media_kit: ^2.0.2
# Player libs for Linux and windows
media_kit_libs_linux: any
media_kit_libs_windows_audio: any
# Audio service plugin for Linux (MPRIS)
audio_service_mpris:
path: ../audio-service-mpris
rxdart: ^0.27.7
isar: ^3.1.0+1
isar_flutter_libs: ^3.1.0+1
flutter_background_service: ^5.0.1
audio_service_mpris: ^0.1.0
dio: ^5.3.3
dio_cookie_manager: ^3.1.1
flutter_cache_manager_hive:
@ -105,10 +107,10 @@ dependencies:
pointycastle: ^3.7.4
i18n_extension_importer: ^0.0.6
tray_manager: ^0.2.1
window_manager:
^0.3.8
window_manager: ^0.3.8
get_it: ^7.6.7
freezed_annotation: ^2.4.1
freezed_annotation:
^2.4.1
#deezcryptor:
#path: deezcryptor/