diff --git a/lib/models/theme_settings.dart b/lib/models/theme_settings.dart index 2163cf8f..f2a6154c 100644 --- a/lib/models/theme_settings.dart +++ b/lib/models/theme_settings.dart @@ -38,11 +38,11 @@ class ThemeSettings { } Map toJson() => { - kThemeModeKey: themeMode.name, - kUseDynamicColorKey: useDynamicColor, - kSeedColorKey: seedColorValue, - kUseAmoledKey: useAmoled, - }; + kThemeModeKey: themeMode.name, + kUseDynamicColorKey: useDynamicColor, + kSeedColorKey: seedColorValue, + kUseAmoledKey: useAmoled, + }; factory ThemeSettings.fromJson(Map json) { return ThemeSettings( @@ -65,7 +65,10 @@ class ThemeSettings { @override int get hashCode => - themeMode.hashCode ^ useDynamicColor.hashCode ^ seedColorValue.hashCode ^ useAmoled.hashCode; + themeMode.hashCode ^ + useDynamicColor.hashCode ^ + seedColorValue.hashCode ^ + useAmoled.hashCode; } ThemeMode themeModeFromString(String? value) { diff --git a/lib/providers/download_queue_provider_embedding.dart b/lib/providers/download_queue_provider_embedding.dart index afe0ec10..e2792132 100644 --- a/lib/providers/download_queue_provider_embedding.dart +++ b/lib/providers/download_queue_provider_embedding.dart @@ -843,9 +843,7 @@ extension _DownloadQueueEmbedding on DownloadQueueNotifier { ); embeddedNatively = response['method'] != 'ffmpeg'; } catch (e) { - _log.w( - 'Native $format tag embed failed, falling back to FFmpeg: $e', - ); + _log.w('Native $format tag embed failed, falling back to FFmpeg: $e'); } } diff --git a/lib/providers/local_library_provider.dart b/lib/providers/local_library_provider.dart index 333009bb..2e397dd1 100644 --- a/lib/providers/local_library_provider.dart +++ b/lib/providers/local_library_provider.dart @@ -1045,4 +1045,3 @@ final localLibraryFirstCoverProvider = FutureProvider.autoDispose } return null; }); - diff --git a/lib/screens/library_tracks_folder_screen.dart b/lib/screens/library_tracks_folder_screen.dart index 8f7983e0..a8837b7c 100644 --- a/lib/screens/library_tracks_folder_screen.dart +++ b/lib/screens/library_tracks_folder_screen.dart @@ -633,11 +633,7 @@ class _LibraryTracksFolderScreenState color: Colors.black.withValues(alpha: 0.4), shape: BoxShape.circle, ), - child: const Icon( - Icons.ios_share, - color: Colors.white, - size: 20, - ), + child: const Icon(Icons.ios_share, color: Colors.white, size: 20), ), onPressed: () => _exportAsM3u8(context, title, entries), ), diff --git a/lib/screens/settings/backup_restore_page.dart b/lib/screens/settings/backup_restore_page.dart index aaa21a35..c480ad5e 100644 --- a/lib/screens/settings/backup_restore_page.dart +++ b/lib/screens/settings/backup_restore_page.dart @@ -39,9 +39,7 @@ class _BackupRestorePageState extends ConsumerState { try { final settings = ref.read(settingsProvider).toJson(); final history = await HistoryDatabase.instance.getAll(); - final collectionsNotifier = ref.read( - libraryCollectionsProvider.notifier, - ); + final collectionsNotifier = ref.read(libraryCollectionsProvider.notifier); final collections = await collectionsNotifier.exportCollections(); final covers = await collectionsNotifier.exportPlaylistCovers(); final extensions = await ref @@ -65,9 +63,7 @@ class _BackupRestorePageState extends ConsumerState { ); } catch (e, stack) { _log.e('Failed to create backup: $e', e, stack); - messenger.showSnackBar( - SnackBar(content: Text(l10n.backupCreateFailed)), - ); + messenger.showSnackBar(SnackBar(content: Text(l10n.backupCreateFailed))); } finally { if (mounted) setState(() => _isExporting = false); } @@ -89,17 +85,13 @@ class _BackupRestorePageState extends ConsumerState { content = await File(path).readAsString(); } catch (e) { _log.e('Failed to read backup file: $e'); - messenger.showSnackBar( - SnackBar(content: Text(l10n.backupInvalidFile)), - ); + messenger.showSnackBar(SnackBar(content: Text(l10n.backupInvalidFile))); return; } final bundle = BackupService.parse(content); if (bundle == null) { - messenger.showSnackBar( - SnackBar(content: Text(l10n.backupInvalidFile)), - ); + messenger.showSnackBar(SnackBar(content: Text(l10n.backupInvalidFile))); return; } @@ -148,9 +140,7 @@ class _BackupRestorePageState extends ConsumerState { ); } catch (e, stack) { _log.e('Failed to restore backup: $e', e, stack); - messenger.showSnackBar( - SnackBar(content: Text(l10n.backupRestoreFailed)), - ); + messenger.showSnackBar(SnackBar(content: Text(l10n.backupRestoreFailed))); } finally { if (mounted) setState(() => _isImporting = false); } @@ -201,16 +191,12 @@ class _BackupRestorePageState extends ConsumerState { if (bundle.favoriteArtistCount > 0) _ContentRow( icon: Icons.person_outline, - label: l10n.backupContentsArtists( - bundle.favoriteArtistCount, - ), + label: l10n.backupContentsArtists(bundle.favoriteArtistCount), ), if (bundle.extensionCount > 0) _ContentRow( icon: Icons.extension_outlined, - label: l10n.backupContentsExtensions( - bundle.extensionCount, - ), + label: l10n.backupContentsExtensions(bundle.extensionCount), ), ], ), @@ -238,9 +224,7 @@ class _BackupRestorePageState extends ConsumerState { slivers: [ SettingsSliverAppBar(title: l10n.backupTitle), SliverToBoxAdapter( - child: SettingsSectionHeader( - title: l10n.backupExportSectionTitle, - ), + child: SettingsSectionHeader(title: l10n.backupExportSectionTitle), ), SliverToBoxAdapter( child: SettingsGroup( @@ -272,9 +256,7 @@ class _BackupRestorePageState extends ConsumerState { ), ), SliverToBoxAdapter( - child: SettingsSectionHeader( - title: l10n.backupImportSectionTitle, - ), + child: SettingsSectionHeader(title: l10n.backupImportSectionTitle), ), SliverToBoxAdapter( child: SettingsGroup( diff --git a/lib/screens/settings/download_settings_page.dart b/lib/screens/settings/download_settings_page.dart index 0fea8247..8b84a475 100644 --- a/lib/screens/settings/download_settings_page.dart +++ b/lib/screens/settings/download_settings_page.dart @@ -1061,7 +1061,6 @@ class _ServiceChip extends StatelessWidget { class _MetadataSourceSelector extends ConsumerWidget { const _MetadataSourceSelector(); - @override Widget build(BuildContext context, WidgetRef ref) { final colorScheme = Theme.of(context).colorScheme; diff --git a/lib/screens/track_metadata_cards.dart b/lib/screens/track_metadata_cards.dart index 70cc8d64..6efcf648 100644 --- a/lib/screens/track_metadata_cards.dart +++ b/lib/screens/track_metadata_cards.dart @@ -224,7 +224,8 @@ extension _TrackMetadataCards on _TrackMetadataScreenState { if (_displayAudioQuality != null && _displayAudioQuality!.isNotEmpty) HeaderMetaItem(_displayAudioQuality!), - if (duration != null) HeaderMetaItem(formatClock(duration!)), + if (duration != null) + HeaderMetaItem(formatClock(duration!)), if (_service != 'local') HeaderMetaItem( _service[0].toUpperCase() + _service.substring(1), @@ -798,5 +799,4 @@ extension _TrackMetadataCards on _TrackMetadataScreenState { ), ); } - } diff --git a/lib/services/apk_downloader.dart b/lib/services/apk_downloader.dart index 74bd7773..ffc1ff7f 100644 --- a/lib/services/apk_downloader.dart +++ b/lib/services/apk_downloader.dart @@ -22,7 +22,7 @@ class ApkDownloader { final client = http.Client(); IOSink? sink; - + try { final request = http.Request('GET', uri); final response = await client.send(request); @@ -33,7 +33,7 @@ class ApkDownloader { } final contentLength = response.contentLength ?? 0; - + final dir = await getExternalStorageDirectory(); if (dir == null) { _log.e('Could not get storage directory'); @@ -42,7 +42,7 @@ class ApkDownloader { final filePath = '${dir.path}/SpotiFLAC-$version.apk'; final file = File(filePath); - + if (await file.exists()) { await file.delete(); } diff --git a/lib/services/m3u_playlist_service.dart b/lib/services/m3u_playlist_service.dart index 9ec34f6e..045f0522 100644 --- a/lib/services/m3u_playlist_service.dart +++ b/lib/services/m3u_playlist_service.dart @@ -83,9 +83,7 @@ class M3uPlaylistService { final track = entry.track; final duration = track.duration > 0 ? track.duration : -1; final artist = track.artistName.trim(); - final display = artist.isEmpty - ? track.name - : '$artist - ${track.name}'; + final display = artist.isEmpty ? track.name : '$artist - ${track.name}'; buffer ..write('#EXTINF:') ..write(duration) @@ -135,7 +133,10 @@ class M3uPlaylistService { } /// Writes the playlist to a shareable temp file named after the playlist. - static Future writeExportFile(String playlistName, String content) async { + static Future writeExportFile( + String playlistName, + String content, + ) async { final dir = await getTemporaryDirectory(); final safeName = playlistName .replaceAll(RegExp(r'[\\/:*?"<>|]'), '_') diff --git a/lib/services/music_player_service.dart b/lib/services/music_player_service.dart index 1fe2c73d..9f6399ec 100644 --- a/lib/services/music_player_service.dart +++ b/lib/services/music_player_service.dart @@ -477,9 +477,7 @@ class MusicPlayerHandler extends BaseAudioHandler if (_restoringSession) return; if (_media.isEmpty || _index < 0 || _index >= _media.length) { unawaited( - AppStateDatabase.instance.clearPlaybackSession().catchError(( - Object e, - ) { + AppStateDatabase.instance.clearPlaybackSession().catchError((Object e) { _log.w('Failed to clear playback session: $e'); }), ); @@ -798,8 +796,7 @@ class MusicPlayerHandler extends BaseAudioHandler } if (_index >= 0 && _index < _media.length - 1) { await _playIndex(_index + 1); - } else if (_repeatMode == AudioServiceRepeatMode.all && - _media.isNotEmpty) { + } else if (_repeatMode == AudioServiceRepeatMode.all && _media.isNotEmpty) { await _playIndex(0); } else { _broadcastState(playerState: PlayerState.completed); diff --git a/lib/services/update_checker.dart b/lib/services/update_checker.dart index 54dff61b..ad4df834 100644 --- a/lib/services/update_checker.dart +++ b/lib/services/update_checker.dart @@ -83,10 +83,7 @@ class UpdateChecker { .timeout(const Duration(seconds: 10)); if (response.statusCode == 304 && cachedBody != null) { - await prefs.setInt( - _cachedAtKey, - DateTime.now().millisecondsSinceEpoch, - ); + await prefs.setInt(_cachedAtKey, DateTime.now().millisecondsSinceEpoch); return cachedBody; } if (response.statusCode != 200) { diff --git a/lib/theme/dynamic_color_wrapper.dart b/lib/theme/dynamic_color_wrapper.dart index 77237502..75987812 100644 --- a/lib/theme/dynamic_color_wrapper.dart +++ b/lib/theme/dynamic_color_wrapper.dart @@ -5,12 +5,10 @@ import 'package:spotiflac_android/providers/theme_provider.dart'; import 'package:spotiflac_android/theme/app_theme.dart'; class DynamicColorWrapper extends ConsumerWidget { - final Widget Function(ThemeData light, ThemeData dark, ThemeMode mode) builder; + final Widget Function(ThemeData light, ThemeData dark, ThemeMode mode) + builder; - const DynamicColorWrapper({ - super.key, - required this.builder, - }); + const DynamicColorWrapper({super.key, required this.builder}); @override Widget build(BuildContext context, WidgetRef ref) { @@ -21,7 +19,9 @@ class DynamicColorWrapper extends ConsumerWidget { ColorScheme lightScheme; ColorScheme darkScheme; - if (themeSettings.useDynamicColor && lightDynamic != null && darkDynamic != null) { + if (themeSettings.useDynamicColor && + lightDynamic != null && + darkDynamic != null) { lightScheme = lightDynamic; darkScheme = darkDynamic; } else { @@ -41,7 +41,10 @@ class DynamicColorWrapper extends ConsumerWidget { } final lightTheme = AppTheme.light(dynamicScheme: lightScheme); - final darkTheme = AppTheme.dark(dynamicScheme: darkScheme, isAmoled: themeSettings.useAmoled); + final darkTheme = AppTheme.dark( + dynamicScheme: darkScheme, + isAmoled: themeSettings.useAmoled, + ); return builder(lightTheme, darkTheme, themeSettings.themeMode); }, diff --git a/lib/utils/lyrics_parser.dart b/lib/utils/lyrics_parser.dart index 89341405..415686a5 100644 --- a/lib/utils/lyrics_parser.dart +++ b/lib/utils/lyrics_parser.dart @@ -115,7 +115,10 @@ class LyricsParser { if (idMatch != null) { final key = idMatch.group(1)!.toLowerCase(); if (key == 'offset') { - final value = line.substring(line.indexOf(':') + 1).replaceAll(']', '').trim(); + final value = line + .substring(line.indexOf(':') + 1) + .replaceAll(']', '') + .trim(); offsetMs = int.tryParse(value) ?? 0; } continue; @@ -144,13 +147,7 @@ class LyricsParser { for (final tm in timeMatches) { final d = _toDuration(tm.group(1), tm.group(2), tm.group(3)); if (d == null) continue; - parsed.add( - LyricLine( - time: d, - text: cleanContent, - words: words, - ), - ); + parsed.add(LyricLine(time: d, text: cleanContent, words: words)); } } @@ -179,8 +176,10 @@ class LyricsParser { text: l.text, words: l.words .map( - (w) => - LyricWord(time: _shift(w.time, offsetMs), text: w.text), + (w) => LyricWord( + time: _shift(w.time, offsetMs), + text: w.text, + ), ) .toList(), ), @@ -211,7 +210,9 @@ class LyricsParser { final d = _toDuration(m.group(1), m.group(2), m.group(3)); if (d == null) continue; final start = m.end; - final end = i + 1 < matches.length ? matches[i + 1].start : content.length; + final end = i + 1 < matches.length + ? matches[i + 1].start + : content.length; final word = content.substring(start, end); if (word.trim().isEmpty) continue; words.add(LyricWord(time: d, text: word)); @@ -253,12 +254,7 @@ class LyricsParser { if (begin != null) { lines.add( - LyricLine( - time: begin, - end: end, - text: lineText, - words: words, - ), + LyricLine(time: begin, end: end, text: lineText, words: words), ); } } @@ -301,11 +297,7 @@ class LyricsParser { final h = int.parse(parts[0]); final m = int.parse(parts[1]); final s = double.parse(parts[2]); - return Duration( - hours: h, - minutes: m, - milliseconds: (s * 1000).round(), - ); + return Duration(hours: h, minutes: m, milliseconds: (s * 1000).round()); } else if (parts.length == 2) { final m = int.parse(parts[0]); final s = double.parse(parts[1]); diff --git a/lib/widgets/animation_utils.dart b/lib/widgets/animation_utils.dart index d3218bbe..6e5f5d95 100644 --- a/lib/widgets/animation_utils.dart +++ b/lib/widgets/animation_utils.dart @@ -346,11 +346,7 @@ class _CollectionHeaderSkeleton extends StatelessWidget { padding: const EdgeInsets.fromLTRB(24, 24, 24, 24), child: Column( children: [ - SkeletonBox( - width: coverSize, - height: coverSize, - borderRadius: 16, - ), + SkeletonBox(width: coverSize, height: coverSize, borderRadius: 16), const SizedBox(height: 20), SkeletonBox(width: screenWidth * 0.6, height: 22, borderRadius: 6), const SizedBox(height: 10), diff --git a/lib/widgets/donate_icons.dart b/lib/widgets/donate_icons.dart index dfea548d..8665e2d2 100644 --- a/lib/widgets/donate_icons.dart +++ b/lib/widgets/donate_icons.dart @@ -8,10 +8,7 @@ class KofiIcon extends StatelessWidget { @override Widget build(BuildContext context) { - return CustomPaint( - size: Size(size, size), - painter: _KofiPainter(color), - ); + return CustomPaint(size: Size(size, size), painter: _KofiPainter(color)); } } @@ -54,8 +51,22 @@ class _KofiPainter extends CustomPainter { final heart = Path() ..moveTo(hx, hy + hs * 0.3) - ..cubicTo(hx - hs, hy - hs * 0.3, hx - hs * 0.5, hy - hs, hx, hy - hs * 0.4) - ..cubicTo(hx + hs * 0.5, hy - hs, hx + hs, hy - hs * 0.3, hx, hy + hs * 0.3) + ..cubicTo( + hx - hs, + hy - hs * 0.3, + hx - hs * 0.5, + hy - hs, + hx, + hy - hs * 0.4, + ) + ..cubicTo( + hx + hs * 0.5, + hy - hs, + hx + hs, + hy - hs * 0.3, + hx, + hy + hs * 0.3, + ) ..close(); canvas.drawPath(heart, heartPaint); @@ -86,10 +97,7 @@ class GitHubIcon extends StatelessWidget { @override Widget build(BuildContext context) { - return CustomPaint( - size: Size(size, size), - painter: _GitHubPainter(color), - ); + return CustomPaint(size: Size(size, size), painter: _GitHubPainter(color)); } } @@ -109,129 +117,204 @@ class _GitHubPainter extends CustomPainter { final path = Path(); path.moveTo(12 * scale, 0.5 * scale); path.cubicTo( - 5.37 * scale, 0.5 * scale, - 0 * scale, 5.87 * scale, - 0 * scale, 12.5 * scale, + 5.37 * scale, + 0.5 * scale, + 0 * scale, + 5.87 * scale, + 0 * scale, + 12.5 * scale, ); path.cubicTo( - 0 * scale, 17.78 * scale, - 3.44 * scale, 22.27 * scale, - 8.21 * scale, 23.85 * scale, + 0 * scale, + 17.78 * scale, + 3.44 * scale, + 22.27 * scale, + 8.21 * scale, + 23.85 * scale, ); path.cubicTo( - 8.81 * scale, 23.96 * scale, - 9.02 * scale, 23.59 * scale, - 9.02 * scale, 23.27 * scale, + 8.81 * scale, + 23.96 * scale, + 9.02 * scale, + 23.59 * scale, + 9.02 * scale, + 23.27 * scale, ); path.cubicTo( - 9.02 * scale, 22.98 * scale, - 9.01 * scale, 22.01 * scale, - 9.01 * scale, 21.01 * scale, + 9.02 * scale, + 22.98 * scale, + 9.01 * scale, + 22.01 * scale, + 9.01 * scale, + 21.01 * scale, ); path.cubicTo( - 5.67 * scale, 21.71 * scale, - 4.97 * scale, 19.56 * scale, - 4.97 * scale, 19.56 * scale, + 5.67 * scale, + 21.71 * scale, + 4.97 * scale, + 19.56 * scale, + 4.97 * scale, + 19.56 * scale, ); path.cubicTo( - 4.42 * scale, 18.22 * scale, - 3.63 * scale, 17.85 * scale, - 3.63 * scale, 17.85 * scale, + 4.42 * scale, + 18.22 * scale, + 3.63 * scale, + 17.85 * scale, + 3.63 * scale, + 17.85 * scale, ); path.cubicTo( - 2.55 * scale, 17.12 * scale, - 3.71 * scale, 17.13 * scale, - 3.71 * scale, 17.13 * scale, + 2.55 * scale, + 17.12 * scale, + 3.71 * scale, + 17.13 * scale, + 3.71 * scale, + 17.13 * scale, ); path.cubicTo( - 4.90 * scale, 17.22 * scale, - 5.53 * scale, 18.36 * scale, - 5.53 * scale, 18.36 * scale, + 4.90 * scale, + 17.22 * scale, + 5.53 * scale, + 18.36 * scale, + 5.53 * scale, + 18.36 * scale, ); path.cubicTo( - 6.58 * scale, 20.05 * scale, - 8.36 * scale, 19.53 * scale, - 9.05 * scale, 19.22 * scale, + 6.58 * scale, + 20.05 * scale, + 8.36 * scale, + 19.53 * scale, + 9.05 * scale, + 19.22 * scale, ); path.cubicTo( - 9.16 * scale, 18.45 * scale, - 9.47 * scale, 17.93 * scale, - 9.81 * scale, 17.63 * scale, + 9.16 * scale, + 18.45 * scale, + 9.47 * scale, + 17.93 * scale, + 9.81 * scale, + 17.63 * scale, ); path.cubicTo( - 7.15 * scale, 17.33 * scale, - 4.34 * scale, 16.33 * scale, - 4.34 * scale, 11.93 * scale, + 7.15 * scale, + 17.33 * scale, + 4.34 * scale, + 16.33 * scale, + 4.34 * scale, + 11.93 * scale, ); path.cubicTo( - 4.34 * scale, 10.68 * scale, - 4.81 * scale, 9.66 * scale, - 5.55 * scale, 8.86 * scale, + 4.34 * scale, + 10.68 * scale, + 4.81 * scale, + 9.66 * scale, + 5.55 * scale, + 8.86 * scale, ); path.cubicTo( - 5.43 * scale, 8.56 * scale, - 5.02 * scale, 7.40 * scale, - 5.67 * scale, 5.82 * scale, + 5.43 * scale, + 8.56 * scale, + 5.02 * scale, + 7.40 * scale, + 5.67 * scale, + 5.82 * scale, ); path.cubicTo( - 5.67 * scale, 5.82 * scale, - 6.66 * scale, 5.50 * scale, - 8.98 * scale, 6.99 * scale, + 5.67 * scale, + 5.82 * scale, + 6.66 * scale, + 5.50 * scale, + 8.98 * scale, + 6.99 * scale, ); path.cubicTo( - 9.94 * scale, 6.72 * scale, - 10.98 * scale, 6.59 * scale, - 12.0 * scale, 6.58 * scale, + 9.94 * scale, + 6.72 * scale, + 10.98 * scale, + 6.59 * scale, + 12.0 * scale, + 6.58 * scale, ); path.cubicTo( - 13.02 * scale, 6.59 * scale, - 14.06 * scale, 6.72 * scale, - 15.02 * scale, 6.99 * scale, + 13.02 * scale, + 6.59 * scale, + 14.06 * scale, + 6.72 * scale, + 15.02 * scale, + 6.99 * scale, ); path.cubicTo( - 17.34 * scale, 5.50 * scale, - 18.33 * scale, 5.82 * scale, - 18.33 * scale, 5.82 * scale, + 17.34 * scale, + 5.50 * scale, + 18.33 * scale, + 5.82 * scale, + 18.33 * scale, + 5.82 * scale, ); path.cubicTo( - 18.98 * scale, 7.40 * scale, - 18.57 * scale, 8.56 * scale, - 18.45 * scale, 8.86 * scale, + 18.98 * scale, + 7.40 * scale, + 18.57 * scale, + 8.56 * scale, + 18.45 * scale, + 8.86 * scale, ); path.cubicTo( - 19.19 * scale, 9.66 * scale, - 19.66 * scale, 10.68 * scale, - 19.66 * scale, 11.93 * scale, + 19.19 * scale, + 9.66 * scale, + 19.66 * scale, + 10.68 * scale, + 19.66 * scale, + 11.93 * scale, ); path.cubicTo( - 19.66 * scale, 16.34 * scale, - 16.84 * scale, 17.32 * scale, - 14.17 * scale, 17.62 * scale, + 19.66 * scale, + 16.34 * scale, + 16.84 * scale, + 17.32 * scale, + 14.17 * scale, + 17.62 * scale, ); path.cubicTo( - 14.59 * scale, 17.99 * scale, - 14.97 * scale, 18.70 * scale, - 14.97 * scale, 19.80 * scale, + 14.59 * scale, + 17.99 * scale, + 14.97 * scale, + 18.70 * scale, + 14.97 * scale, + 19.80 * scale, ); path.cubicTo( - 14.97 * scale, 21.40 * scale, - 14.95 * scale, 22.67 * scale, - 14.95 * scale, 23.27 * scale, + 14.97 * scale, + 21.40 * scale, + 14.95 * scale, + 22.67 * scale, + 14.95 * scale, + 23.27 * scale, ); path.cubicTo( - 14.95 * scale, 23.60 * scale, - 15.16 * scale, 23.97 * scale, - 15.77 * scale, 23.85 * scale, + 14.95 * scale, + 23.60 * scale, + 15.16 * scale, + 23.97 * scale, + 15.77 * scale, + 23.85 * scale, ); path.cubicTo( - 20.55 * scale, 22.26 * scale, - 24.0 * scale, 17.78 * scale, - 24.0 * scale, 12.5 * scale, + 20.55 * scale, + 22.26 * scale, + 24.0 * scale, + 17.78 * scale, + 24.0 * scale, + 12.5 * scale, ); path.cubicTo( - 24.0 * scale, 5.87 * scale, - 18.63 * scale, 0.5 * scale, - 12.0 * scale, 0.5 * scale, + 24.0 * scale, + 5.87 * scale, + 18.63 * scale, + 0.5 * scale, + 12.0 * scale, + 0.5 * scale, ); path.close(); diff --git a/lib/widgets/open_on_platform_sheet.dart b/lib/widgets/open_on_platform_sheet.dart index e354a159..be8a39e1 100644 --- a/lib/widgets/open_on_platform_sheet.dart +++ b/lib/widgets/open_on_platform_sheet.dart @@ -132,8 +132,9 @@ class OpenOnPlatformSheet extends StatelessWidget { padding: const EdgeInsets.fromLTRB(24, 8, 24, 32), child: Text( context.l10n.trackOpenOnNoLinks, - style: Theme.of(context).textTheme.bodyMedium - ?.copyWith(color: colorScheme.onSurfaceVariant), + style: Theme.of(context).textTheme.bodyMedium?.copyWith( + color: colorScheme.onSurfaceVariant, + ), ), ); } diff --git a/lib/widgets/settings_sliver_app_bar.dart b/lib/widgets/settings_sliver_app_bar.dart index 54e7ccfb..83180e9d 100644 --- a/lib/widgets/settings_sliver_app_bar.dart +++ b/lib/widgets/settings_sliver_app_bar.dart @@ -29,7 +29,8 @@ class SettingsSliverAppBar extends StatelessWidget { pinned: true, backgroundColor: colorScheme.surface, surfaceTintColor: Colors.transparent, - leading: leading ?? + leading: + leading ?? IconButton( tooltip: MaterialLocalizations.of(context).backButtonTooltip, icon: const Icon(Icons.arrow_back),