Compare commits

...

2 commits

12 changed files with 77 additions and 61 deletions

View file

@ -1,4 +1,4 @@
import 'package:fast_cached_network_image/fast_cached_network_image.dart';
import 'package:cached_network_image/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: FastCachedImageProvider(
provider: CachedNetworkImageProvider(
AudioPlayerService().song!.coverArtUrl,
),
);

View file

@ -1,4 +1,5 @@
import 'package:json_annotation/json_annotation.dart';
import 'package:ocarina/api/subsonic/subsonic.dart';
part 'artist.g.dart';
@JsonSerializable()
@ -34,4 +35,7 @@ class Artist {
/// Artist image URL
final String artistImageUrl;
/// Returns the cover art URL formed from the [coverArtId]
String get coverArt => SubsonicApiService().getCoverArtUrl(coverArtId);
}

View file

@ -1,11 +1,9 @@
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';
@ -19,11 +17,6 @@ void main() async {
androidNotificationOngoing: true,
);
await FastCachedImageConfig.init(
clearCacheAfter: const Duration(days: 31),
subDir: (await getApplicationCacheDirectory()).path,
);
sp = await SharedPreferences.getInstance();
runApp(const MyApp());
}

View file

@ -49,6 +49,7 @@ class _AlbumViewState extends State<AlbumView> {
),
SizedBox(
height: 65.h,
width: 95.w,
child: ListView.builder(
itemBuilder: (c, i) => InkWell(
onTap: () async {

View file

@ -45,7 +45,7 @@ class _ArtistViewState extends State<ArtistView> {
mainAxisAlignment: MainAxisAlignment.center,
children: [
HeroBanner(
imageUrl: widget.artist.artistImageUrl,
imageUrl: widget.artist.coverArt,
title: widget.artist.name,
description: "This could be a cool description soon",
heroTag: widget.artist.name,

View file

@ -116,7 +116,7 @@ class _HomeViewState extends State<HomeView> {
);
},
child: ImageCover(
imageUrl: index.artists[n].artistImageUrl,
imageUrl: index.artists[n].coverArt,
title: index.artists[n].name,
heroTag: index.artists[n].name,
),

View file

@ -1,7 +1,9 @@
import 'package:fast_cached_network_image/fast_cached_network_image.dart';
import 'package:auto_size_text/auto_size_text.dart';
import 'package:cached_network_image/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({
@ -27,16 +29,16 @@ class HeroBanner extends StatelessWidget {
width: 180,
child: Hero(
tag: heroTag,
child: FastCachedImage(
url: imageUrl,
loadingBuilder: (c, d) => Shimmer.fromColors(
child: CachedNetworkImage(
imageUrl: imageUrl,
placeholder: (c, d) => Shimmer.fromColors(
baseColor: Colors.grey.shade300,
highlightColor: Colors.grey.shade100,
child: Container(
color: Colors.grey,
),
),
errorBuilder: (c, _, __) {
errorWidget: (c, _, __) {
return ColoredBox(
color: Theme.of(context).colorScheme.primaryContainer,
child: Center(
@ -60,9 +62,12 @@ class HeroBanner extends StatelessWidget {
const SizedBox(
height: 5,
),
Text(description),
AutoSizeText(
description,
overflowReplacement: TextScroll(description),
),
],
)
),
],
),
);

View file

@ -1,5 +1,5 @@
import 'package:auto_size_text/auto_size_text.dart';
import 'package:fast_cached_network_image/fast_cached_network_image.dart';
import 'package:cached_network_image/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: FastCachedImage(
url: imageUrl,
loadingBuilder: (c, d) => Shimmer.fromColors(
child: CachedNetworkImage(
imageUrl: imageUrl,
placeholder: (c, d) => Shimmer.fromColors(
baseColor: Colors.grey.shade300,
highlightColor: Colors.grey.shade100,
child: Container(
color: Colors.grey,
),
),
errorBuilder: (c, _, __) {
errorWidget: (c, _, __) {
return ColoredBox(
color: Theme.of(context).colorScheme.primaryContainer,
child: Center(

View file

@ -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> {
),
),
)
: FastCachedImage(
: CachedNetworkImage(
key: Key(
md5
.convert(
@ -110,8 +110,8 @@ class PlayerState extends State<Player> {
)
.toString(),
),
url: t.coverArtUrl,
loadingBuilder: (c, d) =>
imageUrl: t.coverArtUrl,
placeholder: (c, d) =>
Shimmer.fromColors(
baseColor: Colors.grey.shade300,
highlightColor:
@ -120,7 +120,7 @@ class PlayerState extends State<Player> {
color: Colors.grey,
),
),
errorBuilder: (c, _, __) {
errorWidget: (c, _, __) {
logger
..e(_)
..e(__);
@ -226,16 +226,17 @@ class PlayerState extends State<Player> {
),
),
)
: (FastCachedImage(
url: AudioPlayerService().song!.coverArtUrl,
loadingBuilder: (c, d) => Shimmer.fromColors(
: (CachedNetworkImage(
imageUrl:
AudioPlayerService().song!.coverArtUrl,
placeholder: (c, d) => Shimmer.fromColors(
baseColor: Colors.grey.shade300,
highlightColor: Colors.grey.shade100,
child: Container(
color: Colors.grey,
),
),
errorBuilder: (c, _, __) {
errorWidget: (c, _, __) {
logger
..e(_)
..e(__);

View file

@ -1,5 +1,5 @@
import 'package:auto_size_text/auto_size_text.dart';
import 'package:fast_cached_network_image/fast_cached_network_image.dart';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:text_scroll/text_scroll.dart';
@ -13,9 +13,13 @@ class SongRow extends StatelessWidget {
borderRadius: BorderRadius.circular(8),
child: InkWell(
child: ListTile(
leading: ClipRRect(
borderRadius: BorderRadius.circular(8),
child: FastCachedImage(url: imageUrl),
leading: SizedBox(
width: 100,
height: 100,
child: ClipRRect(
borderRadius: BorderRadius.circular(8),
child: CachedNetworkImage(imageUrl: imageUrl),
),
),
title: AutoSizeText(
songTitle,

View file

@ -153,6 +153,30 @@ 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:
@ -249,14 +273,6 @@ 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:
@ -384,22 +400,6 @@ 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,6 +608,14 @@ 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:

View file

@ -42,7 +42,6 @@ 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
@ -55,6 +54,7 @@ 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