mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-08-02 17:18:36 +02:00
style(dart): apply repository formatting
This commit is contained in:
@@ -38,11 +38,11 @@ class ThemeSettings {
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
kThemeModeKey: themeMode.name,
|
||||
kUseDynamicColorKey: useDynamicColor,
|
||||
kSeedColorKey: seedColorValue,
|
||||
kUseAmoledKey: useAmoled,
|
||||
};
|
||||
kThemeModeKey: themeMode.name,
|
||||
kUseDynamicColorKey: useDynamicColor,
|
||||
kSeedColorKey: seedColorValue,
|
||||
kUseAmoledKey: useAmoled,
|
||||
};
|
||||
|
||||
factory ThemeSettings.fromJson(Map<String, dynamic> 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) {
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1045,4 +1045,3 @@ final localLibraryFirstCoverProvider = FutureProvider.autoDispose
|
||||
}
|
||||
return null;
|
||||
});
|
||||
|
||||
|
||||
@@ -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),
|
||||
),
|
||||
|
||||
@@ -39,9 +39,7 @@ class _BackupRestorePageState extends ConsumerState<BackupRestorePage> {
|
||||
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<BackupRestorePage> {
|
||||
);
|
||||
} 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<BackupRestorePage> {
|
||||
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<BackupRestorePage> {
|
||||
);
|
||||
} 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<BackupRestorePage> {
|
||||
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<BackupRestorePage> {
|
||||
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<BackupRestorePage> {
|
||||
),
|
||||
),
|
||||
SliverToBoxAdapter(
|
||||
child: SettingsSectionHeader(
|
||||
title: l10n.backupImportSectionTitle,
|
||||
),
|
||||
child: SettingsSectionHeader(title: l10n.backupImportSectionTitle),
|
||||
),
|
||||
SliverToBoxAdapter(
|
||||
child: SettingsGroup(
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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<File> writeExportFile(String playlistName, String content) async {
|
||||
static Future<File> writeExportFile(
|
||||
String playlistName,
|
||||
String content,
|
||||
) async {
|
||||
final dir = await getTemporaryDirectory();
|
||||
final safeName = playlistName
|
||||
.replaceAll(RegExp(r'[\\/:*?"<>|]'), '_')
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
},
|
||||
|
||||
@@ -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]);
|
||||
|
||||
@@ -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),
|
||||
|
||||
+168
-85
@@ -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();
|
||||
|
||||
|
||||
@@ -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,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user