mirror of
https://github.com/austinried/subtracks.git
synced 2026-02-10 23:02:43 +01:00
Compare commits
7 Commits
v2.0.0-alp
...
979a4b7c73
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
979a4b7c73 | ||
|
|
7b1da24748 | ||
|
|
7014aa85d1 | ||
|
|
abab674322 | ||
|
|
498bb22a69 | ||
|
|
11fe43a750 | ||
|
|
2a60a7306c |
8
.github/ISSUE_TEMPLATE/bug_report.md
vendored
8
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -23,10 +23,14 @@ A clear and concise description of what you expected to happen.
|
|||||||
**Screenshots**
|
**Screenshots**
|
||||||
If applicable, add screenshots to help explain your problem.
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
**Smartphone (please complete the following information):**
|
**Device**
|
||||||
- Device: [e.g. Pixel 4]
|
- Model: [e.g. Pixel 4]
|
||||||
- OS: [e.g. Android 12]
|
- OS: [e.g. Android 12]
|
||||||
- Subtracks version [e.g. 1.2.0]
|
- Subtracks version [e.g. 1.2.0]
|
||||||
|
|
||||||
|
**Server**
|
||||||
|
- Software: [e.g. Navidrome]
|
||||||
|
- Version: [e.g. 0.49.3]
|
||||||
|
|
||||||
**Additional context**
|
**Additional context**
|
||||||
Add any other context about the problem here.
|
Add any other context about the problem here.
|
||||||
|
|||||||
@@ -146,13 +146,8 @@
|
|||||||
],
|
],
|
||||||
|
|
||||||
"de": [
|
"de": [
|
||||||
"actionsCancel",
|
|
||||||
"actionsDelete",
|
|
||||||
"actionsDownload",
|
|
||||||
"actionsDownloadCancel",
|
|
||||||
"actionsDownloadDelete",
|
"actionsDownloadDelete",
|
||||||
"actionsOk",
|
"actionsOk",
|
||||||
"controlsShuffle",
|
|
||||||
"resourcesAlbumCount",
|
"resourcesAlbumCount",
|
||||||
"resourcesArtistCount",
|
"resourcesArtistCount",
|
||||||
"resourcesFilterAlbum",
|
"resourcesFilterAlbum",
|
||||||
@@ -177,13 +172,6 @@
|
|||||||
],
|
],
|
||||||
|
|
||||||
"es": [
|
"es": [
|
||||||
"actionsCancel",
|
|
||||||
"actionsDelete",
|
|
||||||
"actionsDownload",
|
|
||||||
"actionsDownloadCancel",
|
|
||||||
"actionsDownloadDelete",
|
|
||||||
"actionsOk",
|
|
||||||
"controlsShuffle",
|
|
||||||
"resourcesAlbumCount",
|
"resourcesAlbumCount",
|
||||||
"resourcesArtistCount",
|
"resourcesArtistCount",
|
||||||
"resourcesFilterAlbum",
|
"resourcesFilterAlbum",
|
||||||
@@ -238,37 +226,6 @@
|
|||||||
"settingsServersFieldsName"
|
"settingsServersFieldsName"
|
||||||
],
|
],
|
||||||
|
|
||||||
"gl": [
|
|
||||||
"actionsCancel",
|
|
||||||
"actionsDelete",
|
|
||||||
"actionsDownload",
|
|
||||||
"actionsDownloadCancel",
|
|
||||||
"actionsDownloadDelete",
|
|
||||||
"actionsOk",
|
|
||||||
"controlsShuffle",
|
|
||||||
"resourcesAlbumCount",
|
|
||||||
"resourcesArtistCount",
|
|
||||||
"resourcesFilterAlbum",
|
|
||||||
"resourcesFilterArtist",
|
|
||||||
"resourcesFilterOwner",
|
|
||||||
"resourcesFilterYear",
|
|
||||||
"resourcesPlaylistCount",
|
|
||||||
"resourcesSongCount",
|
|
||||||
"resourcesSongListDeleteAllContent",
|
|
||||||
"resourcesSongListDeleteAllTitle",
|
|
||||||
"resourcesSortByAlbum",
|
|
||||||
"resourcesSortByAlbumCount",
|
|
||||||
"resourcesSortByTitle",
|
|
||||||
"resourcesSortByUpdated",
|
|
||||||
"settingsAboutActionsSupport",
|
|
||||||
"settingsNetworkOptionsOfflineMode",
|
|
||||||
"settingsNetworkOptionsOfflineModeOff",
|
|
||||||
"settingsNetworkOptionsOfflineModeOn",
|
|
||||||
"settingsNetworkOptionsStreamFormat",
|
|
||||||
"settingsNetworkOptionsStreamFormatServerDefault",
|
|
||||||
"settingsServersFieldsName"
|
|
||||||
],
|
|
||||||
|
|
||||||
"it": [
|
"it": [
|
||||||
"actionsCancel",
|
"actionsCancel",
|
||||||
"actionsDelete",
|
"actionsDelete",
|
||||||
@@ -594,28 +551,11 @@
|
|||||||
],
|
],
|
||||||
|
|
||||||
"zh": [
|
"zh": [
|
||||||
"actionsCancel",
|
|
||||||
"actionsDelete",
|
|
||||||
"actionsDownload",
|
|
||||||
"actionsDownloadCancel",
|
|
||||||
"actionsDownloadDelete",
|
|
||||||
"actionsOk",
|
|
||||||
"controlsShuffle",
|
"controlsShuffle",
|
||||||
"resourcesAlbumCount",
|
"resourcesAlbumCount",
|
||||||
"resourcesArtistCount",
|
"resourcesArtistCount",
|
||||||
"resourcesFilterAlbum",
|
|
||||||
"resourcesFilterArtist",
|
|
||||||
"resourcesFilterOwner",
|
|
||||||
"resourcesFilterYear",
|
|
||||||
"resourcesPlaylistCount",
|
"resourcesPlaylistCount",
|
||||||
"resourcesSongCount",
|
"resourcesSongCount",
|
||||||
"resourcesSongListDeleteAllContent",
|
|
||||||
"resourcesSongListDeleteAllTitle",
|
|
||||||
"resourcesSortByAlbum",
|
|
||||||
"resourcesSortByAlbumCount",
|
|
||||||
"resourcesSortByTitle",
|
|
||||||
"resourcesSortByUpdated",
|
|
||||||
"settingsAboutActionsSupport",
|
|
||||||
"settingsNetworkOptionsOfflineMode",
|
"settingsNetworkOptionsOfflineMode",
|
||||||
"settingsNetworkOptionsOfflineModeOff",
|
"settingsNetworkOptionsOfflineModeOff",
|
||||||
"settingsNetworkOptionsOfflineModeOn",
|
"settingsNetworkOptionsOfflineModeOn",
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import 'package:fast_immutable_collections/fast_immutable_collections.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
@@ -77,7 +78,8 @@ class App extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
routeInformationParser: appRouter.defaultRouteParser(),
|
routeInformationParser: appRouter.defaultRouteParser(),
|
||||||
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
||||||
supportedLocales: AppLocalizations.supportedLocales,
|
supportedLocales: [...AppLocalizations.supportedLocales]
|
||||||
|
..moveToTheFront(const Locale('en')),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,6 +61,16 @@ class SourcePage extends HookConsumerWidget {
|
|||||||
required: true,
|
required: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
final forcePlaintextPassword = useState(!(source?.useTokenAuth ?? false));
|
||||||
|
final forcePlaintextSwitch = SwitchListTile(
|
||||||
|
value: forcePlaintextPassword.value,
|
||||||
|
title: Text(l.settingsServersOptionsForcePlaintextPasswordTitle),
|
||||||
|
subtitle: forcePlaintextPassword.value
|
||||||
|
? Text(l.settingsServersOptionsForcePlaintextPasswordDescriptionOn)
|
||||||
|
: Text(l.settingsServersOptionsForcePlaintextPasswordDescriptionOff),
|
||||||
|
onChanged: (value) => forcePlaintextPassword.value = value,
|
||||||
|
);
|
||||||
|
|
||||||
return WillPopScope(
|
return WillPopScope(
|
||||||
onWillPop: () async => !isSaving.value && !isDeleting.value,
|
onWillPop: () async => !isSaving.value && !isDeleting.value,
|
||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
@@ -128,6 +138,7 @@ class SourcePage extends HookConsumerWidget {
|
|||||||
address: Uri.parse(address.value),
|
address: Uri.parse(address.value),
|
||||||
username: username.value,
|
username: username.value,
|
||||||
password: password.value,
|
password: password.value,
|
||||||
|
useTokenAuth: !forcePlaintextPassword.value,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
@@ -142,7 +153,8 @@ class SourcePage extends HookConsumerWidget {
|
|||||||
features: IList(),
|
features: IList(),
|
||||||
username: username.value,
|
username: username.value,
|
||||||
password: password.value,
|
password: password.value,
|
||||||
useTokenAuth: const Value(true),
|
useTokenAuth:
|
||||||
|
Value(!forcePlaintextPassword.value),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -163,27 +175,29 @@ class SourcePage extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
body: Form(
|
body: Form(
|
||||||
key: form,
|
key: form,
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 24),
|
|
||||||
child: ListView(
|
child: ListView(
|
||||||
children: [
|
children: [
|
||||||
const SizedBox(height: 96 - kToolbarHeight),
|
const SizedBox(height: 96 - kToolbarHeight),
|
||||||
Text(
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||||
|
child: Text(
|
||||||
source == null
|
source == null
|
||||||
? l.settingsServersActionsAdd
|
? l.settingsServersActionsAdd
|
||||||
: l.settingsServersActionsEdit,
|
: l.settingsServersActionsEdit,
|
||||||
style: theme.textTheme.displaySmall,
|
style: theme.textTheme.displaySmall,
|
||||||
),
|
),
|
||||||
|
),
|
||||||
name,
|
name,
|
||||||
address,
|
address,
|
||||||
username,
|
username,
|
||||||
password,
|
password,
|
||||||
|
const SizedBox(height: 24),
|
||||||
|
forcePlaintextSwitch,
|
||||||
const FabPadding(),
|
const FabPadding(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -224,14 +238,13 @@ class LabeledTextField extends HookConsumerWidget {
|
|||||||
final theme = Theme.of(context);
|
final theme = Theme.of(context);
|
||||||
_controller = useTextEditingController(text: initialValue);
|
_controller = useTextEditingController(text: initialValue);
|
||||||
|
|
||||||
return Column(
|
return Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||||
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
children: [
|
children: [
|
||||||
const SizedBox(height: 24),
|
const SizedBox(height: 24),
|
||||||
Text(
|
Text(label, style: theme.textTheme.titleMedium),
|
||||||
label,
|
|
||||||
style: theme.textTheme.titleMedium,
|
|
||||||
),
|
|
||||||
TextFormField(
|
TextFormField(
|
||||||
controller: _controller,
|
controller: _controller,
|
||||||
obscureText: obscureText,
|
obscureText: obscureText,
|
||||||
@@ -253,6 +266,7 @@ class LabeledTextField extends HookConsumerWidget {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -192,5 +192,15 @@
|
|||||||
"settingsServersOptionsForcePlaintextPasswordDescriptionOn": "Passwort als Klartext senden (Veraltet, stellen Sie sicher, dass Ihre Verbindung sicher ist!)",
|
"settingsServersOptionsForcePlaintextPasswordDescriptionOn": "Passwort als Klartext senden (Veraltet, stellen Sie sicher, dass Ihre Verbindung sicher ist!)",
|
||||||
"@settingsServersOptionsForcePlaintextPasswordDescriptionOn": {},
|
"@settingsServersOptionsForcePlaintextPasswordDescriptionOn": {},
|
||||||
"settingsServersOptionsForcePlaintextPasswordTitle": "Erzwinge Klartextpasswort",
|
"settingsServersOptionsForcePlaintextPasswordTitle": "Erzwinge Klartextpasswort",
|
||||||
"@settingsServersOptionsForcePlaintextPasswordTitle": {}
|
"@settingsServersOptionsForcePlaintextPasswordTitle": {},
|
||||||
|
"actionsDelete": "Löschen",
|
||||||
|
"@actionsDelete": {},
|
||||||
|
"actionsDownload": "Herunterladen",
|
||||||
|
"@actionsDownload": {},
|
||||||
|
"actionsDownloadCancel": "Download abbrechen",
|
||||||
|
"@actionsDownloadCancel": {},
|
||||||
|
"controlsShuffle": "Zufall",
|
||||||
|
"@controlsShuffle": {},
|
||||||
|
"actionsCancel": "Abbrechen",
|
||||||
|
"@actionsCancel": {}
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"actionsStar": "Estrella",
|
"actionsStar": "Favorito",
|
||||||
"@actionsStar": {},
|
"@actionsStar": {},
|
||||||
"actionsUnstar": "Retirar estrella",
|
"actionsUnstar": "Retirar favorito",
|
||||||
"@actionsUnstar": {},
|
"@actionsUnstar": {},
|
||||||
"messagesNothingHere": "Nada aquí…",
|
"messagesNothingHere": "Nada aquí…",
|
||||||
"@messagesNothingHere": {},
|
"@messagesNothingHere": {},
|
||||||
@@ -192,5 +192,19 @@
|
|||||||
"settingsServersOptionsForcePlaintextPasswordDescriptionOn": "Enviar contraseña en texto plano (¡legado, asegúrese de que su conexión sea segura!)",
|
"settingsServersOptionsForcePlaintextPasswordDescriptionOn": "Enviar contraseña en texto plano (¡legado, asegúrese de que su conexión sea segura!)",
|
||||||
"@settingsServersOptionsForcePlaintextPasswordDescriptionOn": {},
|
"@settingsServersOptionsForcePlaintextPasswordDescriptionOn": {},
|
||||||
"settingsServersOptionsForcePlaintextPasswordTitle": "Forzar contraseña de texto sin formato",
|
"settingsServersOptionsForcePlaintextPasswordTitle": "Forzar contraseña de texto sin formato",
|
||||||
"@settingsServersOptionsForcePlaintextPasswordTitle": {}
|
"@settingsServersOptionsForcePlaintextPasswordTitle": {},
|
||||||
|
"actionsDelete": "Borrar",
|
||||||
|
"@actionsDelete": {},
|
||||||
|
"actionsOk": "Ok",
|
||||||
|
"@actionsOk": {},
|
||||||
|
"actionsDownload": "Descargar",
|
||||||
|
"@actionsDownload": {},
|
||||||
|
"actionsDownloadCancel": "Anular descargar",
|
||||||
|
"@actionsDownloadCancel": {},
|
||||||
|
"controlsShuffle": "Reproducir aleatoriamente",
|
||||||
|
"@controlsShuffle": {},
|
||||||
|
"actionsCancel": "Cancelar",
|
||||||
|
"@actionsCancel": {},
|
||||||
|
"actionsDownloadDelete": "Eliminar descargado",
|
||||||
|
"@actionsDownloadDelete": {}
|
||||||
}
|
}
|
||||||
@@ -192,5 +192,85 @@
|
|||||||
"settingsServersOptionsForcePlaintextPasswordDescriptionOn": "Enviar contrasinal en texto plano (herdado, pon coidado en que a conexión sexa segura!)",
|
"settingsServersOptionsForcePlaintextPasswordDescriptionOn": "Enviar contrasinal en texto plano (herdado, pon coidado en que a conexión sexa segura!)",
|
||||||
"@settingsServersOptionsForcePlaintextPasswordDescriptionOn": {},
|
"@settingsServersOptionsForcePlaintextPasswordDescriptionOn": {},
|
||||||
"settingsServersOptionsForcePlaintextPasswordTitle": "Forzar contrasinal en texto plano",
|
"settingsServersOptionsForcePlaintextPasswordTitle": "Forzar contrasinal en texto plano",
|
||||||
"@settingsServersOptionsForcePlaintextPasswordTitle": {}
|
"@settingsServersOptionsForcePlaintextPasswordTitle": {},
|
||||||
|
"actionsCancel": "Cancelar",
|
||||||
|
"@actionsCancel": {},
|
||||||
|
"actionsDelete": "Eliminar",
|
||||||
|
"@actionsDelete": {},
|
||||||
|
"actionsDownload": "Descargar",
|
||||||
|
"@actionsDownload": {},
|
||||||
|
"actionsDownloadCancel": "Cancelar a descarga",
|
||||||
|
"@actionsDownloadCancel": {},
|
||||||
|
"actionsDownloadDelete": "Eliminar o descargado",
|
||||||
|
"@actionsDownloadDelete": {},
|
||||||
|
"actionsOk": "OK",
|
||||||
|
"@actionsOk": {},
|
||||||
|
"controlsShuffle": "Barallar",
|
||||||
|
"@controlsShuffle": {},
|
||||||
|
"resourcesAlbumCount": "{count,plural, =1{{count} álbum} other{{count} álbums}}",
|
||||||
|
"@resourcesAlbumCount": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resourcesArtistCount": "{count,plural, =1{{count} artista} other{{count} artistas}}",
|
||||||
|
"@resourcesArtistCount": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resourcesFilterAlbum": "Álbum",
|
||||||
|
"@resourcesFilterAlbum": {},
|
||||||
|
"resourcesFilterArtist": "Artista",
|
||||||
|
"@resourcesFilterArtist": {},
|
||||||
|
"resourcesFilterOwner": "Dono",
|
||||||
|
"@resourcesFilterOwner": {},
|
||||||
|
"resourcesFilterYear": "Ano",
|
||||||
|
"@resourcesFilterYear": {},
|
||||||
|
"resourcesPlaylistCount": "{count,plural, =1{{count} lista} other{{count} listas}}",
|
||||||
|
"@resourcesPlaylistCount": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resourcesSongCount": "{count,plural, =1{{count} canción} other{{count} cancións}}",
|
||||||
|
"@resourcesSongCount": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resourcesSongListDeleteAllContent": "Vas eliminar todas as cancións descargadas.",
|
||||||
|
"@resourcesSongListDeleteAllContent": {},
|
||||||
|
"resourcesSongListDeleteAllTitle": "Eliminar descargas?",
|
||||||
|
"@resourcesSongListDeleteAllTitle": {},
|
||||||
|
"resourcesSortByAlbum": "Álbum",
|
||||||
|
"@resourcesSortByAlbum": {},
|
||||||
|
"resourcesSortByAlbumCount": "Número de álbums",
|
||||||
|
"@resourcesSortByAlbumCount": {},
|
||||||
|
"settingsAboutActionsSupport": "Axuda ao desenvolvemento 💜",
|
||||||
|
"@settingsAboutActionsSupport": {},
|
||||||
|
"settingsNetworkOptionsOfflineMode": "Modo sen conexión",
|
||||||
|
"@settingsNetworkOptionsOfflineMode": {},
|
||||||
|
"settingsNetworkOptionsOfflineModeOff": "Usa internet para sincr. música.",
|
||||||
|
"@settingsNetworkOptionsOfflineModeOff": {},
|
||||||
|
"settingsNetworkOptionsOfflineModeOn": "Non usar internet para sincr. ou reproducir música.",
|
||||||
|
"@settingsNetworkOptionsOfflineModeOn": {},
|
||||||
|
"settingsNetworkOptionsStreamFormat": "Modo de reprodución preferido",
|
||||||
|
"@settingsNetworkOptionsStreamFormat": {},
|
||||||
|
"settingsNetworkOptionsStreamFormatServerDefault": "Usar por defecto do servidor",
|
||||||
|
"@settingsNetworkOptionsStreamFormatServerDefault": {},
|
||||||
|
"settingsServersFieldsName": "Nome",
|
||||||
|
"@settingsServersFieldsName": {},
|
||||||
|
"resourcesSortByTitle": "Título",
|
||||||
|
"@resourcesSortByTitle": {},
|
||||||
|
"resourcesSortByUpdated": "Actualizado recentemente",
|
||||||
|
"@resourcesSortByUpdated": {}
|
||||||
}
|
}
|
||||||
@@ -192,5 +192,39 @@
|
|||||||
"settingsServersOptionsForcePlaintextPasswordDescriptionOn": "密码以明文发送(不推荐,注意链接安全!)",
|
"settingsServersOptionsForcePlaintextPasswordDescriptionOn": "密码以明文发送(不推荐,注意链接安全!)",
|
||||||
"@settingsServersOptionsForcePlaintextPasswordDescriptionOn": {},
|
"@settingsServersOptionsForcePlaintextPasswordDescriptionOn": {},
|
||||||
"settingsServersOptionsForcePlaintextPasswordTitle": "强制使用明文密码",
|
"settingsServersOptionsForcePlaintextPasswordTitle": "强制使用明文密码",
|
||||||
"@settingsServersOptionsForcePlaintextPasswordTitle": {}
|
"@settingsServersOptionsForcePlaintextPasswordTitle": {},
|
||||||
|
"actionsDownload": "下载",
|
||||||
|
"@actionsDownload": {},
|
||||||
|
"actionsDownloadCancel": "取消下载",
|
||||||
|
"@actionsDownloadCancel": {},
|
||||||
|
"actionsDownloadDelete": "删除已下载",
|
||||||
|
"@actionsDownloadDelete": {},
|
||||||
|
"actionsOk": "确定",
|
||||||
|
"@actionsOk": {},
|
||||||
|
"resourcesFilterArtist": "歌手",
|
||||||
|
"@resourcesFilterArtist": {},
|
||||||
|
"resourcesFilterOwner": "所有者",
|
||||||
|
"@resourcesFilterOwner": {},
|
||||||
|
"resourcesSongListDeleteAllTitle": "删除下载?",
|
||||||
|
"@resourcesSongListDeleteAllTitle": {},
|
||||||
|
"resourcesSortByAlbum": "专辑",
|
||||||
|
"@resourcesSortByAlbum": {},
|
||||||
|
"resourcesSortByAlbumCount": "专辑数量",
|
||||||
|
"@resourcesSortByAlbumCount": {},
|
||||||
|
"resourcesSortByUpdated": "最近添加",
|
||||||
|
"@resourcesSortByUpdated": {},
|
||||||
|
"settingsAboutActionsSupport": "支持开发者",
|
||||||
|
"@settingsAboutActionsSupport": {},
|
||||||
|
"resourcesFilterAlbum": "专辑",
|
||||||
|
"@resourcesFilterAlbum": {},
|
||||||
|
"resourcesSortByTitle": "标题",
|
||||||
|
"@resourcesSortByTitle": {},
|
||||||
|
"actionsCancel": "取消",
|
||||||
|
"@actionsCancel": {},
|
||||||
|
"actionsDelete": "删除",
|
||||||
|
"@actionsDelete": {},
|
||||||
|
"resourcesFilterYear": "年份",
|
||||||
|
"@resourcesFilterYear": {},
|
||||||
|
"resourcesSongListDeleteAllContent": "该操作会删除所有已下载的歌曲文件。",
|
||||||
|
"@resourcesSongListDeleteAllContent": {}
|
||||||
}
|
}
|
||||||
@@ -82,10 +82,4 @@ class MusicSource implements BaseMusicSource {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Uri streamUri(String songId) => _source.streamUri(songId);
|
Uri streamUri(String songId) => _source.streamUri(songId);
|
||||||
|
|
||||||
@override
|
|
||||||
bool operator ==(other) => other is BaseMusicSource && (other.id == id);
|
|
||||||
|
|
||||||
@override
|
|
||||||
int get hashCode => id;
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user