Compare commits
No commits in common. "648cbf97a7e54fd1d473e9235d15ecdea6608963" and "2461c82e1d687deedc4e94f9a0f03a02a1ae157f" have entirely different histories.
648cbf97a7
...
2461c82e1d
12 changed files with 61 additions and 77 deletions
|
@ -1,4 +1,4 @@
|
|||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:fast_cached_network_image/fast_cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:just_audio/just_audio.dart';
|
||||
import 'package:just_audio_background/just_audio_background.dart';
|
||||
|
@ -56,7 +56,7 @@ class AudioPlayerService {
|
|||
themeNotifier.value = ColorScheme.fromSeed(seedColor: Colors.deepPurple);
|
||||
}
|
||||
themeNotifier.value = await ColorScheme.fromImageProvider(
|
||||
provider: CachedNetworkImageProvider(
|
||||
provider: FastCachedImageProvider(
|
||||
AudioPlayerService().song!.coverArtUrl,
|
||||
),
|
||||
);
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:ocarina/api/subsonic/subsonic.dart';
|
||||
part 'artist.g.dart';
|
||||
|
||||
@JsonSerializable()
|
||||
|
@ -35,7 +34,4 @@ class Artist {
|
|||
|
||||
/// Artist image URL
|
||||
final String artistImageUrl;
|
||||
|
||||
/// Returns the cover art URL formed from the [coverArtId]
|
||||
String get coverArt => SubsonicApiService().getCoverArtUrl(coverArtId);
|
||||
}
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
import 'package:fast_cached_network_image/fast_cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:just_audio_background/just_audio_background.dart';
|
||||
import 'package:just_audio_media_kit/just_audio_media_kit.dart';
|
||||
import 'package:ocarina/api/subsonic/song.dart';
|
||||
import 'package:ocarina/views/home_view.dart';
|
||||
import 'package:ocarina/widgets/player.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:responsive_sizer/responsive_sizer.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
|
@ -17,6 +19,11 @@ void main() async {
|
|||
androidNotificationOngoing: true,
|
||||
);
|
||||
|
||||
await FastCachedImageConfig.init(
|
||||
clearCacheAfter: const Duration(days: 31),
|
||||
subDir: (await getApplicationCacheDirectory()).path,
|
||||
);
|
||||
|
||||
sp = await SharedPreferences.getInstance();
|
||||
runApp(const MyApp());
|
||||
}
|
||||
|
|
|
@ -49,7 +49,6 @@ class _AlbumViewState extends State<AlbumView> {
|
|||
),
|
||||
SizedBox(
|
||||
height: 65.h,
|
||||
width: 95.w,
|
||||
child: ListView.builder(
|
||||
itemBuilder: (c, i) => InkWell(
|
||||
onTap: () async {
|
||||
|
|
|
@ -45,7 +45,7 @@ class _ArtistViewState extends State<ArtistView> {
|
|||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
HeroBanner(
|
||||
imageUrl: widget.artist.coverArt,
|
||||
imageUrl: widget.artist.artistImageUrl,
|
||||
title: widget.artist.name,
|
||||
description: "This could be a cool description soon",
|
||||
heroTag: widget.artist.name,
|
||||
|
|
|
@ -116,7 +116,7 @@ class _HomeViewState extends State<HomeView> {
|
|||
);
|
||||
},
|
||||
child: ImageCover(
|
||||
imageUrl: index.artists[n].coverArt,
|
||||
imageUrl: index.artists[n].artistImageUrl,
|
||||
title: index.artists[n].name,
|
||||
heroTag: index.artists[n].name,
|
||||
),
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
import 'package:auto_size_text/auto_size_text.dart';
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:fast_cached_network_image/fast_cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:responsive_sizer/responsive_sizer.dart';
|
||||
import 'package:shimmer/shimmer.dart';
|
||||
import 'package:text_scroll/text_scroll.dart';
|
||||
|
||||
class HeroBanner extends StatelessWidget {
|
||||
const HeroBanner({
|
||||
|
@ -29,16 +27,16 @@ class HeroBanner extends StatelessWidget {
|
|||
width: 180,
|
||||
child: Hero(
|
||||
tag: heroTag,
|
||||
child: CachedNetworkImage(
|
||||
imageUrl: imageUrl,
|
||||
placeholder: (c, d) => Shimmer.fromColors(
|
||||
child: FastCachedImage(
|
||||
url: imageUrl,
|
||||
loadingBuilder: (c, d) => Shimmer.fromColors(
|
||||
baseColor: Colors.grey.shade300,
|
||||
highlightColor: Colors.grey.shade100,
|
||||
child: Container(
|
||||
color: Colors.grey,
|
||||
),
|
||||
),
|
||||
errorWidget: (c, _, __) {
|
||||
errorBuilder: (c, _, __) {
|
||||
return ColoredBox(
|
||||
color: Theme.of(context).colorScheme.primaryContainer,
|
||||
child: Center(
|
||||
|
@ -62,12 +60,9 @@ class HeroBanner extends StatelessWidget {
|
|||
const SizedBox(
|
||||
height: 5,
|
||||
),
|
||||
AutoSizeText(
|
||||
description,
|
||||
overflowReplacement: TextScroll(description),
|
||||
),
|
||||
Text(description),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import 'package:auto_size_text/auto_size_text.dart';
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:fast_cached_network_image/fast_cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shimmer/shimmer.dart';
|
||||
import 'package:text_scroll/text_scroll.dart';
|
||||
|
@ -27,16 +27,16 @@ class ImageCover extends StatelessWidget {
|
|||
tag: heroTag,
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
child: CachedNetworkImage(
|
||||
imageUrl: imageUrl,
|
||||
placeholder: (c, d) => Shimmer.fromColors(
|
||||
child: FastCachedImage(
|
||||
url: imageUrl,
|
||||
loadingBuilder: (c, d) => Shimmer.fromColors(
|
||||
baseColor: Colors.grey.shade300,
|
||||
highlightColor: Colors.grey.shade100,
|
||||
child: Container(
|
||||
color: Colors.grey,
|
||||
),
|
||||
),
|
||||
errorWidget: (c, _, __) {
|
||||
errorBuilder: (c, _, __) {
|
||||
return ColoredBox(
|
||||
color: Theme.of(context).colorScheme.primaryContainer,
|
||||
child: Center(
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import 'dart:convert';
|
||||
|
||||
import 'package:auto_size_text/auto_size_text.dart';
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:crypto/crypto.dart';
|
||||
import 'package:fast_cached_network_image/fast_cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:ocarina/api/audio/audioplayer_service.dart';
|
||||
import 'package:ocarina/api/subsonic/song.dart';
|
||||
|
@ -100,7 +100,7 @@ class PlayerState extends State<Player> {
|
|||
),
|
||||
),
|
||||
)
|
||||
: CachedNetworkImage(
|
||||
: FastCachedImage(
|
||||
key: Key(
|
||||
md5
|
||||
.convert(
|
||||
|
@ -110,8 +110,8 @@ class PlayerState extends State<Player> {
|
|||
)
|
||||
.toString(),
|
||||
),
|
||||
imageUrl: t.coverArtUrl,
|
||||
placeholder: (c, d) =>
|
||||
url: t.coverArtUrl,
|
||||
loadingBuilder: (c, d) =>
|
||||
Shimmer.fromColors(
|
||||
baseColor: Colors.grey.shade300,
|
||||
highlightColor:
|
||||
|
@ -120,7 +120,7 @@ class PlayerState extends State<Player> {
|
|||
color: Colors.grey,
|
||||
),
|
||||
),
|
||||
errorWidget: (c, _, __) {
|
||||
errorBuilder: (c, _, __) {
|
||||
logger
|
||||
..e(_)
|
||||
..e(__);
|
||||
|
@ -226,17 +226,16 @@ class PlayerState extends State<Player> {
|
|||
),
|
||||
),
|
||||
)
|
||||
: (CachedNetworkImage(
|
||||
imageUrl:
|
||||
AudioPlayerService().song!.coverArtUrl,
|
||||
placeholder: (c, d) => Shimmer.fromColors(
|
||||
: (FastCachedImage(
|
||||
url: AudioPlayerService().song!.coverArtUrl,
|
||||
loadingBuilder: (c, d) => Shimmer.fromColors(
|
||||
baseColor: Colors.grey.shade300,
|
||||
highlightColor: Colors.grey.shade100,
|
||||
child: Container(
|
||||
color: Colors.grey,
|
||||
),
|
||||
),
|
||||
errorWidget: (c, _, __) {
|
||||
errorBuilder: (c, _, __) {
|
||||
logger
|
||||
..e(_)
|
||||
..e(__);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import 'package:auto_size_text/auto_size_text.dart';
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:fast_cached_network_image/fast_cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:text_scroll/text_scroll.dart';
|
||||
|
||||
|
@ -13,13 +13,9 @@ class SongRow extends StatelessWidget {
|
|||
borderRadius: BorderRadius.circular(8),
|
||||
child: InkWell(
|
||||
child: ListTile(
|
||||
leading: SizedBox(
|
||||
width: 100,
|
||||
height: 100,
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
child: CachedNetworkImage(imageUrl: imageUrl),
|
||||
),
|
||||
leading: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
child: FastCachedImage(url: imageUrl),
|
||||
),
|
||||
title: AutoSizeText(
|
||||
songTitle,
|
||||
|
|
56
pubspec.lock
56
pubspec.lock
|
@ -153,30 +153,6 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.9.2"
|
||||
cached_network_image:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: cached_network_image
|
||||
sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.3.1"
|
||||
cached_network_image_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cached_network_image_platform_interface
|
||||
sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.0"
|
||||
cached_network_image_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cached_network_image_web
|
||||
sha256: "205d6a9f1862de34b93184f22b9d2d94586b2f05c581d546695e3d8f6a805cd7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
characters:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -273,6 +249,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.1"
|
||||
fast_cached_network_image:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: fast_cached_network_image
|
||||
sha256: "91f1d48d10e2916b83a1e7545c1eaf752f85b32acfb1473be1f9fa51d73afef0"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.9"
|
||||
ffi:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -400,6 +384,22 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.1.2"
|
||||
hive:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: hive
|
||||
sha256: "8dcf6db979d7933da8217edcec84e9df1bdb4e4edc7fc77dbd5aa74356d6d941"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.3"
|
||||
hive_flutter:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: hive_flutter
|
||||
sha256: dca1da446b1d808a51689fb5d0c6c9510c0a2ba01e22805d492c73b68e33eecc
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
http:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -608,14 +608,6 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.5"
|
||||
octo_image:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: octo_image
|
||||
sha256: "45b40f99622f11901238e18d48f5f12ea36426d8eced9f4cbf58479c7aa2430d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
package_config:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
@ -42,6 +42,7 @@ dependencies:
|
|||
responsive_sizer: ^3.3.1
|
||||
path_provider: ^2.1.3
|
||||
shimmer: ^3.0.0
|
||||
fast_cached_network_image: ^1.2.9
|
||||
auto_size_text: ^3.0.0
|
||||
text_scroll: ^0.2.0
|
||||
grouped_list: ^5.1.2
|
||||
|
@ -54,7 +55,6 @@ dependencies:
|
|||
json_annotation: ^4.9.0
|
||||
shared_preferences: ^2.2.3
|
||||
dynamic_color: ^1.7.0
|
||||
cached_network_image: ^3.3.1
|
||||
|
||||
dev_dependencies:
|
||||
build_runner: ^2.4.9
|
||||
|
|
Loading…
Reference in a new issue