From 6efa41e03508b691e0b549564ad93a458ec0e5dc Mon Sep 17 00:00:00 2001 From: rang <378694192@qq.com> Date: Mon, 22 Dec 2025 15:04:04 +0800 Subject: [PATCH] =?UTF-8?q?hive=E5=88=87=E6=8D=A2hive=5Fce?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/launch.json | 3 +- lib/api/authenticated_users_provider.dart | 4 +- lib/api/authenticated_users_provider.g.dart | 2 +- lib/api/library_provider.g.dart | 2 +- lib/api/server_provider.dart | 4 +- lib/api/server_provider.g.dart | 2 +- lib/db/available_boxes.dart | 32 +- lib/db/cache/schemas/image.dart | 10 +- lib/db/cache/schemas/image.g.dart | 1009 ----------------- lib/db/init.dart | 9 +- lib/db/player_prefs/book_prefs.dart | 7 +- lib/db/player_prefs/book_prefs.g.dart | 496 -------- lib/db/register_models.dart | 101 +- lib/features/logging/core/logger.dart | 14 +- lib/features/play/player_new.dart | 45 + lib/features/play/player_new.g.dart | 159 +++ .../settings/api_settings_provider.dart | 6 +- .../settings/api_settings_provider.g.dart | 2 +- .../settings/app_settings_provider.dart | 2 +- .../settings/app_settings_provider.g.dart | 2 +- lib/framework.dart | 3 +- lib/generated/intl/messages_en.dart | 896 ++++++++------- lib/generated/intl/messages_zh.dart | 671 +++++------ linux/flutter/generated_plugin_registrant.cc | 4 - linux/flutter/generated_plugins.cmake | 1 - macos/Flutter/GeneratedPluginRegistrant.swift | 2 - pubspec.lock | 456 ++++---- pubspec.yaml | 21 +- .../flutter/generated_plugin_registrant.cc | 3 - windows/flutter/generated_plugins.cmake | 1 - 30 files changed, 1403 insertions(+), 2566 deletions(-) delete mode 100644 lib/db/cache/schemas/image.g.dart delete mode 100644 lib/db/player_prefs/book_prefs.g.dart create mode 100644 lib/features/play/player_new.dart create mode 100644 lib/features/play/player_new.g.dart diff --git a/.vscode/launch.json b/.vscode/launch.json index 3d5d2ff..a480b7c 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -8,7 +8,8 @@ "name": "vaani", "request": "launch", "program": "lib/main.dart", - "type": "dart" + "type": "dart", + "console": "terminal" }, { "name": "vaani (profile mode)", diff --git a/lib/api/authenticated_users_provider.dart b/lib/api/authenticated_users_provider.dart index d93be07..c203d32 100644 --- a/lib/api/authenticated_users_provider.dart +++ b/lib/api/authenticated_users_provider.dart @@ -20,7 +20,7 @@ final _logger = Logger('authenticated_users_provider'); class AuthenticatedUsers extends _$AuthenticatedUsers { @override Set build() { - ref.listenSelf((_, __) { + listenSelf((_, __) { writeStateToBox(); }); // get the app settings @@ -35,7 +35,7 @@ class AuthenticatedUsers extends _$AuthenticatedUsers { Set readFromBoxOrCreate() { if (_box.isNotEmpty) { - final foundData = _box.getRange(0, _box.length); + final foundData = _box.values.toList(); _logger.fine( 'found users in box: ${foundData.obfuscate()}', ); diff --git a/lib/api/authenticated_users_provider.g.dart b/lib/api/authenticated_users_provider.g.dart index 44a2610..b263107 100644 --- a/lib/api/authenticated_users_provider.g.dart +++ b/lib/api/authenticated_users_provider.g.dart @@ -7,7 +7,7 @@ part of 'authenticated_users_provider.dart'; // ************************************************************************** String _$authenticatedUsersHash() => - r'5fdd472f62fc3b73ff8417cdce9f02e86c33d00f'; + r'4b839cd69be08044e17e540290143c2a3b870b97'; /// provides with a set of authenticated users /// diff --git a/lib/api/library_provider.g.dart b/lib/api/library_provider.g.dart index a5a1add..52a1286 100644 --- a/lib/api/library_provider.g.dart +++ b/lib/api/library_provider.g.dart @@ -188,7 +188,7 @@ final librariesProvider = ); typedef _$Libraries = AutoDisposeAsyncNotifier>; -String _$libraryItemsHash() => r'847ff8f5c325a786f257c2b98986098a9664cbb5'; +String _$libraryItemsHash() => r'2927603eca709f7444a5d2ab5595dedc8596de78'; /// See also [LibraryItems]. @ProviderFor(LibraryItems) diff --git a/lib/api/server_provider.dart b/lib/api/server_provider.dart index 4e5793b..169b918 100644 --- a/lib/api/server_provider.dart +++ b/lib/api/server_provider.dart @@ -29,7 +29,7 @@ class ServerAlreadyExistsException implements Exception { class AudiobookShelfServer extends _$AudiobookShelfServer { @override Set build() { - ref.listenSelf((_, __) { + listenSelf((_, __) { writeStateToBox(); }); // get the app settings @@ -48,7 +48,7 @@ class AudiobookShelfServer extends _$AudiobookShelfServer { Set readFromBoxOrCreate() { if (_box.isNotEmpty) { - final foundServers = _box.getRange(0, _box.length); + final foundServers = _box.values.toList(); _logger.info('found servers in box: ${foundServers.obfuscate()}'); return foundServers.nonNulls.toSet(); } else { diff --git a/lib/api/server_provider.g.dart b/lib/api/server_provider.g.dart index ff2406a..1d545de 100644 --- a/lib/api/server_provider.g.dart +++ b/lib/api/server_provider.g.dart @@ -7,7 +7,7 @@ part of 'server_provider.dart'; // ************************************************************************** String _$audiobookShelfServerHash() => - r'31a96b431221965cd586aad670a32ca901539e41'; + r'b56be59093e7c7a4df8162fec1bdc9c066887ca2'; /// provides with a set of servers added by the user /// diff --git a/lib/db/available_boxes.dart b/lib/db/available_boxes.dart index 537b7b3..6d0cb75 100644 --- a/lib/db/available_boxes.dart +++ b/lib/db/available_boxes.dart @@ -1,5 +1,5 @@ import 'package:flutter/foundation.dart' show immutable; -import 'package:hive/hive.dart'; +import 'package:hive_ce/hive.dart'; import 'package:vaani/features/per_book_settings/models/book_settings.dart'; import 'package:vaani/features/settings/models/models.dart'; @@ -7,21 +7,41 @@ import 'package:vaani/features/settings/models/models.dart'; class AvailableHiveBoxes { const AvailableHiveBoxes._(); + static Future init() async { + /// Box for storing user preferences as [AppSettings] + await Hive.openBox('userPrefs'); + + /// Box for storing [ApiSettings] + await Hive.openBox('apiSettings'); + + /// stores the a list of [AudiobookShelfServer] + + await Hive.openBox('audiobookShelfServer'); + + /// stores the a list of [AuthenticatedUser] + + await Hive.openBox('authenticatedUser'); + + /// stores the a list of [BookSettings] + + await Hive.openBox('bookSettings'); + } + /// Box for storing user preferences as [AppSettings] - static final userPrefsBox = Hive.box(name: 'userPrefs'); + static final userPrefsBox = Hive.box('userPrefs'); /// Box for storing [ApiSettings] - static final apiSettingsBox = Hive.box(name: 'apiSettings'); + static final apiSettingsBox = Hive.box('apiSettings'); /// stores the a list of [AudiobookShelfServer] static final serverBox = - Hive.box(name: 'audiobookShelfServer'); + Hive.box('audiobookShelfServer'); /// stores the a list of [AuthenticatedUser] static final authenticatedUserBox = - Hive.box(name: 'authenticatedUser'); + Hive.box('authenticatedUser'); /// stores the a list of [BookSettings] static final individualBookSettingsBox = - Hive.box(name: 'bookSettings'); + Hive.box('bookSettings'); } diff --git a/lib/db/cache/schemas/image.dart b/lib/db/cache/schemas/image.dart index 9e93073..e33be82 100644 --- a/lib/db/cache/schemas/image.dart +++ b/lib/db/cache/schemas/image.dart @@ -1,6 +1,4 @@ -import 'package:isar/isar.dart'; - -part 'image.g.dart'; +// part 'image.g.dart'; /// Represents a cover image for a library item /// @@ -11,10 +9,10 @@ part 'image.g.dart'; /// also index the id /// This is because the image is a part of the library item and the library item /// is the parent of the image -@Collection(ignore: {'path'}) -@Name('CacheImage') +// @Collection(ignore: {'path'}) +// @Name('CacheImage') class Image { - @Id() + // @Id() int id; String? thumbnailPath; diff --git a/lib/db/cache/schemas/image.g.dart b/lib/db/cache/schemas/image.g.dart deleted file mode 100644 index 555ce5e..0000000 --- a/lib/db/cache/schemas/image.g.dart +++ /dev/null @@ -1,1009 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'image.dart'; - -// ************************************************************************** -// _IsarCollectionGenerator -// ************************************************************************** - -// coverage:ignore-file -// ignore_for_file: duplicate_ignore, invalid_use_of_protected_member, lines_longer_than_80_chars, constant_identifier_names, avoid_js_rounded_ints, no_leading_underscores_for_local_identifiers, require_trailing_commas, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_in_if_null_operators, library_private_types_in_public_api, prefer_const_constructors -// ignore_for_file: type=lint - -extension GetImageCollection on Isar { - IsarCollection get images => this.collection(); -} - -const ImageSchema = IsarGeneratedSchema( - schema: IsarSchema( - name: 'CacheImage', - idName: 'id', - embedded: false, - properties: [ - IsarPropertySchema( - name: 'thumbnailPath', - type: IsarType.string, - ), - IsarPropertySchema( - name: 'imagePath', - type: IsarType.string, - ), - IsarPropertySchema( - name: 'lastSaved', - type: IsarType.dateTime, - ), - ], - indexes: [], - ), - converter: IsarObjectConverter( - serialize: serializeImage, - deserialize: deserializeImage, - deserializeProperty: deserializeImageProp, - ), - embeddedSchemas: [], -); - -@isarProtected -int serializeImage(IsarWriter writer, Image object) { - { - final value = object.thumbnailPath; - if (value == null) { - IsarCore.writeNull(writer, 1); - } else { - IsarCore.writeString(writer, 1, value); - } - } - { - final value = object.imagePath; - if (value == null) { - IsarCore.writeNull(writer, 2); - } else { - IsarCore.writeString(writer, 2, value); - } - } - IsarCore.writeLong( - writer, 3, object.lastSaved.toUtc().microsecondsSinceEpoch); - return object.id; -} - -@isarProtected -Image deserializeImage(IsarReader reader) { - final int _id; - _id = IsarCore.readId(reader); - final String? _thumbnailPath; - _thumbnailPath = IsarCore.readString(reader, 1); - final String? _imagePath; - _imagePath = IsarCore.readString(reader, 2); - final object = Image( - id: _id, - thumbnailPath: _thumbnailPath, - imagePath: _imagePath, - ); - { - final value = IsarCore.readLong(reader, 3); - if (value == -9223372036854775808) { - object.lastSaved = - DateTime.fromMillisecondsSinceEpoch(0, isUtc: true).toLocal(); - } else { - object.lastSaved = - DateTime.fromMicrosecondsSinceEpoch(value, isUtc: true).toLocal(); - } - } - return object; -} - -@isarProtected -dynamic deserializeImageProp(IsarReader reader, int property) { - switch (property) { - case 0: - return IsarCore.readId(reader); - case 1: - return IsarCore.readString(reader, 1); - case 2: - return IsarCore.readString(reader, 2); - case 3: - { - final value = IsarCore.readLong(reader, 3); - if (value == -9223372036854775808) { - return DateTime.fromMillisecondsSinceEpoch(0, isUtc: true).toLocal(); - } else { - return DateTime.fromMicrosecondsSinceEpoch(value, isUtc: true) - .toLocal(); - } - } - default: - throw ArgumentError('Unknown property: $property'); - } -} - -sealed class _ImageUpdate { - bool call({ - required int id, - String? thumbnailPath, - String? imagePath, - DateTime? lastSaved, - }); -} - -class _ImageUpdateImpl implements _ImageUpdate { - const _ImageUpdateImpl(this.collection); - - final IsarCollection collection; - - @override - bool call({ - required int id, - Object? thumbnailPath = ignore, - Object? imagePath = ignore, - Object? lastSaved = ignore, - }) { - return collection.updateProperties([ - id - ], { - if (thumbnailPath != ignore) 1: thumbnailPath as String?, - if (imagePath != ignore) 2: imagePath as String?, - if (lastSaved != ignore) 3: lastSaved as DateTime?, - }) > - 0; - } -} - -sealed class _ImageUpdateAll { - int call({ - required List id, - String? thumbnailPath, - String? imagePath, - DateTime? lastSaved, - }); -} - -class _ImageUpdateAllImpl implements _ImageUpdateAll { - const _ImageUpdateAllImpl(this.collection); - - final IsarCollection collection; - - @override - int call({ - required List id, - Object? thumbnailPath = ignore, - Object? imagePath = ignore, - Object? lastSaved = ignore, - }) { - return collection.updateProperties(id, { - if (thumbnailPath != ignore) 1: thumbnailPath as String?, - if (imagePath != ignore) 2: imagePath as String?, - if (lastSaved != ignore) 3: lastSaved as DateTime?, - }); - } -} - -extension ImageUpdate on IsarCollection { - _ImageUpdate get update => _ImageUpdateImpl(this); - - _ImageUpdateAll get updateAll => _ImageUpdateAllImpl(this); -} - -sealed class _ImageQueryUpdate { - int call({ - String? thumbnailPath, - String? imagePath, - DateTime? lastSaved, - }); -} - -class _ImageQueryUpdateImpl implements _ImageQueryUpdate { - const _ImageQueryUpdateImpl(this.query, {this.limit}); - - final IsarQuery query; - final int? limit; - - @override - int call({ - Object? thumbnailPath = ignore, - Object? imagePath = ignore, - Object? lastSaved = ignore, - }) { - return query.updateProperties(limit: limit, { - if (thumbnailPath != ignore) 1: thumbnailPath as String?, - if (imagePath != ignore) 2: imagePath as String?, - if (lastSaved != ignore) 3: lastSaved as DateTime?, - }); - } -} - -extension ImageQueryUpdate on IsarQuery { - _ImageQueryUpdate get updateFirst => _ImageQueryUpdateImpl(this, limit: 1); - - _ImageQueryUpdate get updateAll => _ImageQueryUpdateImpl(this); -} - -class _ImageQueryBuilderUpdateImpl implements _ImageQueryUpdate { - const _ImageQueryBuilderUpdateImpl(this.query, {this.limit}); - - final QueryBuilder query; - final int? limit; - - @override - int call({ - Object? thumbnailPath = ignore, - Object? imagePath = ignore, - Object? lastSaved = ignore, - }) { - final q = query.build(); - try { - return q.updateProperties(limit: limit, { - if (thumbnailPath != ignore) 1: thumbnailPath as String?, - if (imagePath != ignore) 2: imagePath as String?, - if (lastSaved != ignore) 3: lastSaved as DateTime?, - }); - } finally { - q.close(); - } - } -} - -extension ImageQueryBuilderUpdate on QueryBuilder { - _ImageQueryUpdate get updateFirst => - _ImageQueryBuilderUpdateImpl(this, limit: 1); - - _ImageQueryUpdate get updateAll => _ImageQueryBuilderUpdateImpl(this); -} - -extension ImageQueryFilter on QueryBuilder { - QueryBuilder idEqualTo( - int value, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - EqualCondition( - property: 0, - value: value, - ), - ); - }); - } - - QueryBuilder idGreaterThan( - int value, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - GreaterCondition( - property: 0, - value: value, - ), - ); - }); - } - - QueryBuilder idGreaterThanOrEqualTo( - int value, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - GreaterOrEqualCondition( - property: 0, - value: value, - ), - ); - }); - } - - QueryBuilder idLessThan( - int value, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - LessCondition( - property: 0, - value: value, - ), - ); - }); - } - - QueryBuilder idLessThanOrEqualTo( - int value, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - LessOrEqualCondition( - property: 0, - value: value, - ), - ); - }); - } - - QueryBuilder idBetween( - int lower, - int upper, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - BetweenCondition( - property: 0, - lower: lower, - upper: upper, - ), - ); - }); - } - - QueryBuilder thumbnailPathIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const IsNullCondition(property: 1)); - }); - } - - QueryBuilder thumbnailPathIsNotNull() { - return QueryBuilder.apply(not(), (query) { - return query.addFilterCondition(const IsNullCondition(property: 1)); - }); - } - - QueryBuilder thumbnailPathEqualTo( - String? value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - EqualCondition( - property: 1, - value: value, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder thumbnailPathGreaterThan( - String? value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - GreaterCondition( - property: 1, - value: value, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder - thumbnailPathGreaterThanOrEqualTo( - String? value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - GreaterOrEqualCondition( - property: 1, - value: value, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder thumbnailPathLessThan( - String? value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - LessCondition( - property: 1, - value: value, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder - thumbnailPathLessThanOrEqualTo( - String? value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - LessOrEqualCondition( - property: 1, - value: value, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder thumbnailPathBetween( - String? lower, - String? upper, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - BetweenCondition( - property: 1, - lower: lower, - upper: upper, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder thumbnailPathStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - StartsWithCondition( - property: 1, - value: value, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder thumbnailPathEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - EndsWithCondition( - property: 1, - value: value, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder thumbnailPathContains( - String value, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - ContainsCondition( - property: 1, - value: value, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder thumbnailPathMatches( - String pattern, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - MatchesCondition( - property: 1, - wildcard: pattern, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder thumbnailPathIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - const EqualCondition( - property: 1, - value: '', - ), - ); - }); - } - - QueryBuilder thumbnailPathIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - const GreaterCondition( - property: 1, - value: '', - ), - ); - }); - } - - QueryBuilder imagePathIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const IsNullCondition(property: 2)); - }); - } - - QueryBuilder imagePathIsNotNull() { - return QueryBuilder.apply(not(), (query) { - return query.addFilterCondition(const IsNullCondition(property: 2)); - }); - } - - QueryBuilder imagePathEqualTo( - String? value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - EqualCondition( - property: 2, - value: value, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder imagePathGreaterThan( - String? value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - GreaterCondition( - property: 2, - value: value, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder - imagePathGreaterThanOrEqualTo( - String? value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - GreaterOrEqualCondition( - property: 2, - value: value, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder imagePathLessThan( - String? value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - LessCondition( - property: 2, - value: value, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder imagePathLessThanOrEqualTo( - String? value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - LessOrEqualCondition( - property: 2, - value: value, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder imagePathBetween( - String? lower, - String? upper, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - BetweenCondition( - property: 2, - lower: lower, - upper: upper, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder imagePathStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - StartsWithCondition( - property: 2, - value: value, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder imagePathEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - EndsWithCondition( - property: 2, - value: value, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder imagePathContains( - String value, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - ContainsCondition( - property: 2, - value: value, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder imagePathMatches( - String pattern, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - MatchesCondition( - property: 2, - wildcard: pattern, - caseSensitive: caseSensitive, - ), - ); - }); - } - - QueryBuilder imagePathIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - const EqualCondition( - property: 2, - value: '', - ), - ); - }); - } - - QueryBuilder imagePathIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - const GreaterCondition( - property: 2, - value: '', - ), - ); - }); - } - - QueryBuilder lastSavedEqualTo( - DateTime value, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - EqualCondition( - property: 3, - value: value, - ), - ); - }); - } - - QueryBuilder lastSavedGreaterThan( - DateTime value, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - GreaterCondition( - property: 3, - value: value, - ), - ); - }); - } - - QueryBuilder - lastSavedGreaterThanOrEqualTo( - DateTime value, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - GreaterOrEqualCondition( - property: 3, - value: value, - ), - ); - }); - } - - QueryBuilder lastSavedLessThan( - DateTime value, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - LessCondition( - property: 3, - value: value, - ), - ); - }); - } - - QueryBuilder lastSavedLessThanOrEqualTo( - DateTime value, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - LessOrEqualCondition( - property: 3, - value: value, - ), - ); - }); - } - - QueryBuilder lastSavedBetween( - DateTime lower, - DateTime upper, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - BetweenCondition( - property: 3, - lower: lower, - upper: upper, - ), - ); - }); - } -} - -extension ImageQueryObject on QueryBuilder {} - -extension ImageQuerySortBy on QueryBuilder { - QueryBuilder sortById() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(0); - }); - } - - QueryBuilder sortByIdDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(0, sort: Sort.desc); - }); - } - - QueryBuilder sortByThumbnailPath( - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addSortBy( - 1, - caseSensitive: caseSensitive, - ); - }); - } - - QueryBuilder sortByThumbnailPathDesc( - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addSortBy( - 1, - sort: Sort.desc, - caseSensitive: caseSensitive, - ); - }); - } - - QueryBuilder sortByImagePath( - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addSortBy( - 2, - caseSensitive: caseSensitive, - ); - }); - } - - QueryBuilder sortByImagePathDesc( - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addSortBy( - 2, - sort: Sort.desc, - caseSensitive: caseSensitive, - ); - }); - } - - QueryBuilder sortByLastSaved() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(3); - }); - } - - QueryBuilder sortByLastSavedDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(3, sort: Sort.desc); - }); - } -} - -extension ImageQuerySortThenBy on QueryBuilder { - QueryBuilder thenById() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(0); - }); - } - - QueryBuilder thenByIdDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(0, sort: Sort.desc); - }); - } - - QueryBuilder thenByThumbnailPath( - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(1, caseSensitive: caseSensitive); - }); - } - - QueryBuilder thenByThumbnailPathDesc( - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(1, sort: Sort.desc, caseSensitive: caseSensitive); - }); - } - - QueryBuilder thenByImagePath( - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(2, caseSensitive: caseSensitive); - }); - } - - QueryBuilder thenByImagePathDesc( - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(2, sort: Sort.desc, caseSensitive: caseSensitive); - }); - } - - QueryBuilder thenByLastSaved() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(3); - }); - } - - QueryBuilder thenByLastSavedDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(3, sort: Sort.desc); - }); - } -} - -extension ImageQueryWhereDistinct on QueryBuilder { - QueryBuilder distinctByThumbnailPath( - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(1, caseSensitive: caseSensitive); - }); - } - - QueryBuilder distinctByImagePath( - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(2, caseSensitive: caseSensitive); - }); - } - - QueryBuilder distinctByLastSaved() { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(3); - }); - } -} - -extension ImageQueryProperty1 on QueryBuilder { - QueryBuilder idProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(0); - }); - } - - QueryBuilder thumbnailPathProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(1); - }); - } - - QueryBuilder imagePathProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(2); - }); - } - - QueryBuilder lastSavedProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(3); - }); - } -} - -extension ImageQueryProperty2 on QueryBuilder { - QueryBuilder idProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(0); - }); - } - - QueryBuilder thumbnailPathProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(1); - }); - } - - QueryBuilder imagePathProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(2); - }); - } - - QueryBuilder lastSavedProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(3); - }); - } -} - -extension ImageQueryProperty3 - on QueryBuilder { - QueryBuilder idProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(0); - }); - } - - QueryBuilder thumbnailPathProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(1); - }); - } - - QueryBuilder imagePathProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(2); - }); - } - - QueryBuilder lastSavedProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(3); - }); - } -} diff --git a/lib/db/init.dart b/lib/db/init.dart index 1028efb..c6f4100 100644 --- a/lib/db/init.dart +++ b/lib/db/init.dart @@ -1,4 +1,5 @@ -import 'package:hive/hive.dart'; +import 'package:hive_ce_flutter/hive_flutter.dart'; +import 'package:vaani/db/available_boxes.dart'; import 'package:vaani/globals.dart'; import 'register_models.dart'; @@ -13,8 +14,10 @@ Future initStorage() async { // ); // await storageDir.create(recursive: true); - Hive.defaultDirectory = appDocumentsDir.path; - appLogger.config('Hive storage directory init: ${Hive.defaultDirectory}'); + Hive.initFlutter(appName); + // Hive.defaultDirectory = appDocumentsDir.path; + // appLogger.config('Hive storage directory init: ${Hive.defaultDirectory}'); await registerModels(); + await AvailableHiveBoxes.init(); } diff --git a/lib/db/player_prefs/book_prefs.dart b/lib/db/player_prefs/book_prefs.dart index b4e3807..6c9027b 100644 --- a/lib/db/player_prefs/book_prefs.dart +++ b/lib/db/player_prefs/book_prefs.dart @@ -1,13 +1,8 @@ // a table to track preferences of player for each book -import 'package:isar/isar.dart'; - -part 'book_prefs.g.dart'; +// part 'book_prefs.g.dart'; /// stores the preferences of the player for a book -@Collection() -@Name('BookPrefs') class BookPrefs { - @Id() int libItemId; double? speed; diff --git a/lib/db/player_prefs/book_prefs.g.dart b/lib/db/player_prefs/book_prefs.g.dart deleted file mode 100644 index ee012a5..0000000 --- a/lib/db/player_prefs/book_prefs.g.dart +++ /dev/null @@ -1,496 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'book_prefs.dart'; - -// ************************************************************************** -// _IsarCollectionGenerator -// ************************************************************************** - -// coverage:ignore-file -// ignore_for_file: duplicate_ignore, invalid_use_of_protected_member, lines_longer_than_80_chars, constant_identifier_names, avoid_js_rounded_ints, no_leading_underscores_for_local_identifiers, require_trailing_commas, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_in_if_null_operators, library_private_types_in_public_api, prefer_const_constructors -// ignore_for_file: type=lint - -extension GetBookPrefsCollection on Isar { - IsarCollection get bookPrefs => this.collection(); -} - -const BookPrefsSchema = IsarGeneratedSchema( - schema: IsarSchema( - name: 'BookPrefs', - idName: 'libItemId', - embedded: false, - properties: [ - IsarPropertySchema( - name: 'speed', - type: IsarType.double, - ), - ], - indexes: [], - ), - converter: IsarObjectConverter( - serialize: serializeBookPrefs, - deserialize: deserializeBookPrefs, - deserializeProperty: deserializeBookPrefsProp, - ), - embeddedSchemas: [], -); - -@isarProtected -int serializeBookPrefs(IsarWriter writer, BookPrefs object) { - IsarCore.writeDouble(writer, 1, object.speed ?? double.nan); - return object.libItemId; -} - -@isarProtected -BookPrefs deserializeBookPrefs(IsarReader reader) { - final int _libItemId; - _libItemId = IsarCore.readId(reader); - final double? _speed; - { - final value = IsarCore.readDouble(reader, 1); - if (value.isNaN) { - _speed = null; - } else { - _speed = value; - } - } - final object = BookPrefs( - libItemId: _libItemId, - speed: _speed, - ); - return object; -} - -@isarProtected -dynamic deserializeBookPrefsProp(IsarReader reader, int property) { - switch (property) { - case 0: - return IsarCore.readId(reader); - case 1: - { - final value = IsarCore.readDouble(reader, 1); - if (value.isNaN) { - return null; - } else { - return value; - } - } - default: - throw ArgumentError('Unknown property: $property'); - } -} - -sealed class _BookPrefsUpdate { - bool call({ - required int libItemId, - double? speed, - }); -} - -class _BookPrefsUpdateImpl implements _BookPrefsUpdate { - const _BookPrefsUpdateImpl(this.collection); - - final IsarCollection collection; - - @override - bool call({ - required int libItemId, - Object? speed = ignore, - }) { - return collection.updateProperties([ - libItemId - ], { - if (speed != ignore) 1: speed as double?, - }) > - 0; - } -} - -sealed class _BookPrefsUpdateAll { - int call({ - required List libItemId, - double? speed, - }); -} - -class _BookPrefsUpdateAllImpl implements _BookPrefsUpdateAll { - const _BookPrefsUpdateAllImpl(this.collection); - - final IsarCollection collection; - - @override - int call({ - required List libItemId, - Object? speed = ignore, - }) { - return collection.updateProperties(libItemId, { - if (speed != ignore) 1: speed as double?, - }); - } -} - -extension BookPrefsUpdate on IsarCollection { - _BookPrefsUpdate get update => _BookPrefsUpdateImpl(this); - - _BookPrefsUpdateAll get updateAll => _BookPrefsUpdateAllImpl(this); -} - -sealed class _BookPrefsQueryUpdate { - int call({ - double? speed, - }); -} - -class _BookPrefsQueryUpdateImpl implements _BookPrefsQueryUpdate { - const _BookPrefsQueryUpdateImpl(this.query, {this.limit}); - - final IsarQuery query; - final int? limit; - - @override - int call({ - Object? speed = ignore, - }) { - return query.updateProperties(limit: limit, { - if (speed != ignore) 1: speed as double?, - }); - } -} - -extension BookPrefsQueryUpdate on IsarQuery { - _BookPrefsQueryUpdate get updateFirst => - _BookPrefsQueryUpdateImpl(this, limit: 1); - - _BookPrefsQueryUpdate get updateAll => _BookPrefsQueryUpdateImpl(this); -} - -class _BookPrefsQueryBuilderUpdateImpl implements _BookPrefsQueryUpdate { - const _BookPrefsQueryBuilderUpdateImpl(this.query, {this.limit}); - - final QueryBuilder query; - final int? limit; - - @override - int call({ - Object? speed = ignore, - }) { - final q = query.build(); - try { - return q.updateProperties(limit: limit, { - if (speed != ignore) 1: speed as double?, - }); - } finally { - q.close(); - } - } -} - -extension BookPrefsQueryBuilderUpdate - on QueryBuilder { - _BookPrefsQueryUpdate get updateFirst => - _BookPrefsQueryBuilderUpdateImpl(this, limit: 1); - - _BookPrefsQueryUpdate get updateAll => _BookPrefsQueryBuilderUpdateImpl(this); -} - -extension BookPrefsQueryFilter - on QueryBuilder { - QueryBuilder libItemIdEqualTo( - int value, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - EqualCondition( - property: 0, - value: value, - ), - ); - }); - } - - QueryBuilder - libItemIdGreaterThan( - int value, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - GreaterCondition( - property: 0, - value: value, - ), - ); - }); - } - - QueryBuilder - libItemIdGreaterThanOrEqualTo( - int value, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - GreaterOrEqualCondition( - property: 0, - value: value, - ), - ); - }); - } - - QueryBuilder libItemIdLessThan( - int value, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - LessCondition( - property: 0, - value: value, - ), - ); - }); - } - - QueryBuilder - libItemIdLessThanOrEqualTo( - int value, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - LessOrEqualCondition( - property: 0, - value: value, - ), - ); - }); - } - - QueryBuilder libItemIdBetween( - int lower, - int upper, - ) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - BetweenCondition( - property: 0, - lower: lower, - upper: upper, - ), - ); - }); - } - - QueryBuilder speedIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const IsNullCondition(property: 1)); - }); - } - - QueryBuilder speedIsNotNull() { - return QueryBuilder.apply(not(), (query) { - return query.addFilterCondition(const IsNullCondition(property: 1)); - }); - } - - QueryBuilder speedEqualTo( - double? value, { - double epsilon = Filter.epsilon, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - EqualCondition( - property: 1, - value: value, - epsilon: epsilon, - ), - ); - }); - } - - QueryBuilder speedGreaterThan( - double? value, { - double epsilon = Filter.epsilon, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - GreaterCondition( - property: 1, - value: value, - epsilon: epsilon, - ), - ); - }); - } - - QueryBuilder - speedGreaterThanOrEqualTo( - double? value, { - double epsilon = Filter.epsilon, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - GreaterOrEqualCondition( - property: 1, - value: value, - epsilon: epsilon, - ), - ); - }); - } - - QueryBuilder speedLessThan( - double? value, { - double epsilon = Filter.epsilon, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - LessCondition( - property: 1, - value: value, - epsilon: epsilon, - ), - ); - }); - } - - QueryBuilder - speedLessThanOrEqualTo( - double? value, { - double epsilon = Filter.epsilon, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - LessOrEqualCondition( - property: 1, - value: value, - epsilon: epsilon, - ), - ); - }); - } - - QueryBuilder speedBetween( - double? lower, - double? upper, { - double epsilon = Filter.epsilon, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition( - BetweenCondition( - property: 1, - lower: lower, - upper: upper, - epsilon: epsilon, - ), - ); - }); - } -} - -extension BookPrefsQueryObject - on QueryBuilder {} - -extension BookPrefsQuerySortBy on QueryBuilder { - QueryBuilder sortByLibItemId() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(0); - }); - } - - QueryBuilder sortByLibItemIdDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(0, sort: Sort.desc); - }); - } - - QueryBuilder sortBySpeed() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(1); - }); - } - - QueryBuilder sortBySpeedDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(1, sort: Sort.desc); - }); - } -} - -extension BookPrefsQuerySortThenBy - on QueryBuilder { - QueryBuilder thenByLibItemId() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(0); - }); - } - - QueryBuilder thenByLibItemIdDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(0, sort: Sort.desc); - }); - } - - QueryBuilder thenBySpeed() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(1); - }); - } - - QueryBuilder thenBySpeedDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(1, sort: Sort.desc); - }); - } -} - -extension BookPrefsQueryWhereDistinct - on QueryBuilder { - QueryBuilder distinctBySpeed() { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(1); - }); - } -} - -extension BookPrefsQueryProperty1 - on QueryBuilder { - QueryBuilder libItemIdProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(0); - }); - } - - QueryBuilder speedProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(1); - }); - } -} - -extension BookPrefsQueryProperty2 - on QueryBuilder { - QueryBuilder libItemIdProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(0); - }); - } - - QueryBuilder speedProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(1); - }); - } -} - -extension BookPrefsQueryProperty3 - on QueryBuilder { - QueryBuilder libItemIdProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(0); - }); - } - - QueryBuilder speedProperty() { - return QueryBuilder.apply(this, (query) { - return query.addProperty(1); - }); - } -} diff --git a/lib/db/register_models.dart b/lib/db/register_models.dart index f84a181..2c4d01b 100644 --- a/lib/db/register_models.dart +++ b/lib/db/register_models.dart @@ -1,31 +1,92 @@ -import 'package:hive/hive.dart'; +import 'dart:convert'; + +import 'package:hive_ce/hive.dart'; import 'package:vaani/features/per_book_settings/models/book_settings.dart'; import 'package:vaani/features/settings/models/models.dart'; // register all models to Hive for serialization Future registerModels() async { - Hive.registerAdapter( - 'AppSettings', - ((json) => AppSettings.fromJson(json)), + Hive.registerAdapter( + JsonAdapter( + id: 1, + fromJson: AppSettings.fromJson, + ), ); - Hive.registerAdapter( - 'ApiSettings', - ((json) => ApiSettings.fromJson(json)), + Hive.registerAdapter( + JsonAdapter( + id: 2, + fromJson: ApiSettings.fromJson, + ), ); - Hive.registerAdapter( - 'AudiobookShelfServer', - ((json) => AudiobookShelfServer.fromJson(json)), + Hive.registerAdapter( + JsonAdapter( + id: 3, + fromJson: AudiobookShelfServer.fromJson, + ), ); - Hive.registerAdapter( - 'AuthenticatedUser', - ((json) => AuthenticatedUser.fromJson(json)), + Hive.registerAdapter( + JsonAdapter( + id: 4, + fromJson: AuthenticatedUser.fromJson, + ), ); - Hive.registerAdapter( - 'BookSettings', - ((json) => BookSettings.fromJson(json)), - ); - Hive.registerAdapter( - '_\$BookSettingsImpl', // hack because of freezed - ((json) => BookSettings.fromJson(json)), + Hive.registerAdapter( + JsonAdapter( + id: 5, + fromJson: BookSettings.fromJson, + ), ); } + +/// 通用 JSON Adapter(适合简单模型) +class JsonAdapter extends TypeAdapter { + final T Function(Map) fromJson; + final int id; + + const JsonAdapter({ + required this.id, + required this.fromJson, + }); + + @override + int get typeId => id; + + @override + T read(BinaryReader reader) { + final jsonString = reader.readString(); + final jsonMap = jsonDecode(jsonString); + return fromJson(jsonMap); + } + + @override + void write(BinaryWriter writer, T obj) { + writer.writeString(jsonEncode(obj)); + } +} + +// Future registerModels() async { +// Hive.registerAdapter( +// 'AppSettings', +// ((json) => AppSettings.fromJson(json)), +// ); +// Hive.registerAdapter( +// 'ApiSettings', +// ((json) => ApiSettings.fromJson(json)), +// ); +// Hive.registerAdapter( +// 'AudiobookShelfServer', +// ((json) => AudiobookShelfServer.fromJson(json)), +// ); +// Hive.registerAdapter( +// 'AuthenticatedUser', +// ((json) => AuthenticatedUser.fromJson(json)), +// ); +// Hive.registerAdapter( +// 'BookSettings', +// ((json) => BookSettings.fromJson(json)), +// ); +// Hive.registerAdapter( +// '_\$BookSettingsImpl', // hack because of freezed +// ((json) => BookSettings.fromJson(json)), +// ); +// } diff --git a/lib/features/logging/core/logger.dart b/lib/features/logging/core/logger.dart index 8c63880..d3a7feb 100644 --- a/lib/features/logging/core/logger.dart +++ b/lib/features/logging/core/logger.dart @@ -2,7 +2,7 @@ import 'package:flutter/foundation.dart'; import 'package:logging/logging.dart'; import 'package:logging_appenders/logging_appenders.dart'; import 'package:vaani/globals.dart'; -import 'package:vaani/shared/extensions/duration_format.dart'; +// import 'package:vaani/shared/extensions/duration_format.dart'; Future getLoggingFilePath() async { // final Directory directory = await getApplicationDocumentsDirectory(); @@ -24,11 +24,11 @@ Future initLogging() async { baseFilePath: await getLoggingFilePath(), formatter: formatter, ).attachToLogger(Logger.root); - Logger.root.onRecord.listen((record) { - // Print log records to the console - debugPrint( - '${record.loggerName}: ${record.level.name}: ${record.time.time}: ${record.message}', - ); - }); + // Logger.root.onRecord.listen((record) { + // // Print log records to the console + // debugPrint( + // '${record.loggerName}: ${record.level.name}: ${record.time.time}: ${record.message}', + // ); + // }); } } diff --git a/lib/features/play/player_new.dart b/lib/features/play/player_new.dart new file mode 100644 index 0000000..3392e81 --- /dev/null +++ b/lib/features/play/player_new.dart @@ -0,0 +1,45 @@ +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:logging/logging.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; +import 'package:shelfsdk/audiobookshelf_api.dart'; +import 'package:vaani/api/api_provider.dart'; +import 'package:vaani/globals.dart'; +import 'package:vaani/shared/extensions/model_conversions.dart'; + +part 'player_new.g.dart'; + +final _logger = Logger('player'); + +@Riverpod(keepAlive: true) +Future playback(Ref ref, String id) async { + final api = ref.watch(authenticatedApiProvider); + try { + final session = await api.items.play( + libraryItemId: id, + parameters: PlayItemReqParams( + deviceInfo: DeviceInfoReqParams( + clientVersion: appVersion, + manufacturer: deviceManufacturer, + model: deviceModel, + sdkVersion: deviceSdkVersion, + clientName: appName, + deviceName: deviceName, + ), + forceDirectPlay: false, + forceTranscode: false, + supportedMimeTypes: [ + "audio/flac", + "audio/mpeg", + "audio/mp4", + "audio/ogg", + "audio/aac", + "audio/webm", + ], + ), + ); + return session!.asExpanded; + } catch (e) { + _logger.severe('Error starting session: $e'); + throw StateError('Error starting session'); + } +} diff --git a/lib/features/play/player_new.g.dart b/lib/features/play/player_new.g.dart new file mode 100644 index 0000000..82a17ea --- /dev/null +++ b/lib/features/play/player_new.g.dart @@ -0,0 +1,159 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'player_new.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$playbackHash() => r'd4f270f9c46d6a52b186bc7271d584f28a5547f5'; + +/// Copied from Dart SDK +class _SystemHash { + _SystemHash._(); + + static int combine(int hash, int value) { + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + value); + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); + return hash ^ (hash >> 6); + } + + static int finish(int hash) { + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); + // ignore: parameter_assignments + hash = hash ^ (hash >> 11); + return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); + } +} + +/// See also [playback]. +@ProviderFor(playback) +const playbackProvider = PlaybackFamily(); + +/// See also [playback]. +class PlaybackFamily extends Family> { + /// See also [playback]. + const PlaybackFamily(); + + /// See also [playback]. + PlaybackProvider call( + String id, + ) { + return PlaybackProvider( + id, + ); + } + + @override + PlaybackProvider getProviderOverride( + covariant PlaybackProvider provider, + ) { + return call( + provider.id, + ); + } + + static const Iterable? _dependencies = null; + + @override + Iterable? get dependencies => _dependencies; + + static const Iterable? _allTransitiveDependencies = null; + + @override + Iterable? get allTransitiveDependencies => + _allTransitiveDependencies; + + @override + String? get name => r'playbackProvider'; +} + +/// See also [playback]. +class PlaybackProvider extends FutureProvider { + /// See also [playback]. + PlaybackProvider( + String id, + ) : this._internal( + (ref) => playback( + ref as PlaybackRef, + id, + ), + from: playbackProvider, + name: r'playbackProvider', + debugGetCreateSourceHash: + const bool.fromEnvironment('dart.vm.product') + ? null + : _$playbackHash, + dependencies: PlaybackFamily._dependencies, + allTransitiveDependencies: PlaybackFamily._allTransitiveDependencies, + id: id, + ); + + PlaybackProvider._internal( + super._createNotifier, { + required super.name, + required super.dependencies, + required super.allTransitiveDependencies, + required super.debugGetCreateSourceHash, + required super.from, + required this.id, + }) : super.internal(); + + final String id; + + @override + Override overrideWith( + FutureOr Function(PlaybackRef provider) create, + ) { + return ProviderOverride( + origin: this, + override: PlaybackProvider._internal( + (ref) => create(ref as PlaybackRef), + from: from, + name: null, + dependencies: null, + allTransitiveDependencies: null, + debugGetCreateSourceHash: null, + id: id, + ), + ); + } + + @override + FutureProviderElement createElement() { + return _PlaybackProviderElement(this); + } + + @override + bool operator ==(Object other) { + return other is PlaybackProvider && other.id == id; + } + + @override + int get hashCode { + var hash = _SystemHash.combine(0, runtimeType.hashCode); + hash = _SystemHash.combine(hash, id.hashCode); + + return _SystemHash.finish(hash); + } +} + +@Deprecated('Will be removed in 3.0. Use Ref instead') +// ignore: unused_element +mixin PlaybackRef on FutureProviderRef { + /// The parameter `id` of this provider. + String get id; +} + +class _PlaybackProviderElement + extends FutureProviderElement with PlaybackRef { + _PlaybackProviderElement(super.provider); + + @override + String get id => (origin as PlaybackProvider).id; +} +// ignore_for_file: type=lint +// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/features/settings/api_settings_provider.dart b/lib/features/settings/api_settings_provider.dart index 22bfd51..8972a97 100644 --- a/lib/features/settings/api_settings_provider.dart +++ b/lib/features/settings/api_settings_provider.dart @@ -30,12 +30,12 @@ class ApiSettings extends _$ApiSettings { var foundSettings = _box.getAt(0); // foundSettings.activeServer ??= foundSettings.activeUser?.server; // foundSettings =foundSettings.copyWith(activeServer: foundSettings.activeUser?.server); - if (foundSettings.activeServer == null) { - foundSettings = foundSettings.copyWith( + if (foundSettings?.activeServer == null) { + foundSettings = foundSettings!.copyWith( activeServer: foundSettings.activeUser?.server, ); } - _logger.fine('found api settings in box: ${foundSettings.obfuscate()}'); + _logger.fine('found api settings in box: ${foundSettings!.obfuscate()}'); return foundSettings; } else { // create a new settings object diff --git a/lib/features/settings/api_settings_provider.g.dart b/lib/features/settings/api_settings_provider.g.dart index eff1d41..d6f6191 100644 --- a/lib/features/settings/api_settings_provider.g.dart +++ b/lib/features/settings/api_settings_provider.g.dart @@ -6,7 +6,7 @@ part of 'api_settings_provider.dart'; // RiverpodGenerator // ************************************************************************** -String _$apiSettingsHash() => r'5bc1e16e9d72b77fb10637aabadf08e8947da580'; +String _$apiSettingsHash() => r'd7aff154cb65b0396df3ccfe25c59dedb56226fa'; /// See also [ApiSettings]. @ProviderFor(ApiSettings) diff --git a/lib/features/settings/app_settings_provider.dart b/lib/features/settings/app_settings_provider.dart index cceec68..05509ed 100644 --- a/lib/features/settings/app_settings_provider.dart +++ b/lib/features/settings/app_settings_provider.dart @@ -34,7 +34,7 @@ class AppSettings extends _$AppSettings { @override model.AppSettings build() { state = loadOrCreateAppSettings(); - ref.listenSelf((_, __) { + listenSelf((_, __) { writeToBox(); }); return state; diff --git a/lib/features/settings/app_settings_provider.g.dart b/lib/features/settings/app_settings_provider.g.dart index 8f3d8f5..f863a5d 100644 --- a/lib/features/settings/app_settings_provider.g.dart +++ b/lib/features/settings/app_settings_provider.g.dart @@ -6,7 +6,7 @@ part of 'app_settings_provider.dart'; // RiverpodGenerator // ************************************************************************** -String _$appSettingsHash() => r'314d7936f54550f57d308056a99230402342a6d0'; +String _$appSettingsHash() => r'744d7e0157eb3b089c4187b35b845fc78547a44e'; /// See also [AppSettings]. @ProviderFor(AppSettings) diff --git a/lib/framework.dart b/lib/framework.dart index adb88d0..cb05432 100644 --- a/lib/framework.dart +++ b/lib/framework.dart @@ -3,7 +3,6 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:vaani/features/downloads/providers/download_manager.dart'; import 'package:vaani/features/playback_reporting/providers/playback_reporter_provider.dart'; import 'package:vaani/features/shake_detector/shake_detector_provider.dart'; -import 'package:vaani/features/skip_start_end/providers/skip_start_end_provider.dart'; import 'package:vaani/features/sleep_timer/providers/sleep_timer_provider.dart'; import 'package:vaani/globals.dart'; import 'package:vaani/shared/utils/helper.dart'; @@ -24,7 +23,7 @@ class Framework extends ConsumerWidget { // ref.watch(skipStartEndProvider); ref.watch(playbackReporterProvider); } catch (e) { - debugPrintStack(stackTrace: StackTrace.current, label: e.toString()); + // debugPrintStack(stackTrace: StackTrace.current, label: e.toString()); appLogger.severe(e.toString()); } if (Helper.isDesktop()) return TrayManager(child); diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index 331e549..fd01b59 100644 --- a/lib/generated/intl/messages_en.dart +++ b/lib/generated/intl/messages_en.dart @@ -38,461 +38,483 @@ class MessageLookup extends MessageLookupByLibrary { final messages = _notInlinedMessages(_notInlinedMessages); static Map _notInlinedMessages(_) => { - "account": MessageLookupByLibrary.simpleMessage("Account"), - "accountAddNewServer": MessageLookupByLibrary.simpleMessage( - "Add New Server", - ), - "accountAddUser": MessageLookupByLibrary.simpleMessage("Add User"), - "accountAddUserDialog": m0, - "accountAddUserSuccessDialog": MessageLookupByLibrary.simpleMessage( - "User added successfully! Switch?", - ), - "accountAddUserTooltip": MessageLookupByLibrary.simpleMessage( - "Add new server", - ), - "accountAnonymous": MessageLookupByLibrary.simpleMessage("Anonymous"), - "accountDeleteServer": MessageLookupByLibrary.simpleMessage( - "Delete Server", - ), - "accountInvalidURL": MessageLookupByLibrary.simpleMessage("Invalid URL"), - "accountManage": MessageLookupByLibrary.simpleMessage("Manage Accounts"), - "accountRegisteredServers": MessageLookupByLibrary.simpleMessage( - "Registered Servers", - ), - "accountRemoveServerAndUsers": MessageLookupByLibrary.simpleMessage( - "Remove Server and Users", - ), - "accountRemoveServerAndUsersHead": MessageLookupByLibrary.simpleMessage( - "This will remove the server ", - ), - "accountRemoveServerAndUsersTail": MessageLookupByLibrary.simpleMessage( - " and all its users\' login info from this app.", - ), - "accountRemoveUserLogin": MessageLookupByLibrary.simpleMessage( - "Remove User Login", - ), - "accountRemoveUserLoginHead": MessageLookupByLibrary.simpleMessage( - "This will remove login details of the user ", - ), - "accountRemoveUserLoginTail": MessageLookupByLibrary.simpleMessage( - " from this app.", - ), - "accountServerURI": MessageLookupByLibrary.simpleMessage("Server URI"), - "accountSwitch": MessageLookupByLibrary.simpleMessage("Switch Account"), - "accountUsersCount": m1, - "appSettings": MessageLookupByLibrary.simpleMessage("App Settings"), - "appearance": MessageLookupByLibrary.simpleMessage("Appearance"), - "autoSleepTimerSettings": MessageLookupByLibrary.simpleMessage( - "Auto Sleep Timer Settings", - ), - "autoTurnOnSleepTimer": MessageLookupByLibrary.simpleMessage( - "Auto Turn On Sleep Timer", - ), - "autoTurnOnTimer": MessageLookupByLibrary.simpleMessage( - "Auto Turn On Timer", - ), - "autoTurnOnTimerAlways": MessageLookupByLibrary.simpleMessage( - "Always Auto Turn On Timer", - ), - "autoTurnOnTimerAlwaysDescription": MessageLookupByLibrary.simpleMessage( - "Always turn on the sleep timer, no matter what", - ), - "autoTurnOnTimerDescription": MessageLookupByLibrary.simpleMessage( - "Automatically turn on the sleep timer based on the time of day", - ), - "autoTurnOnTimerFrom": MessageLookupByLibrary.simpleMessage("From"), - "autoTurnOnTimerFromDescription": MessageLookupByLibrary.simpleMessage( - "Turn on the sleep timer at the specified time", - ), - "autoTurnOnTimerUntil": MessageLookupByLibrary.simpleMessage("Until"), - "autoTurnOnTimerUntilDescription": MessageLookupByLibrary.simpleMessage( - "Turn off the sleep timer at the specified time", - ), - "automaticallyDescription": MessageLookupByLibrary.simpleMessage( - "Automatically turn on the sleep timer based on the time of day", - ), - "backup": MessageLookupByLibrary.simpleMessage("Backup"), - "backupAndRestore": MessageLookupByLibrary.simpleMessage( - "Backup and Restore", - ), - "bookAbout": MessageLookupByLibrary.simpleMessage("About the Book"), - "bookAboutDefault": MessageLookupByLibrary.simpleMessage( - "Sorry, no description found", - ), - "bookAuthors": MessageLookupByLibrary.simpleMessage("Authors"), - "bookDownloads": MessageLookupByLibrary.simpleMessage("Downloads"), - "bookGenres": MessageLookupByLibrary.simpleMessage("Genres"), - "bookMetadataAbridged": MessageLookupByLibrary.simpleMessage("Abridged"), - "bookMetadataLength": MessageLookupByLibrary.simpleMessage("Length"), - "bookMetadataPublished": MessageLookupByLibrary.simpleMessage("Published"), - "bookMetadataUnabridged": MessageLookupByLibrary.simpleMessage( - "Unabridged", - ), - "bookSeries": MessageLookupByLibrary.simpleMessage("Series"), - "bookShelveEmpty": MessageLookupByLibrary.simpleMessage("Try again"), - "bookShelveEmptyText": MessageLookupByLibrary.simpleMessage( - "No shelves to display", - ), - "cancel": MessageLookupByLibrary.simpleMessage("Cancel"), - "chapterNotFound": MessageLookupByLibrary.simpleMessage("Chapters"), - "chapterSelect": MessageLookupByLibrary.simpleMessage("Select Chapter"), - "chapterSkip": MessageLookupByLibrary.simpleMessage( - "Skip chapter opening and ending", - ), - "chapterSkipEnd": MessageLookupByLibrary.simpleMessage( - "Skip chapter opening for ", - ), - "chapterSkipOpen": MessageLookupByLibrary.simpleMessage( - "Skip chapter opening for ", - ), - "chapters": MessageLookupByLibrary.simpleMessage("Chapters"), - "copyToClipboard": MessageLookupByLibrary.simpleMessage( - "Copy to Clipboard", - ), - "copyToClipboardDescription": MessageLookupByLibrary.simpleMessage( - "Copy the app settings to the clipboard", - ), - "copyToClipboardToast": MessageLookupByLibrary.simpleMessage( - "Settings copied to clipboard", - ), - "delete": MessageLookupByLibrary.simpleMessage("Delete"), - "deleteDialog": m2, - "deleted": m3, - "explore": MessageLookupByLibrary.simpleMessage("explore"), - "exploreHint": MessageLookupByLibrary.simpleMessage( - "Seek and you shall discover...", - ), - "exploreTooltip": MessageLookupByLibrary.simpleMessage( - "Search and Explore", - ), - "general": MessageLookupByLibrary.simpleMessage("General"), - "help": MessageLookupByLibrary.simpleMessage("Help"), - "home": MessageLookupByLibrary.simpleMessage("Home"), - "homeBookContinueListening": MessageLookupByLibrary.simpleMessage( - "Continue Listening", - ), - "homeBookContinueListeningDescription": - MessageLookupByLibrary.simpleMessage( + "account": MessageLookupByLibrary.simpleMessage("Account"), + "accountAddNewServer": MessageLookupByLibrary.simpleMessage( + "Add New Server", + ), + "accountAddUser": MessageLookupByLibrary.simpleMessage("Add User"), + "accountAddUserDialog": m0, + "accountAddUserSuccessDialog": MessageLookupByLibrary.simpleMessage( + "User added successfully! Switch?", + ), + "accountAddUserTooltip": MessageLookupByLibrary.simpleMessage( + "Add new server", + ), + "accountAnonymous": MessageLookupByLibrary.simpleMessage("Anonymous"), + "accountDeleteServer": MessageLookupByLibrary.simpleMessage( + "Delete Server", + ), + "accountInvalidURL": + MessageLookupByLibrary.simpleMessage("Invalid URL"), + "accountManage": + MessageLookupByLibrary.simpleMessage("Manage Accounts"), + "accountRegisteredServers": MessageLookupByLibrary.simpleMessage( + "Registered Servers", + ), + "accountRemoveServerAndUsers": MessageLookupByLibrary.simpleMessage( + "Remove Server and Users", + ), + "accountRemoveServerAndUsersHead": MessageLookupByLibrary.simpleMessage( + "This will remove the server ", + ), + "accountRemoveServerAndUsersTail": MessageLookupByLibrary.simpleMessage( + " and all its users\' login info from this app.", + ), + "accountRemoveUserLogin": MessageLookupByLibrary.simpleMessage( + "Remove User Login", + ), + "accountRemoveUserLoginHead": MessageLookupByLibrary.simpleMessage( + "This will remove login details of the user ", + ), + "accountRemoveUserLoginTail": MessageLookupByLibrary.simpleMessage( + " from this app.", + ), + "accountServerURI": MessageLookupByLibrary.simpleMessage("Server URI"), + "accountSwitch": MessageLookupByLibrary.simpleMessage("Switch Account"), + "accountUsersCount": m1, + "appSettings": MessageLookupByLibrary.simpleMessage("App Settings"), + "appearance": MessageLookupByLibrary.simpleMessage("Appearance"), + "autoSleepTimerSettings": MessageLookupByLibrary.simpleMessage( + "Auto Sleep Timer Settings", + ), + "autoTurnOnSleepTimer": MessageLookupByLibrary.simpleMessage( + "Auto Turn On Sleep Timer", + ), + "autoTurnOnTimer": MessageLookupByLibrary.simpleMessage( + "Auto Turn On Timer", + ), + "autoTurnOnTimerAlways": MessageLookupByLibrary.simpleMessage( + "Always Auto Turn On Timer", + ), + "autoTurnOnTimerAlwaysDescription": + MessageLookupByLibrary.simpleMessage( + "Always turn on the sleep timer, no matter what", + ), + "autoTurnOnTimerDescription": MessageLookupByLibrary.simpleMessage( + "Automatically turn on the sleep timer based on the time of day", + ), + "autoTurnOnTimerFrom": MessageLookupByLibrary.simpleMessage("From"), + "autoTurnOnTimerFromDescription": MessageLookupByLibrary.simpleMessage( + "Turn on the sleep timer at the specified time", + ), + "autoTurnOnTimerUntil": MessageLookupByLibrary.simpleMessage("Until"), + "autoTurnOnTimerUntilDescription": MessageLookupByLibrary.simpleMessage( + "Turn off the sleep timer at the specified time", + ), + "automaticallyDescription": MessageLookupByLibrary.simpleMessage( + "Automatically turn on the sleep timer based on the time of day", + ), + "backup": MessageLookupByLibrary.simpleMessage("Backup"), + "backupAndRestore": MessageLookupByLibrary.simpleMessage( + "Backup and Restore", + ), + "bookAbout": MessageLookupByLibrary.simpleMessage("About the Book"), + "bookAboutDefault": MessageLookupByLibrary.simpleMessage( + "Sorry, no description found", + ), + "bookAuthors": MessageLookupByLibrary.simpleMessage("Authors"), + "bookDownloads": MessageLookupByLibrary.simpleMessage("Downloads"), + "bookGenres": MessageLookupByLibrary.simpleMessage("Genres"), + "bookMetadataAbridged": + MessageLookupByLibrary.simpleMessage("Abridged"), + "bookMetadataLength": MessageLookupByLibrary.simpleMessage("Length"), + "bookMetadataPublished": + MessageLookupByLibrary.simpleMessage("Published"), + "bookMetadataUnabridged": MessageLookupByLibrary.simpleMessage( + "Unabridged", + ), + "bookSeries": MessageLookupByLibrary.simpleMessage("Series"), + "bookShelveEmpty": MessageLookupByLibrary.simpleMessage("Try again"), + "bookShelveEmptyText": MessageLookupByLibrary.simpleMessage( + "No shelves to display", + ), + "cancel": MessageLookupByLibrary.simpleMessage("Cancel"), + "chapterNotFound": MessageLookupByLibrary.simpleMessage("Chapters"), + "chapterSelect": MessageLookupByLibrary.simpleMessage("Select Chapter"), + "chapterSkip": MessageLookupByLibrary.simpleMessage( + "Skip chapter opening and ending", + ), + "chapterSkipEnd": MessageLookupByLibrary.simpleMessage( + "Skip chapter opening for ", + ), + "chapterSkipOpen": MessageLookupByLibrary.simpleMessage( + "Skip chapter opening for ", + ), + "chapters": MessageLookupByLibrary.simpleMessage("Chapters"), + "copyToClipboard": MessageLookupByLibrary.simpleMessage( + "Copy to Clipboard", + ), + "copyToClipboardDescription": MessageLookupByLibrary.simpleMessage( + "Copy the app settings to the clipboard", + ), + "copyToClipboardToast": MessageLookupByLibrary.simpleMessage( + "Settings copied to clipboard", + ), + "delete": MessageLookupByLibrary.simpleMessage("Delete"), + "deleteDialog": m2, + "deleted": m3, + "explore": MessageLookupByLibrary.simpleMessage("explore"), + "exploreHint": MessageLookupByLibrary.simpleMessage( + "Seek and you shall discover...", + ), + "exploreTooltip": MessageLookupByLibrary.simpleMessage( + "Search and Explore", + ), + "general": MessageLookupByLibrary.simpleMessage("General"), + "help": MessageLookupByLibrary.simpleMessage("Help"), + "home": MessageLookupByLibrary.simpleMessage("Home"), + "homeBookContinueListening": MessageLookupByLibrary.simpleMessage( + "Continue Listening", + ), + "homeBookContinueListeningDescription": + MessageLookupByLibrary.simpleMessage( "Show play button for books in currently listening shelf", ), - "homeBookContinueSeries": MessageLookupByLibrary.simpleMessage( - "Continue Series", - ), - "homeBookContinueSeriesDescription": MessageLookupByLibrary.simpleMessage( - "Show play button for books in continue series shelf", - ), - "homeBookDiscover": MessageLookupByLibrary.simpleMessage("Discover"), - "homeBookListenAgain": MessageLookupByLibrary.simpleMessage("Listen Again"), - "homeBookListenAgainDescription": MessageLookupByLibrary.simpleMessage( - "Show play button for all books in listen again shelf", - ), - "homeBookNewestAuthors": MessageLookupByLibrary.simpleMessage( - "Newest Authors", - ), - "homeBookRecentlyAdded": MessageLookupByLibrary.simpleMessage( - "Recently Added", - ), - "homeBookRecommended": MessageLookupByLibrary.simpleMessage("Recommended"), - "homeContinueListening": MessageLookupByLibrary.simpleMessage( - "Continue Listening", - ), - "homeListenAgain": MessageLookupByLibrary.simpleMessage("Listen Again"), - "homePageSettings": MessageLookupByLibrary.simpleMessage( - "Home Page Settings", - ), - "homePageSettingsDescription": MessageLookupByLibrary.simpleMessage( - "Customize the home page", - ), - "homePageSettingsOtherShelves": MessageLookupByLibrary.simpleMessage( - "Other shelves", - ), - "homePageSettingsOtherShelvesDescription": - MessageLookupByLibrary.simpleMessage( + "homeBookContinueSeries": MessageLookupByLibrary.simpleMessage( + "Continue Series", + ), + "homeBookContinueSeriesDescription": + MessageLookupByLibrary.simpleMessage( + "Show play button for books in continue series shelf", + ), + "homeBookDiscover": MessageLookupByLibrary.simpleMessage("Discover"), + "homeBookListenAgain": + MessageLookupByLibrary.simpleMessage("Listen Again"), + "homeBookListenAgainDescription": MessageLookupByLibrary.simpleMessage( + "Show play button for all books in listen again shelf", + ), + "homeBookNewestAuthors": MessageLookupByLibrary.simpleMessage( + "Newest Authors", + ), + "homeBookRecentlyAdded": MessageLookupByLibrary.simpleMessage( + "Recently Added", + ), + "homeBookRecommended": + MessageLookupByLibrary.simpleMessage("Recommended"), + "homeContinueListening": MessageLookupByLibrary.simpleMessage( + "Continue Listening", + ), + "homeListenAgain": MessageLookupByLibrary.simpleMessage("Listen Again"), + "homePageSettings": MessageLookupByLibrary.simpleMessage( + "Home Page Settings", + ), + "homePageSettingsDescription": MessageLookupByLibrary.simpleMessage( + "Customize the home page", + ), + "homePageSettingsOtherShelves": MessageLookupByLibrary.simpleMessage( + "Other shelves", + ), + "homePageSettingsOtherShelvesDescription": + MessageLookupByLibrary.simpleMessage( "Show play button for all books in all remaining shelves", ), - "homePageSettingsQuickPlay": MessageLookupByLibrary.simpleMessage( - "Quick Play", - ), - "homeStartListening": MessageLookupByLibrary.simpleMessage( - "Start Listening", - ), - "language": MessageLookupByLibrary.simpleMessage("Language"), - "languageDescription": MessageLookupByLibrary.simpleMessage( - "Language switch", - ), - "library": MessageLookupByLibrary.simpleMessage("Library"), - "libraryChange": MessageLookupByLibrary.simpleMessage("Change Library"), - "libraryEmpty": MessageLookupByLibrary.simpleMessage( - "No libraries available.", - ), - "libraryLoadError": m4, - "librarySelect": MessageLookupByLibrary.simpleMessage("Select Library"), - "librarySwitchTooltip": MessageLookupByLibrary.simpleMessage( - "Switch Library", - ), - "libraryTooltip": MessageLookupByLibrary.simpleMessage( - "Browse your library", - ), - "loading": MessageLookupByLibrary.simpleMessage("Loading..."), - "loginLocal": MessageLookupByLibrary.simpleMessage("Local"), - "loginLogin": MessageLookupByLibrary.simpleMessage("Login"), - "loginOpenID": MessageLookupByLibrary.simpleMessage("OpenID"), - "loginPassword": MessageLookupByLibrary.simpleMessage("Password"), - "loginServerClick": MessageLookupByLibrary.simpleMessage("Click here"), - "loginServerConnected": MessageLookupByLibrary.simpleMessage( - "Server connected, please login", - ), - "loginServerNo": MessageLookupByLibrary.simpleMessage( - "Do not have a server? ", - ), - "loginServerNoConnected": MessageLookupByLibrary.simpleMessage( - "Please enter the URL of your AudiobookShelf Server", - ), - "loginServerNot": m5, - "loginServerTo": MessageLookupByLibrary.simpleMessage( - " to know how to setup a server.", - ), - "loginTitle": m6, - "loginToken": MessageLookupByLibrary.simpleMessage("Token"), - "loginUsername": MessageLookupByLibrary.simpleMessage("Username"), - "logs": MessageLookupByLibrary.simpleMessage("Logs"), - "nmpSettingsBackward": MessageLookupByLibrary.simpleMessage( - "Backward Interval", - ), - "nmpSettingsForward": MessageLookupByLibrary.simpleMessage( - "Forward Interval", - ), - "nmpSettingsMediaControls": MessageLookupByLibrary.simpleMessage( - "Media Controls", - ), - "nmpSettingsMediaControlsDescription": MessageLookupByLibrary.simpleMessage( - "Select the media controls to display", - ), - "nmpSettingsSelectOne": MessageLookupByLibrary.simpleMessage( - "Select a field below to insert it", - ), - "nmpSettingsShowChapterProgress": MessageLookupByLibrary.simpleMessage( - "Show Chapter Progress", - ), - "nmpSettingsShowChapterProgressDescription": - MessageLookupByLibrary.simpleMessage( + "homePageSettingsQuickPlay": MessageLookupByLibrary.simpleMessage( + "Quick Play", + ), + "homeStartListening": MessageLookupByLibrary.simpleMessage( + "Start Listening", + ), + "language": MessageLookupByLibrary.simpleMessage("Language"), + "languageDescription": MessageLookupByLibrary.simpleMessage( + "Language switch", + ), + "library": MessageLookupByLibrary.simpleMessage("Library"), + "libraryChange": MessageLookupByLibrary.simpleMessage("Change Library"), + "libraryEmpty": MessageLookupByLibrary.simpleMessage( + "No libraries available.", + ), + "libraryLoadError": m4, + "librarySelect": MessageLookupByLibrary.simpleMessage("Select Library"), + "librarySwitchTooltip": MessageLookupByLibrary.simpleMessage( + "Switch Library", + ), + "libraryTooltip": MessageLookupByLibrary.simpleMessage( + "Browse your library", + ), + "loading": MessageLookupByLibrary.simpleMessage("Loading..."), + "loginLocal": MessageLookupByLibrary.simpleMessage("Local"), + "loginLogin": MessageLookupByLibrary.simpleMessage("Login"), + "loginOpenID": MessageLookupByLibrary.simpleMessage("OpenID"), + "loginPassword": MessageLookupByLibrary.simpleMessage("Password"), + "loginServerClick": MessageLookupByLibrary.simpleMessage("Click here"), + "loginServerConnected": MessageLookupByLibrary.simpleMessage( + "Server connected, please login", + ), + "loginServerNo": MessageLookupByLibrary.simpleMessage( + "Do not have a server? ", + ), + "loginServerNoConnected": MessageLookupByLibrary.simpleMessage( + "Please enter the URL of your AudiobookShelf Server", + ), + "loginServerNot": m5, + "loginServerTo": MessageLookupByLibrary.simpleMessage( + " to know how to setup a server.", + ), + "loginTitle": m6, + "loginToken": MessageLookupByLibrary.simpleMessage("Token"), + "loginUsername": MessageLookupByLibrary.simpleMessage("Username"), + "logs": MessageLookupByLibrary.simpleMessage("Logs"), + "nmpSettingsBackward": MessageLookupByLibrary.simpleMessage( + "Backward Interval", + ), + "nmpSettingsForward": MessageLookupByLibrary.simpleMessage( + "Forward Interval", + ), + "nmpSettingsMediaControls": MessageLookupByLibrary.simpleMessage( + "Media Controls", + ), + "nmpSettingsMediaControlsDescription": + MessageLookupByLibrary.simpleMessage( + "Select the media controls to display", + ), + "nmpSettingsSelectOne": MessageLookupByLibrary.simpleMessage( + "Select a field below to insert it", + ), + "nmpSettingsShowChapterProgress": MessageLookupByLibrary.simpleMessage( + "Show Chapter Progress", + ), + "nmpSettingsShowChapterProgressDescription": + MessageLookupByLibrary.simpleMessage( "Instead of the overall progress of the book", ), - "nmpSettingsSubTitle": MessageLookupByLibrary.simpleMessage( - "Secondary Title", - ), - "nmpSettingsSubTitleDescription": MessageLookupByLibrary.simpleMessage( - "The subtitle of the notification\n", - ), - "nmpSettingsTitle": MessageLookupByLibrary.simpleMessage("Primary Title"), - "nmpSettingsTitleDescription": MessageLookupByLibrary.simpleMessage( - "The title of the notification\n", - ), - "no": MessageLookupByLibrary.simpleMessage("No"), - "notImplemented": MessageLookupByLibrary.simpleMessage("Not implemented"), - "notificationMediaPlayer": MessageLookupByLibrary.simpleMessage( - "Notification Media Player", - ), - "notificationMediaPlayerDescription": MessageLookupByLibrary.simpleMessage( - "Customize the media player in notifications", - ), - "ok": MessageLookupByLibrary.simpleMessage("OK"), - "pause": MessageLookupByLibrary.simpleMessage("Pause"), - "play": MessageLookupByLibrary.simpleMessage("Play"), - "playerSettings": MessageLookupByLibrary.simpleMessage("Player Settings"), - "playerSettingsCompleteTime": MessageLookupByLibrary.simpleMessage( - "Mark Complete When Time Left", - ), - "playerSettingsCompleteTimeDescriptionHead": - MessageLookupByLibrary.simpleMessage("Mark complete when less than "), - "playerSettingsCompleteTimeDescriptionTail": - MessageLookupByLibrary.simpleMessage(" left in the book"), - "playerSettingsDescription": MessageLookupByLibrary.simpleMessage( - "Customize the player settings", - ), - "playerSettingsDisplay": MessageLookupByLibrary.simpleMessage( - "Display Settings", - ), - "playerSettingsDisplayChapterProgress": - MessageLookupByLibrary.simpleMessage("Show Chapter Progress"), - "playerSettingsDisplayChapterProgressDescription": - MessageLookupByLibrary.simpleMessage( + "nmpSettingsSubTitle": MessageLookupByLibrary.simpleMessage( + "Secondary Title", + ), + "nmpSettingsSubTitleDescription": MessageLookupByLibrary.simpleMessage( + "The subtitle of the notification\n", + ), + "nmpSettingsTitle": + MessageLookupByLibrary.simpleMessage("Primary Title"), + "nmpSettingsTitleDescription": MessageLookupByLibrary.simpleMessage( + "The title of the notification\n", + ), + "no": MessageLookupByLibrary.simpleMessage("No"), + "notImplemented": + MessageLookupByLibrary.simpleMessage("Not implemented"), + "notificationMediaPlayer": MessageLookupByLibrary.simpleMessage( + "Notification Media Player", + ), + "notificationMediaPlayerDescription": + MessageLookupByLibrary.simpleMessage( + "Customize the media player in notifications", + ), + "ok": MessageLookupByLibrary.simpleMessage("OK"), + "pause": MessageLookupByLibrary.simpleMessage("Pause"), + "play": MessageLookupByLibrary.simpleMessage("Play"), + "playerSettings": + MessageLookupByLibrary.simpleMessage("Player Settings"), + "playerSettingsCompleteTime": MessageLookupByLibrary.simpleMessage( + "Mark Complete When Time Left", + ), + "playerSettingsCompleteTimeDescriptionHead": + MessageLookupByLibrary.simpleMessage( + "Mark complete when less than "), + "playerSettingsCompleteTimeDescriptionTail": + MessageLookupByLibrary.simpleMessage(" left in the book"), + "playerSettingsDescription": MessageLookupByLibrary.simpleMessage( + "Customize the player settings", + ), + "playerSettingsDisplay": MessageLookupByLibrary.simpleMessage( + "Display Settings", + ), + "playerSettingsDisplayChapterProgress": + MessageLookupByLibrary.simpleMessage("Show Chapter Progress"), + "playerSettingsDisplayChapterProgressDescription": + MessageLookupByLibrary.simpleMessage( "Show the progress of the current chapter in the player", ), - "playerSettingsDisplayTotalProgress": MessageLookupByLibrary.simpleMessage( - "Show Total Progress", - ), - "playerSettingsDisplayTotalProgressDescription": - MessageLookupByLibrary.simpleMessage( + "playerSettingsDisplayTotalProgress": + MessageLookupByLibrary.simpleMessage( + "Show Total Progress", + ), + "playerSettingsDisplayTotalProgressDescription": + MessageLookupByLibrary.simpleMessage( "Show the total progress of the book in the player", ), - "playerSettingsPlaybackInterval": MessageLookupByLibrary.simpleMessage( - "Playback Report Interval", - ), - "playerSettingsPlaybackIntervalDescriptionHead": - MessageLookupByLibrary.simpleMessage("Report progress every "), - "playerSettingsPlaybackIntervalDescriptionTail": - MessageLookupByLibrary.simpleMessage(" to the server"), - "playerSettingsPlaybackReporting": MessageLookupByLibrary.simpleMessage( - "Playback Reporting", - ), - "playerSettingsPlaybackReportingIgnore": - MessageLookupByLibrary.simpleMessage( + "playerSettingsPlaybackInterval": MessageLookupByLibrary.simpleMessage( + "Playback Report Interval", + ), + "playerSettingsPlaybackIntervalDescriptionHead": + MessageLookupByLibrary.simpleMessage("Report progress every "), + "playerSettingsPlaybackIntervalDescriptionTail": + MessageLookupByLibrary.simpleMessage(" to the server"), + "playerSettingsPlaybackReporting": MessageLookupByLibrary.simpleMessage( + "Playback Reporting", + ), + "playerSettingsPlaybackReportingIgnore": + MessageLookupByLibrary.simpleMessage( "Ignore Playback Position Less Than", ), - "playerSettingsPlaybackReportingMinimum": - MessageLookupByLibrary.simpleMessage("Minimum Position to Report"), - "playerSettingsPlaybackReportingMinimumDescriptionHead": - MessageLookupByLibrary.simpleMessage( + "playerSettingsPlaybackReportingMinimum": + MessageLookupByLibrary.simpleMessage("Minimum Position to Report"), + "playerSettingsPlaybackReportingMinimumDescriptionHead": + MessageLookupByLibrary.simpleMessage( "Do not report playback for the first ", ), - "playerSettingsPlaybackReportingMinimumDescriptionTail": - MessageLookupByLibrary.simpleMessage("of the book"), - "playerSettingsRememberForEveryBook": MessageLookupByLibrary.simpleMessage( - "Remember Player Settings for Every Book", - ), - "playerSettingsRememberForEveryBookDescription": - MessageLookupByLibrary.simpleMessage( + "playerSettingsPlaybackReportingMinimumDescriptionTail": + MessageLookupByLibrary.simpleMessage("of the book"), + "playerSettingsRememberForEveryBook": + MessageLookupByLibrary.simpleMessage( + "Remember Player Settings for Every Book", + ), + "playerSettingsRememberForEveryBookDescription": + MessageLookupByLibrary.simpleMessage( "Settings like speed, loudness, etc. will be remembered for every book", ), - "playerSettingsSpeed": MessageLookupByLibrary.simpleMessage("Speed"), - "playerSettingsSpeedDefault": MessageLookupByLibrary.simpleMessage( - "Default Speed", - ), - "playerSettingsSpeedOptions": MessageLookupByLibrary.simpleMessage( - "Speed Options", - ), - "playerSettingsSpeedOptionsSelect": MessageLookupByLibrary.simpleMessage( - "Select Speed Options", - ), - "playerSettingsSpeedOptionsSelectAdd": MessageLookupByLibrary.simpleMessage( - "Add Speed Option", - ), - "playerSettingsSpeedOptionsSelectAddHelper": - MessageLookupByLibrary.simpleMessage("Enter a new speed option to add"), - "playerSettingsSpeedSelect": MessageLookupByLibrary.simpleMessage( - "Select Speed", - ), - "playerSettingsSpeedSelectHelper": MessageLookupByLibrary.simpleMessage( - "Enter the speed you want to set when playing for the first time", - ), - "playlistsMine": MessageLookupByLibrary.simpleMessage("My Playlists"), - "readLess": MessageLookupByLibrary.simpleMessage("Read Less"), - "readMore": MessageLookupByLibrary.simpleMessage("Read More"), - "refresh": MessageLookupByLibrary.simpleMessage("Refresh"), - "reset": MessageLookupByLibrary.simpleMessage("Reset"), - "resetAppSettings": MessageLookupByLibrary.simpleMessage( - "Reset App Settings", - ), - "resetAppSettingsDescription": MessageLookupByLibrary.simpleMessage( - "Reset the app settings to the default values", - ), - "resetAppSettingsDialog": MessageLookupByLibrary.simpleMessage( - "Are you sure you want to reset the app settings?", - ), - "restore": MessageLookupByLibrary.simpleMessage("Restore"), - "restoreBackup": MessageLookupByLibrary.simpleMessage("Restore Backup"), - "restoreBackupHint": MessageLookupByLibrary.simpleMessage( - "Paste the backup here", - ), - "restoreBackupInvalid": MessageLookupByLibrary.simpleMessage( - "Invalid backup", - ), - "restoreBackupSuccess": MessageLookupByLibrary.simpleMessage( - "Settings restored", - ), - "restoreBackupValidator": MessageLookupByLibrary.simpleMessage( - "Please paste the backup here", - ), - "restoreDescription": MessageLookupByLibrary.simpleMessage( - "Restore the app settings from the backup", - ), - "resume": MessageLookupByLibrary.simpleMessage("Resume"), - "retry": MessageLookupByLibrary.simpleMessage("Retry"), - "settings": MessageLookupByLibrary.simpleMessage("Settings"), - "shakeAction": MessageLookupByLibrary.simpleMessage("Shake Action"), - "shakeActionDescription": MessageLookupByLibrary.simpleMessage( - "The action to perform when a shake is detected", - ), - "shakeActivationThreshold": MessageLookupByLibrary.simpleMessage( - "Shake Activation Threshold", - ), - "shakeActivationThresholdDescription": MessageLookupByLibrary.simpleMessage( - "The higher the threshold, the harder you need to shake", - ), - "shakeDetector": MessageLookupByLibrary.simpleMessage("Shake Detector"), - "shakeDetectorDescription": MessageLookupByLibrary.simpleMessage( - "Customize the shake detector settings", - ), - "shakeDetectorEnable": MessageLookupByLibrary.simpleMessage( - "Enable Shake Detection", - ), - "shakeDetectorEnableDescription": MessageLookupByLibrary.simpleMessage( - "Enable shake detection to do various actions", - ), - "shakeDetectorSettings": MessageLookupByLibrary.simpleMessage( - "Shake Detector Settings", - ), - "shakeFeedback": MessageLookupByLibrary.simpleMessage("Shake Feedback"), - "shakeFeedbackDescription": MessageLookupByLibrary.simpleMessage( - "The feedback to give when a shake is detected", - ), - "shakeSelectAction": MessageLookupByLibrary.simpleMessage( - "Select Shake Action", - ), - "shakeSelectActivationThreshold": MessageLookupByLibrary.simpleMessage( - "Select Shake Activation Threshold", - ), - "shakeSelectActivationThresholdHelper": - MessageLookupByLibrary.simpleMessage( + "playerSettingsSpeed": MessageLookupByLibrary.simpleMessage("Speed"), + "playerSettingsSpeedDefault": MessageLookupByLibrary.simpleMessage( + "Default Speed", + ), + "playerSettingsSpeedOptions": MessageLookupByLibrary.simpleMessage( + "Speed Options", + ), + "playerSettingsSpeedOptionsSelect": + MessageLookupByLibrary.simpleMessage( + "Select Speed Options", + ), + "playerSettingsSpeedOptionsSelectAdd": + MessageLookupByLibrary.simpleMessage( + "Add Speed Option", + ), + "playerSettingsSpeedOptionsSelectAddHelper": + MessageLookupByLibrary.simpleMessage( + "Enter a new speed option to add"), + "playerSettingsSpeedSelect": MessageLookupByLibrary.simpleMessage( + "Select Speed", + ), + "playerSettingsSpeedSelectHelper": MessageLookupByLibrary.simpleMessage( + "Enter the speed you want to set when playing for the first time", + ), + "playlistsMine": MessageLookupByLibrary.simpleMessage("My Playlists"), + "readLess": MessageLookupByLibrary.simpleMessage("Read Less"), + "readMore": MessageLookupByLibrary.simpleMessage("Read More"), + "refresh": MessageLookupByLibrary.simpleMessage("Refresh"), + "reset": MessageLookupByLibrary.simpleMessage("Reset"), + "resetAppSettings": MessageLookupByLibrary.simpleMessage( + "Reset App Settings", + ), + "resetAppSettingsDescription": MessageLookupByLibrary.simpleMessage( + "Reset the app settings to the default values", + ), + "resetAppSettingsDialog": MessageLookupByLibrary.simpleMessage( + "Are you sure you want to reset the app settings?", + ), + "restore": MessageLookupByLibrary.simpleMessage("Restore"), + "restoreBackup": MessageLookupByLibrary.simpleMessage("Restore Backup"), + "restoreBackupHint": MessageLookupByLibrary.simpleMessage( + "Paste the backup here", + ), + "restoreBackupInvalid": MessageLookupByLibrary.simpleMessage( + "Invalid backup", + ), + "restoreBackupSuccess": MessageLookupByLibrary.simpleMessage( + "Settings restored", + ), + "restoreBackupValidator": MessageLookupByLibrary.simpleMessage( + "Please paste the backup here", + ), + "restoreDescription": MessageLookupByLibrary.simpleMessage( + "Restore the app settings from the backup", + ), + "resume": MessageLookupByLibrary.simpleMessage("Resume"), + "retry": MessageLookupByLibrary.simpleMessage("Retry"), + "settings": MessageLookupByLibrary.simpleMessage("Settings"), + "shakeAction": MessageLookupByLibrary.simpleMessage("Shake Action"), + "shakeActionDescription": MessageLookupByLibrary.simpleMessage( + "The action to perform when a shake is detected", + ), + "shakeActivationThreshold": MessageLookupByLibrary.simpleMessage( + "Shake Activation Threshold", + ), + "shakeActivationThresholdDescription": + MessageLookupByLibrary.simpleMessage( + "The higher the threshold, the harder you need to shake", + ), + "shakeDetector": MessageLookupByLibrary.simpleMessage("Shake Detector"), + "shakeDetectorDescription": MessageLookupByLibrary.simpleMessage( + "Customize the shake detector settings", + ), + "shakeDetectorEnable": MessageLookupByLibrary.simpleMessage( + "Enable Shake Detection", + ), + "shakeDetectorEnableDescription": MessageLookupByLibrary.simpleMessage( + "Enable shake detection to do various actions", + ), + "shakeDetectorSettings": MessageLookupByLibrary.simpleMessage( + "Shake Detector Settings", + ), + "shakeFeedback": MessageLookupByLibrary.simpleMessage("Shake Feedback"), + "shakeFeedbackDescription": MessageLookupByLibrary.simpleMessage( + "The feedback to give when a shake is detected", + ), + "shakeSelectAction": MessageLookupByLibrary.simpleMessage( + "Select Shake Action", + ), + "shakeSelectActivationThreshold": MessageLookupByLibrary.simpleMessage( + "Select Shake Activation Threshold", + ), + "shakeSelectActivationThresholdHelper": + MessageLookupByLibrary.simpleMessage( "Enter a number to set the threshold in m/s²", ), - "shakeSelectFeedback": MessageLookupByLibrary.simpleMessage( - "Select Shake Feedback", - ), - "themeMode": MessageLookupByLibrary.simpleMessage("Theme Mode"), - "themeModeDark": MessageLookupByLibrary.simpleMessage("Dark"), - "themeModeHighContrast": MessageLookupByLibrary.simpleMessage( - "High Contrast Mode", - ), - "themeModeHighContrastDescription": MessageLookupByLibrary.simpleMessage( - "Increase the contrast between the background and the text", - ), - "themeModeLight": MessageLookupByLibrary.simpleMessage("Light"), - "themeModeSystem": MessageLookupByLibrary.simpleMessage("System"), - "themeSettings": MessageLookupByLibrary.simpleMessage("Theme Settings"), - "themeSettingsColors": MessageLookupByLibrary.simpleMessage( - "Material Theme from System", - ), - "themeSettingsColorsAndroid": MessageLookupByLibrary.simpleMessage( - "Use Material You", - ), - "themeSettingsColorsBook": MessageLookupByLibrary.simpleMessage( - "Adaptive Theme on Item Page", - ), - "themeSettingsColorsBookDescription": MessageLookupByLibrary.simpleMessage( - "Get fancy with the colors on the item page at the cost of some performance", - ), - "themeSettingsColorsCurrent": MessageLookupByLibrary.simpleMessage( - "Adapt theme from currently playing item", - ), - "themeSettingsColorsCurrentDescription": - MessageLookupByLibrary.simpleMessage( + "shakeSelectFeedback": MessageLookupByLibrary.simpleMessage( + "Select Shake Feedback", + ), + "themeMode": MessageLookupByLibrary.simpleMessage("Theme Mode"), + "themeModeDark": MessageLookupByLibrary.simpleMessage("Dark"), + "themeModeHighContrast": MessageLookupByLibrary.simpleMessage( + "High Contrast Mode", + ), + "themeModeHighContrastDescription": + MessageLookupByLibrary.simpleMessage( + "Increase the contrast between the background and the text", + ), + "themeModeLight": MessageLookupByLibrary.simpleMessage("Light"), + "themeModeSystem": MessageLookupByLibrary.simpleMessage("System"), + "themeSettings": MessageLookupByLibrary.simpleMessage("Theme Settings"), + "themeSettingsColors": MessageLookupByLibrary.simpleMessage( + "Material Theme from System", + ), + "themeSettingsColorsAndroid": MessageLookupByLibrary.simpleMessage( + "Use Material You", + ), + "themeSettingsColorsBook": MessageLookupByLibrary.simpleMessage( + "Adaptive Theme on Item Page", + ), + "themeSettingsColorsBookDescription": + MessageLookupByLibrary.simpleMessage( + "Get fancy with the colors on the item page at the cost of some performance", + ), + "themeSettingsColorsCurrent": MessageLookupByLibrary.simpleMessage( + "Adapt theme from currently playing item", + ), + "themeSettingsColorsCurrentDescription": + MessageLookupByLibrary.simpleMessage( "Use the theme colors from the currently playing item for the app", ), - "themeSettingsColorsDescription": MessageLookupByLibrary.simpleMessage( - "Use the system theme colors for the app", - ), - "themeSettingsDescription": MessageLookupByLibrary.simpleMessage( - "Customize the app theme", - ), - "timeSecond": m7, - "unknown": MessageLookupByLibrary.simpleMessage("Unknown"), - "webVersion": MessageLookupByLibrary.simpleMessage("Web Version"), - "yes": MessageLookupByLibrary.simpleMessage("Yes"), - "you": MessageLookupByLibrary.simpleMessage("You"), - "youTooltip": MessageLookupByLibrary.simpleMessage( - "Your Profile and Settings", - ), - }; + "themeSettingsColorsDescription": MessageLookupByLibrary.simpleMessage( + "Use the system theme colors for the app", + ), + "themeSettingsDescription": MessageLookupByLibrary.simpleMessage( + "Customize the app theme", + ), + "timeSecond": m7, + "unknown": MessageLookupByLibrary.simpleMessage("Unknown"), + "webVersion": MessageLookupByLibrary.simpleMessage("Web Version"), + "yes": MessageLookupByLibrary.simpleMessage("Yes"), + "you": MessageLookupByLibrary.simpleMessage("You"), + "youTooltip": MessageLookupByLibrary.simpleMessage( + "Your Profile and Settings", + ), + }; } diff --git a/lib/generated/intl/messages_zh.dart b/lib/generated/intl/messages_zh.dart index 5de2d92..480a87b 100644 --- a/lib/generated/intl/messages_zh.dart +++ b/lib/generated/intl/messages_zh.dart @@ -38,325 +38,354 @@ class MessageLookup extends MessageLookupByLibrary { final messages = _notInlinedMessages(_notInlinedMessages); static Map _notInlinedMessages(_) => { - "account": MessageLookupByLibrary.simpleMessage("账户"), - "accountAddNewServer": MessageLookupByLibrary.simpleMessage("添加新服务器"), - "accountAddUser": MessageLookupByLibrary.simpleMessage("添加用户"), - "accountAddUserDialog": m0, - "accountAddUserSuccessDialog": MessageLookupByLibrary.simpleMessage( - "用户添加成功!切换?", - ), - "accountAddUserTooltip": MessageLookupByLibrary.simpleMessage("添加新服务器"), - "accountAnonymous": MessageLookupByLibrary.simpleMessage("匿名"), - "accountDeleteServer": MessageLookupByLibrary.simpleMessage("删除服务器"), - "accountInvalidURL": MessageLookupByLibrary.simpleMessage("无效网址"), - "accountManage": MessageLookupByLibrary.simpleMessage("帐户管理"), - "accountRegisteredServers": MessageLookupByLibrary.simpleMessage("已注册服务器"), - "accountRemoveServerAndUsers": MessageLookupByLibrary.simpleMessage( - "删除服务器和用户", - ), - "accountRemoveServerAndUsersHead": MessageLookupByLibrary.simpleMessage( - "这将删除服务器 ", - ), - "accountRemoveServerAndUsersTail": MessageLookupByLibrary.simpleMessage( - " 以及该应用程序中所有用户的登录信息。", - ), - "accountRemoveUserLogin": MessageLookupByLibrary.simpleMessage("删除用户登录"), - "accountRemoveUserLoginHead": MessageLookupByLibrary.simpleMessage( - "这将删除用户 ", - ), - "accountRemoveUserLoginTail": MessageLookupByLibrary.simpleMessage( - " 的登录详细信息。", - ), - "accountServerURI": MessageLookupByLibrary.simpleMessage("服务器地址"), - "accountSwitch": MessageLookupByLibrary.simpleMessage("切换账户"), - "accountUsersCount": m1, - "appSettings": MessageLookupByLibrary.simpleMessage("应用设置"), - "appearance": MessageLookupByLibrary.simpleMessage("外观"), - "autoSleepTimerSettings": MessageLookupByLibrary.simpleMessage("自动睡眠定时器设置"), - "autoTurnOnSleepTimer": MessageLookupByLibrary.simpleMessage("自动开启睡眠定时器"), - "autoTurnOnTimer": MessageLookupByLibrary.simpleMessage("自动开启定时器"), - "autoTurnOnTimerAlways": MessageLookupByLibrary.simpleMessage("始终自动开启定时器"), - "autoTurnOnTimerAlwaysDescription": MessageLookupByLibrary.simpleMessage( - "总是打开睡眠定时器", - ), - "autoTurnOnTimerDescription": MessageLookupByLibrary.simpleMessage( - "根据一天中的时间自动打开睡眠定时器", - ), - "autoTurnOnTimerFrom": MessageLookupByLibrary.simpleMessage("从"), - "autoTurnOnTimerFromDescription": MessageLookupByLibrary.simpleMessage( - "在指定时间打开睡眠定时器", - ), - "autoTurnOnTimerUntil": MessageLookupByLibrary.simpleMessage("直到"), - "autoTurnOnTimerUntilDescription": MessageLookupByLibrary.simpleMessage( - "在指定时间关闭睡眠定时器", - ), - "automaticallyDescription": MessageLookupByLibrary.simpleMessage( - "根据一天中的时间自动打开睡眠定时器", - ), - "backup": MessageLookupByLibrary.simpleMessage("备份"), - "backupAndRestore": MessageLookupByLibrary.simpleMessage("备份与恢复"), - "bookAbout": MessageLookupByLibrary.simpleMessage("关于本书"), - "bookAboutDefault": MessageLookupByLibrary.simpleMessage("抱歉,找不到描述"), - "bookAuthors": MessageLookupByLibrary.simpleMessage("作者"), - "bookDownloads": MessageLookupByLibrary.simpleMessage("下载"), - "bookGenres": MessageLookupByLibrary.simpleMessage("风格"), - "bookMetadataAbridged": MessageLookupByLibrary.simpleMessage("删节版"), - "bookMetadataLength": MessageLookupByLibrary.simpleMessage("持续时间"), - "bookMetadataPublished": MessageLookupByLibrary.simpleMessage("发布年份"), - "bookMetadataUnabridged": MessageLookupByLibrary.simpleMessage("未删节版"), - "bookSeries": MessageLookupByLibrary.simpleMessage("系列"), - "bookShelveEmpty": MessageLookupByLibrary.simpleMessage("重试"), - "bookShelveEmptyText": MessageLookupByLibrary.simpleMessage("未查询到书架"), - "cancel": MessageLookupByLibrary.simpleMessage("取消"), - "chapterNotFound": MessageLookupByLibrary.simpleMessage("未找到章节"), - "chapterSelect": MessageLookupByLibrary.simpleMessage("选择章节"), - "chapterSkip": MessageLookupByLibrary.simpleMessage("跳过章节片头片尾"), - "chapterSkipEnd": MessageLookupByLibrary.simpleMessage("跳过章节片尾 "), - "chapterSkipOpen": MessageLookupByLibrary.simpleMessage("跳过章节片头 "), - "chapters": MessageLookupByLibrary.simpleMessage("章节列表"), - "copyToClipboard": MessageLookupByLibrary.simpleMessage("复制到剪贴板"), - "copyToClipboardDescription": MessageLookupByLibrary.simpleMessage( - "将应用程序设置复制到剪贴板", - ), - "copyToClipboardToast": MessageLookupByLibrary.simpleMessage("设置已复制到剪贴板"), - "delete": MessageLookupByLibrary.simpleMessage("删除"), - "deleteDialog": m2, - "deleted": m3, - "explore": MessageLookupByLibrary.simpleMessage("探索"), - "exploreHint": MessageLookupByLibrary.simpleMessage("搜索与探索..."), - "exploreTooltip": MessageLookupByLibrary.simpleMessage("搜索和探索"), - "general": MessageLookupByLibrary.simpleMessage("通用"), - "help": MessageLookupByLibrary.simpleMessage("Help"), - "home": MessageLookupByLibrary.simpleMessage("首页"), - "homeBookContinueListening": MessageLookupByLibrary.simpleMessage("继续收听"), - "homeBookContinueListeningDescription": - MessageLookupByLibrary.simpleMessage("继续收听书架上显示播放按钮"), - "homeBookContinueSeries": MessageLookupByLibrary.simpleMessage("继续系列"), - "homeBookContinueSeriesDescription": MessageLookupByLibrary.simpleMessage( - "继续系列书架上显示播放按钮", - ), - "homeBookDiscover": MessageLookupByLibrary.simpleMessage("发现"), - "homeBookListenAgain": MessageLookupByLibrary.simpleMessage("再听一遍"), - "homeBookListenAgainDescription": MessageLookupByLibrary.simpleMessage( - "再听一遍书架上显示播放按钮", - ), - "homeBookNewestAuthors": MessageLookupByLibrary.simpleMessage("最新作者"), - "homeBookRecentlyAdded": MessageLookupByLibrary.simpleMessage("最近添加"), - "homeBookRecommended": MessageLookupByLibrary.simpleMessage("推荐"), - "homeContinueListening": MessageLookupByLibrary.simpleMessage("继续收听"), - "homeListenAgain": MessageLookupByLibrary.simpleMessage("再听一遍"), - "homePageSettings": MessageLookupByLibrary.simpleMessage("主页设置"), - "homePageSettingsDescription": MessageLookupByLibrary.simpleMessage( - "自定义主页", - ), - "homePageSettingsOtherShelves": MessageLookupByLibrary.simpleMessage( - "其他书架", - ), - "homePageSettingsOtherShelvesDescription": - MessageLookupByLibrary.simpleMessage("显示所有剩余书架上所有书籍的播放按钮"), - "homePageSettingsQuickPlay": MessageLookupByLibrary.simpleMessage("继续播放"), - "homeStartListening": MessageLookupByLibrary.simpleMessage("开始收听"), - "language": MessageLookupByLibrary.simpleMessage("语言"), - "languageDescription": MessageLookupByLibrary.simpleMessage("语言切换"), - "library": MessageLookupByLibrary.simpleMessage("媒体库"), - "libraryChange": MessageLookupByLibrary.simpleMessage("更改媒体库"), - "libraryEmpty": MessageLookupByLibrary.simpleMessage("没有可用的库。"), - "libraryLoadError": m4, - "librarySelect": MessageLookupByLibrary.simpleMessage("选择媒体库"), - "librarySwitchTooltip": MessageLookupByLibrary.simpleMessage("切换媒体库"), - "libraryTooltip": MessageLookupByLibrary.simpleMessage("浏览您的媒体库"), - "loading": MessageLookupByLibrary.simpleMessage("加载中..."), - "loginLocal": MessageLookupByLibrary.simpleMessage("Local"), - "loginLogin": MessageLookupByLibrary.simpleMessage("登录"), - "loginOpenID": MessageLookupByLibrary.simpleMessage("OpenID"), - "loginPassword": MessageLookupByLibrary.simpleMessage("密码"), - "loginServerClick": MessageLookupByLibrary.simpleMessage("单击此处"), - "loginServerConnected": MessageLookupByLibrary.simpleMessage("服务器已连接,请登录"), - "loginServerNo": MessageLookupByLibrary.simpleMessage("没有服务器? "), - "loginServerNoConnected": MessageLookupByLibrary.simpleMessage( - "请输入您的AudiobookShelf服务器的URL", - ), - "loginServerNot": m5, - "loginServerTo": MessageLookupByLibrary.simpleMessage(" 了解如何设置服务器。"), - "loginTitle": m6, - "loginToken": MessageLookupByLibrary.simpleMessage("Token"), - "loginUsername": MessageLookupByLibrary.simpleMessage("用户名"), - "logs": MessageLookupByLibrary.simpleMessage("日志"), - "nmpSettingsBackward": MessageLookupByLibrary.simpleMessage("快退间隔"), - "nmpSettingsForward": MessageLookupByLibrary.simpleMessage("快进间隔"), - "nmpSettingsMediaControls": MessageLookupByLibrary.simpleMessage("媒体控制"), - "nmpSettingsMediaControlsDescription": MessageLookupByLibrary.simpleMessage( - "选择要显示的媒体控件", - ), - "nmpSettingsSelectOne": MessageLookupByLibrary.simpleMessage( - "在下面选择一个字段进行插入", - ), - "nmpSettingsShowChapterProgress": MessageLookupByLibrary.simpleMessage( - "显示章节进度", - ), - "nmpSettingsShowChapterProgressDescription": - MessageLookupByLibrary.simpleMessage("而不是本书的整体进展"), - "nmpSettingsSubTitle": MessageLookupByLibrary.simpleMessage("副标题"), - "nmpSettingsSubTitleDescription": MessageLookupByLibrary.simpleMessage( - "通知的副标题\n", - ), - "nmpSettingsTitle": MessageLookupByLibrary.simpleMessage("主标题"), - "nmpSettingsTitleDescription": MessageLookupByLibrary.simpleMessage( - "通知的标题\n", - ), - "no": MessageLookupByLibrary.simpleMessage("否"), - "notImplemented": MessageLookupByLibrary.simpleMessage("未实现"), - "notificationMediaPlayer": MessageLookupByLibrary.simpleMessage("通知媒体播放器"), - "notificationMediaPlayerDescription": MessageLookupByLibrary.simpleMessage( - "在通知中自定义媒体播放器", - ), - "ok": MessageLookupByLibrary.simpleMessage("确定"), - "pause": MessageLookupByLibrary.simpleMessage("暂停"), - "play": MessageLookupByLibrary.simpleMessage("播放"), - "playerSettings": MessageLookupByLibrary.simpleMessage("播放器设置"), - "playerSettingsCompleteTime": MessageLookupByLibrary.simpleMessage( - "剩余时间标记完成", - ), - "playerSettingsCompleteTimeDescriptionHead": - MessageLookupByLibrary.simpleMessage("当书中剩余时间少于 "), - "playerSettingsCompleteTimeDescriptionTail": - MessageLookupByLibrary.simpleMessage(" 时,标记完成"), - "playerSettingsDescription": MessageLookupByLibrary.simpleMessage( - "自定义播放器设置", - ), - "playerSettingsDisplay": MessageLookupByLibrary.simpleMessage("显示设置"), - "playerSettingsDisplayChapterProgress": - MessageLookupByLibrary.simpleMessage("显示章节进度"), - "playerSettingsDisplayChapterProgressDescription": - MessageLookupByLibrary.simpleMessage("在播放器中显示当前章节的进度"), - "playerSettingsDisplayTotalProgress": MessageLookupByLibrary.simpleMessage( - "显示总进度", - ), - "playerSettingsDisplayTotalProgressDescription": - MessageLookupByLibrary.simpleMessage("在播放器中显示当前书籍的总进度"), - "playerSettingsPlaybackInterval": MessageLookupByLibrary.simpleMessage( - "播放报告间隔", - ), - "playerSettingsPlaybackIntervalDescriptionHead": - MessageLookupByLibrary.simpleMessage("每 "), - "playerSettingsPlaybackIntervalDescriptionTail": - MessageLookupByLibrary.simpleMessage(" 向服务器报告一次进度"), - "playerSettingsPlaybackReporting": MessageLookupByLibrary.simpleMessage( - "回放报告", - ), - "playerSettingsPlaybackReportingIgnore": - MessageLookupByLibrary.simpleMessage("忽略播放位置小于"), - "playerSettingsPlaybackReportingMinimum": - MessageLookupByLibrary.simpleMessage("回放报告最小位置"), - "playerSettingsPlaybackReportingMinimumDescriptionHead": - MessageLookupByLibrary.simpleMessage("不要报告本书前 "), - "playerSettingsPlaybackReportingMinimumDescriptionTail": - MessageLookupByLibrary.simpleMessage(" 的播放"), - "playerSettingsRememberForEveryBook": MessageLookupByLibrary.simpleMessage( - "记住每本书的播放器设置", - ), - "playerSettingsRememberForEveryBookDescription": - MessageLookupByLibrary.simpleMessage("每本书都会记住播放速度、音量等设置"), - "playerSettingsSpeed": MessageLookupByLibrary.simpleMessage("播放速度"), - "playerSettingsSpeedDefault": MessageLookupByLibrary.simpleMessage( - "默认播放速度", - ), - "playerSettingsSpeedOptions": MessageLookupByLibrary.simpleMessage( - "播放速度选项", - ), - "playerSettingsSpeedOptionsSelect": MessageLookupByLibrary.simpleMessage( - "播放速度选项", - ), - "playerSettingsSpeedOptionsSelectAdd": MessageLookupByLibrary.simpleMessage( - "添加一个速度选项", - ), - "playerSettingsSpeedOptionsSelectAddHelper": - MessageLookupByLibrary.simpleMessage("输入一个新的速度选项"), - "playerSettingsSpeedSelect": MessageLookupByLibrary.simpleMessage("选择播放速度"), - "playerSettingsSpeedSelectHelper": MessageLookupByLibrary.simpleMessage( - "输入默认的播放速度", - ), - "playlistsMine": MessageLookupByLibrary.simpleMessage("播放列表"), - "readLess": MessageLookupByLibrary.simpleMessage("折叠"), - "readMore": MessageLookupByLibrary.simpleMessage("展开"), - "refresh": MessageLookupByLibrary.simpleMessage("刷新"), - "reset": MessageLookupByLibrary.simpleMessage("重置"), - "resetAppSettings": MessageLookupByLibrary.simpleMessage("重置应用程序设置"), - "resetAppSettingsDescription": MessageLookupByLibrary.simpleMessage( - "将应用程序设置重置为默认值", - ), - "resetAppSettingsDialog": MessageLookupByLibrary.simpleMessage( - "您确定要重置应用程序设置吗?", - ), - "restore": MessageLookupByLibrary.simpleMessage("恢复"), - "restoreBackup": MessageLookupByLibrary.simpleMessage("恢复备份"), - "restoreBackupHint": MessageLookupByLibrary.simpleMessage("将备份粘贴到此处"), - "restoreBackupInvalid": MessageLookupByLibrary.simpleMessage("无效备份"), - "restoreBackupSuccess": MessageLookupByLibrary.simpleMessage("设置已恢复"), - "restoreBackupValidator": MessageLookupByLibrary.simpleMessage("请将备份粘贴到此处"), - "restoreDescription": MessageLookupByLibrary.simpleMessage("从备份中还原应用程序设置"), - "resume": MessageLookupByLibrary.simpleMessage("继续"), - "retry": MessageLookupByLibrary.simpleMessage("重试"), - "settings": MessageLookupByLibrary.simpleMessage("设置"), - "shakeAction": MessageLookupByLibrary.simpleMessage("抖动操作"), - "shakeActionDescription": MessageLookupByLibrary.simpleMessage( - "检测到抖动时要执行的操作", - ), - "shakeActivationThreshold": MessageLookupByLibrary.simpleMessage("抖动激活阈值"), - "shakeActivationThresholdDescription": MessageLookupByLibrary.simpleMessage( - "门槛越高,你就越难摇晃", - ), - "shakeDetector": MessageLookupByLibrary.simpleMessage("抖动检测器"), - "shakeDetectorDescription": MessageLookupByLibrary.simpleMessage( - "自定义抖动检测器设置", - ), - "shakeDetectorEnable": MessageLookupByLibrary.simpleMessage("启用抖动检测"), - "shakeDetectorEnableDescription": MessageLookupByLibrary.simpleMessage( - "启用抖动检测以执行各种操作", - ), - "shakeDetectorSettings": MessageLookupByLibrary.simpleMessage("抖动检测器设置"), - "shakeFeedback": MessageLookupByLibrary.simpleMessage("抖动反馈"), - "shakeFeedbackDescription": MessageLookupByLibrary.simpleMessage( - "检测到抖动时给出的反馈", - ), - "shakeSelectAction": MessageLookupByLibrary.simpleMessage("选择抖动动作"), - "shakeSelectActivationThreshold": MessageLookupByLibrary.simpleMessage( - "选择抖动激活阈值", - ), - "shakeSelectActivationThresholdHelper": - MessageLookupByLibrary.simpleMessage("输入一个数字以m/s²为单位设置阈值"), - "shakeSelectFeedback": MessageLookupByLibrary.simpleMessage("选择抖动反馈"), - "themeMode": MessageLookupByLibrary.simpleMessage("主题模式"), - "themeModeDark": MessageLookupByLibrary.simpleMessage("深色"), - "themeModeHighContrast": MessageLookupByLibrary.simpleMessage("高对比度模式"), - "themeModeHighContrastDescription": MessageLookupByLibrary.simpleMessage( - "增加背景和文本之间的对比度", - ), - "themeModeLight": MessageLookupByLibrary.simpleMessage("浅色"), - "themeModeSystem": MessageLookupByLibrary.simpleMessage("跟随系统"), - "themeSettings": MessageLookupByLibrary.simpleMessage("主题设置"), - "themeSettingsColors": MessageLookupByLibrary.simpleMessage("主题色"), - "themeSettingsColorsAndroid": MessageLookupByLibrary.simpleMessage("主题色"), - "themeSettingsColorsBook": MessageLookupByLibrary.simpleMessage( - "书籍详情页自适应主题", - ), - "themeSettingsColorsBookDescription": MessageLookupByLibrary.simpleMessage( - "以牺牲一些性能为代价,对书籍详情页的颜色进行美化", - ), - "themeSettingsColorsCurrent": MessageLookupByLibrary.simpleMessage( - "根据当前播放的书籍调整主题", - ), - "themeSettingsColorsCurrentDescription": - MessageLookupByLibrary.simpleMessage("使用当前播放书籍的主题颜色"), - "themeSettingsColorsDescription": MessageLookupByLibrary.simpleMessage( - "使用应用程序的系统主题色", - ), - "themeSettingsDescription": MessageLookupByLibrary.simpleMessage("自定义应用主题"), - "timeSecond": m7, - "unknown": MessageLookupByLibrary.simpleMessage("未知"), - "webVersion": MessageLookupByLibrary.simpleMessage("Web版本"), - "yes": MessageLookupByLibrary.simpleMessage("是"), - "you": MessageLookupByLibrary.simpleMessage("我的"), - "youTooltip": MessageLookupByLibrary.simpleMessage("您的个人资料和设置"), - }; + "account": MessageLookupByLibrary.simpleMessage("账户"), + "accountAddNewServer": MessageLookupByLibrary.simpleMessage("添加新服务器"), + "accountAddUser": MessageLookupByLibrary.simpleMessage("添加用户"), + "accountAddUserDialog": m0, + "accountAddUserSuccessDialog": MessageLookupByLibrary.simpleMessage( + "用户添加成功!切换?", + ), + "accountAddUserTooltip": MessageLookupByLibrary.simpleMessage("添加新服务器"), + "accountAnonymous": MessageLookupByLibrary.simpleMessage("匿名"), + "accountDeleteServer": MessageLookupByLibrary.simpleMessage("删除服务器"), + "accountInvalidURL": MessageLookupByLibrary.simpleMessage("无效网址"), + "accountManage": MessageLookupByLibrary.simpleMessage("帐户管理"), + "accountRegisteredServers": + MessageLookupByLibrary.simpleMessage("已注册服务器"), + "accountRemoveServerAndUsers": MessageLookupByLibrary.simpleMessage( + "删除服务器和用户", + ), + "accountRemoveServerAndUsersHead": MessageLookupByLibrary.simpleMessage( + "这将删除服务器 ", + ), + "accountRemoveServerAndUsersTail": MessageLookupByLibrary.simpleMessage( + " 以及该应用程序中所有用户的登录信息。", + ), + "accountRemoveUserLogin": + MessageLookupByLibrary.simpleMessage("删除用户登录"), + "accountRemoveUserLoginHead": MessageLookupByLibrary.simpleMessage( + "这将删除用户 ", + ), + "accountRemoveUserLoginTail": MessageLookupByLibrary.simpleMessage( + " 的登录详细信息。", + ), + "accountServerURI": MessageLookupByLibrary.simpleMessage("服务器地址"), + "accountSwitch": MessageLookupByLibrary.simpleMessage("切换账户"), + "accountUsersCount": m1, + "appSettings": MessageLookupByLibrary.simpleMessage("应用设置"), + "appearance": MessageLookupByLibrary.simpleMessage("外观"), + "autoSleepTimerSettings": + MessageLookupByLibrary.simpleMessage("自动睡眠定时器设置"), + "autoTurnOnSleepTimer": + MessageLookupByLibrary.simpleMessage("自动开启睡眠定时器"), + "autoTurnOnTimer": MessageLookupByLibrary.simpleMessage("自动开启定时器"), + "autoTurnOnTimerAlways": + MessageLookupByLibrary.simpleMessage("始终自动开启定时器"), + "autoTurnOnTimerAlwaysDescription": + MessageLookupByLibrary.simpleMessage( + "总是打开睡眠定时器", + ), + "autoTurnOnTimerDescription": MessageLookupByLibrary.simpleMessage( + "根据一天中的时间自动打开睡眠定时器", + ), + "autoTurnOnTimerFrom": MessageLookupByLibrary.simpleMessage("从"), + "autoTurnOnTimerFromDescription": MessageLookupByLibrary.simpleMessage( + "在指定时间打开睡眠定时器", + ), + "autoTurnOnTimerUntil": MessageLookupByLibrary.simpleMessage("直到"), + "autoTurnOnTimerUntilDescription": MessageLookupByLibrary.simpleMessage( + "在指定时间关闭睡眠定时器", + ), + "automaticallyDescription": MessageLookupByLibrary.simpleMessage( + "根据一天中的时间自动打开睡眠定时器", + ), + "backup": MessageLookupByLibrary.simpleMessage("备份"), + "backupAndRestore": MessageLookupByLibrary.simpleMessage("备份与恢复"), + "bookAbout": MessageLookupByLibrary.simpleMessage("关于本书"), + "bookAboutDefault": MessageLookupByLibrary.simpleMessage("抱歉,找不到描述"), + "bookAuthors": MessageLookupByLibrary.simpleMessage("作者"), + "bookDownloads": MessageLookupByLibrary.simpleMessage("下载"), + "bookGenres": MessageLookupByLibrary.simpleMessage("风格"), + "bookMetadataAbridged": MessageLookupByLibrary.simpleMessage("删节版"), + "bookMetadataLength": MessageLookupByLibrary.simpleMessage("持续时间"), + "bookMetadataPublished": MessageLookupByLibrary.simpleMessage("发布年份"), + "bookMetadataUnabridged": MessageLookupByLibrary.simpleMessage("未删节版"), + "bookSeries": MessageLookupByLibrary.simpleMessage("系列"), + "bookShelveEmpty": MessageLookupByLibrary.simpleMessage("重试"), + "bookShelveEmptyText": MessageLookupByLibrary.simpleMessage("未查询到书架"), + "cancel": MessageLookupByLibrary.simpleMessage("取消"), + "chapterNotFound": MessageLookupByLibrary.simpleMessage("未找到章节"), + "chapterSelect": MessageLookupByLibrary.simpleMessage("选择章节"), + "chapterSkip": MessageLookupByLibrary.simpleMessage("跳过章节片头片尾"), + "chapterSkipEnd": MessageLookupByLibrary.simpleMessage("跳过章节片尾 "), + "chapterSkipOpen": MessageLookupByLibrary.simpleMessage("跳过章节片头 "), + "chapters": MessageLookupByLibrary.simpleMessage("章节列表"), + "copyToClipboard": MessageLookupByLibrary.simpleMessage("复制到剪贴板"), + "copyToClipboardDescription": MessageLookupByLibrary.simpleMessage( + "将应用程序设置复制到剪贴板", + ), + "copyToClipboardToast": + MessageLookupByLibrary.simpleMessage("设置已复制到剪贴板"), + "delete": MessageLookupByLibrary.simpleMessage("删除"), + "deleteDialog": m2, + "deleted": m3, + "explore": MessageLookupByLibrary.simpleMessage("探索"), + "exploreHint": MessageLookupByLibrary.simpleMessage("搜索与探索..."), + "exploreTooltip": MessageLookupByLibrary.simpleMessage("搜索和探索"), + "general": MessageLookupByLibrary.simpleMessage("通用"), + "help": MessageLookupByLibrary.simpleMessage("Help"), + "home": MessageLookupByLibrary.simpleMessage("首页"), + "homeBookContinueListening": + MessageLookupByLibrary.simpleMessage("继续收听"), + "homeBookContinueListeningDescription": + MessageLookupByLibrary.simpleMessage("继续收听书架上显示播放按钮"), + "homeBookContinueSeries": MessageLookupByLibrary.simpleMessage("继续系列"), + "homeBookContinueSeriesDescription": + MessageLookupByLibrary.simpleMessage( + "继续系列书架上显示播放按钮", + ), + "homeBookDiscover": MessageLookupByLibrary.simpleMessage("发现"), + "homeBookListenAgain": MessageLookupByLibrary.simpleMessage("再听一遍"), + "homeBookListenAgainDescription": MessageLookupByLibrary.simpleMessage( + "再听一遍书架上显示播放按钮", + ), + "homeBookNewestAuthors": MessageLookupByLibrary.simpleMessage("最新作者"), + "homeBookRecentlyAdded": MessageLookupByLibrary.simpleMessage("最近添加"), + "homeBookRecommended": MessageLookupByLibrary.simpleMessage("推荐"), + "homeContinueListening": MessageLookupByLibrary.simpleMessage("继续收听"), + "homeListenAgain": MessageLookupByLibrary.simpleMessage("再听一遍"), + "homePageSettings": MessageLookupByLibrary.simpleMessage("主页设置"), + "homePageSettingsDescription": MessageLookupByLibrary.simpleMessage( + "自定义主页", + ), + "homePageSettingsOtherShelves": MessageLookupByLibrary.simpleMessage( + "其他书架", + ), + "homePageSettingsOtherShelvesDescription": + MessageLookupByLibrary.simpleMessage("显示所有剩余书架上所有书籍的播放按钮"), + "homePageSettingsQuickPlay": + MessageLookupByLibrary.simpleMessage("继续播放"), + "homeStartListening": MessageLookupByLibrary.simpleMessage("开始收听"), + "language": MessageLookupByLibrary.simpleMessage("语言"), + "languageDescription": MessageLookupByLibrary.simpleMessage("语言切换"), + "library": MessageLookupByLibrary.simpleMessage("媒体库"), + "libraryChange": MessageLookupByLibrary.simpleMessage("更改媒体库"), + "libraryEmpty": MessageLookupByLibrary.simpleMessage("没有可用的库。"), + "libraryLoadError": m4, + "librarySelect": MessageLookupByLibrary.simpleMessage("选择媒体库"), + "librarySwitchTooltip": MessageLookupByLibrary.simpleMessage("切换媒体库"), + "libraryTooltip": MessageLookupByLibrary.simpleMessage("浏览您的媒体库"), + "loading": MessageLookupByLibrary.simpleMessage("加载中..."), + "loginLocal": MessageLookupByLibrary.simpleMessage("Local"), + "loginLogin": MessageLookupByLibrary.simpleMessage("登录"), + "loginOpenID": MessageLookupByLibrary.simpleMessage("OpenID"), + "loginPassword": MessageLookupByLibrary.simpleMessage("密码"), + "loginServerClick": MessageLookupByLibrary.simpleMessage("单击此处"), + "loginServerConnected": + MessageLookupByLibrary.simpleMessage("服务器已连接,请登录"), + "loginServerNo": MessageLookupByLibrary.simpleMessage("没有服务器? "), + "loginServerNoConnected": MessageLookupByLibrary.simpleMessage( + "请输入您的AudiobookShelf服务器的URL", + ), + "loginServerNot": m5, + "loginServerTo": MessageLookupByLibrary.simpleMessage(" 了解如何设置服务器。"), + "loginTitle": m6, + "loginToken": MessageLookupByLibrary.simpleMessage("Token"), + "loginUsername": MessageLookupByLibrary.simpleMessage("用户名"), + "logs": MessageLookupByLibrary.simpleMessage("日志"), + "nmpSettingsBackward": MessageLookupByLibrary.simpleMessage("快退间隔"), + "nmpSettingsForward": MessageLookupByLibrary.simpleMessage("快进间隔"), + "nmpSettingsMediaControls": + MessageLookupByLibrary.simpleMessage("媒体控制"), + "nmpSettingsMediaControlsDescription": + MessageLookupByLibrary.simpleMessage( + "选择要显示的媒体控件", + ), + "nmpSettingsSelectOne": MessageLookupByLibrary.simpleMessage( + "在下面选择一个字段进行插入", + ), + "nmpSettingsShowChapterProgress": MessageLookupByLibrary.simpleMessage( + "显示章节进度", + ), + "nmpSettingsShowChapterProgressDescription": + MessageLookupByLibrary.simpleMessage("而不是本书的整体进展"), + "nmpSettingsSubTitle": MessageLookupByLibrary.simpleMessage("副标题"), + "nmpSettingsSubTitleDescription": MessageLookupByLibrary.simpleMessage( + "通知的副标题\n", + ), + "nmpSettingsTitle": MessageLookupByLibrary.simpleMessage("主标题"), + "nmpSettingsTitleDescription": MessageLookupByLibrary.simpleMessage( + "通知的标题\n", + ), + "no": MessageLookupByLibrary.simpleMessage("否"), + "notImplemented": MessageLookupByLibrary.simpleMessage("未实现"), + "notificationMediaPlayer": + MessageLookupByLibrary.simpleMessage("通知媒体播放器"), + "notificationMediaPlayerDescription": + MessageLookupByLibrary.simpleMessage( + "在通知中自定义媒体播放器", + ), + "ok": MessageLookupByLibrary.simpleMessage("确定"), + "pause": MessageLookupByLibrary.simpleMessage("暂停"), + "play": MessageLookupByLibrary.simpleMessage("播放"), + "playerSettings": MessageLookupByLibrary.simpleMessage("播放器设置"), + "playerSettingsCompleteTime": MessageLookupByLibrary.simpleMessage( + "剩余时间标记完成", + ), + "playerSettingsCompleteTimeDescriptionHead": + MessageLookupByLibrary.simpleMessage("当书中剩余时间少于 "), + "playerSettingsCompleteTimeDescriptionTail": + MessageLookupByLibrary.simpleMessage(" 时,标记完成"), + "playerSettingsDescription": MessageLookupByLibrary.simpleMessage( + "自定义播放器设置", + ), + "playerSettingsDisplay": MessageLookupByLibrary.simpleMessage("显示设置"), + "playerSettingsDisplayChapterProgress": + MessageLookupByLibrary.simpleMessage("显示章节进度"), + "playerSettingsDisplayChapterProgressDescription": + MessageLookupByLibrary.simpleMessage("在播放器中显示当前章节的进度"), + "playerSettingsDisplayTotalProgress": + MessageLookupByLibrary.simpleMessage( + "显示总进度", + ), + "playerSettingsDisplayTotalProgressDescription": + MessageLookupByLibrary.simpleMessage("在播放器中显示当前书籍的总进度"), + "playerSettingsPlaybackInterval": MessageLookupByLibrary.simpleMessage( + "播放报告间隔", + ), + "playerSettingsPlaybackIntervalDescriptionHead": + MessageLookupByLibrary.simpleMessage("每 "), + "playerSettingsPlaybackIntervalDescriptionTail": + MessageLookupByLibrary.simpleMessage(" 向服务器报告一次进度"), + "playerSettingsPlaybackReporting": MessageLookupByLibrary.simpleMessage( + "回放报告", + ), + "playerSettingsPlaybackReportingIgnore": + MessageLookupByLibrary.simpleMessage("忽略播放位置小于"), + "playerSettingsPlaybackReportingMinimum": + MessageLookupByLibrary.simpleMessage("回放报告最小位置"), + "playerSettingsPlaybackReportingMinimumDescriptionHead": + MessageLookupByLibrary.simpleMessage("不要报告本书前 "), + "playerSettingsPlaybackReportingMinimumDescriptionTail": + MessageLookupByLibrary.simpleMessage(" 的播放"), + "playerSettingsRememberForEveryBook": + MessageLookupByLibrary.simpleMessage( + "记住每本书的播放器设置", + ), + "playerSettingsRememberForEveryBookDescription": + MessageLookupByLibrary.simpleMessage("每本书都会记住播放速度、音量等设置"), + "playerSettingsSpeed": MessageLookupByLibrary.simpleMessage("播放速度"), + "playerSettingsSpeedDefault": MessageLookupByLibrary.simpleMessage( + "默认播放速度", + ), + "playerSettingsSpeedOptions": MessageLookupByLibrary.simpleMessage( + "播放速度选项", + ), + "playerSettingsSpeedOptionsSelect": + MessageLookupByLibrary.simpleMessage( + "播放速度选项", + ), + "playerSettingsSpeedOptionsSelectAdd": + MessageLookupByLibrary.simpleMessage( + "添加一个速度选项", + ), + "playerSettingsSpeedOptionsSelectAddHelper": + MessageLookupByLibrary.simpleMessage("输入一个新的速度选项"), + "playerSettingsSpeedSelect": + MessageLookupByLibrary.simpleMessage("选择播放速度"), + "playerSettingsSpeedSelectHelper": MessageLookupByLibrary.simpleMessage( + "输入默认的播放速度", + ), + "playlistsMine": MessageLookupByLibrary.simpleMessage("播放列表"), + "readLess": MessageLookupByLibrary.simpleMessage("折叠"), + "readMore": MessageLookupByLibrary.simpleMessage("展开"), + "refresh": MessageLookupByLibrary.simpleMessage("刷新"), + "reset": MessageLookupByLibrary.simpleMessage("重置"), + "resetAppSettings": MessageLookupByLibrary.simpleMessage("重置应用程序设置"), + "resetAppSettingsDescription": MessageLookupByLibrary.simpleMessage( + "将应用程序设置重置为默认值", + ), + "resetAppSettingsDialog": MessageLookupByLibrary.simpleMessage( + "您确定要重置应用程序设置吗?", + ), + "restore": MessageLookupByLibrary.simpleMessage("恢复"), + "restoreBackup": MessageLookupByLibrary.simpleMessage("恢复备份"), + "restoreBackupHint": MessageLookupByLibrary.simpleMessage("将备份粘贴到此处"), + "restoreBackupInvalid": MessageLookupByLibrary.simpleMessage("无效备份"), + "restoreBackupSuccess": MessageLookupByLibrary.simpleMessage("设置已恢复"), + "restoreBackupValidator": + MessageLookupByLibrary.simpleMessage("请将备份粘贴到此处"), + "restoreDescription": + MessageLookupByLibrary.simpleMessage("从备份中还原应用程序设置"), + "resume": MessageLookupByLibrary.simpleMessage("继续"), + "retry": MessageLookupByLibrary.simpleMessage("重试"), + "settings": MessageLookupByLibrary.simpleMessage("设置"), + "shakeAction": MessageLookupByLibrary.simpleMessage("抖动操作"), + "shakeActionDescription": MessageLookupByLibrary.simpleMessage( + "检测到抖动时要执行的操作", + ), + "shakeActivationThreshold": + MessageLookupByLibrary.simpleMessage("抖动激活阈值"), + "shakeActivationThresholdDescription": + MessageLookupByLibrary.simpleMessage( + "门槛越高,你就越难摇晃", + ), + "shakeDetector": MessageLookupByLibrary.simpleMessage("抖动检测器"), + "shakeDetectorDescription": MessageLookupByLibrary.simpleMessage( + "自定义抖动检测器设置", + ), + "shakeDetectorEnable": MessageLookupByLibrary.simpleMessage("启用抖动检测"), + "shakeDetectorEnableDescription": MessageLookupByLibrary.simpleMessage( + "启用抖动检测以执行各种操作", + ), + "shakeDetectorSettings": + MessageLookupByLibrary.simpleMessage("抖动检测器设置"), + "shakeFeedback": MessageLookupByLibrary.simpleMessage("抖动反馈"), + "shakeFeedbackDescription": MessageLookupByLibrary.simpleMessage( + "检测到抖动时给出的反馈", + ), + "shakeSelectAction": MessageLookupByLibrary.simpleMessage("选择抖动动作"), + "shakeSelectActivationThreshold": MessageLookupByLibrary.simpleMessage( + "选择抖动激活阈值", + ), + "shakeSelectActivationThresholdHelper": + MessageLookupByLibrary.simpleMessage("输入一个数字以m/s²为单位设置阈值"), + "shakeSelectFeedback": MessageLookupByLibrary.simpleMessage("选择抖动反馈"), + "themeMode": MessageLookupByLibrary.simpleMessage("主题模式"), + "themeModeDark": MessageLookupByLibrary.simpleMessage("深色"), + "themeModeHighContrast": MessageLookupByLibrary.simpleMessage("高对比度模式"), + "themeModeHighContrastDescription": + MessageLookupByLibrary.simpleMessage( + "增加背景和文本之间的对比度", + ), + "themeModeLight": MessageLookupByLibrary.simpleMessage("浅色"), + "themeModeSystem": MessageLookupByLibrary.simpleMessage("跟随系统"), + "themeSettings": MessageLookupByLibrary.simpleMessage("主题设置"), + "themeSettingsColors": MessageLookupByLibrary.simpleMessage("主题色"), + "themeSettingsColorsAndroid": + MessageLookupByLibrary.simpleMessage("主题色"), + "themeSettingsColorsBook": MessageLookupByLibrary.simpleMessage( + "书籍详情页自适应主题", + ), + "themeSettingsColorsBookDescription": + MessageLookupByLibrary.simpleMessage( + "以牺牲一些性能为代价,对书籍详情页的颜色进行美化", + ), + "themeSettingsColorsCurrent": MessageLookupByLibrary.simpleMessage( + "根据当前播放的书籍调整主题", + ), + "themeSettingsColorsCurrentDescription": + MessageLookupByLibrary.simpleMessage("使用当前播放书籍的主题颜色"), + "themeSettingsColorsDescription": MessageLookupByLibrary.simpleMessage( + "使用应用程序的系统主题色", + ), + "themeSettingsDescription": + MessageLookupByLibrary.simpleMessage("自定义应用主题"), + "timeSecond": m7, + "unknown": MessageLookupByLibrary.simpleMessage("未知"), + "webVersion": MessageLookupByLibrary.simpleMessage("Web版本"), + "yes": MessageLookupByLibrary.simpleMessage("是"), + "you": MessageLookupByLibrary.simpleMessage("我的"), + "youTooltip": MessageLookupByLibrary.simpleMessage("您的个人资料和设置"), + }; } diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index a380286..c582105 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -7,7 +7,6 @@ #include "generated_plugin_registrant.h" #include -#include #include #include #include @@ -18,9 +17,6 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) dynamic_color_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "DynamicColorPlugin"); dynamic_color_plugin_register_with_registrar(dynamic_color_registrar); - g_autoptr(FlPluginRegistrar) isar_flutter_libs_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "IsarFlutterLibsPlugin"); - isar_flutter_libs_plugin_register_with_registrar(isar_flutter_libs_registrar); g_autoptr(FlPluginRegistrar) media_kit_libs_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "MediaKitLibsLinuxPlugin"); media_kit_libs_linux_plugin_register_with_registrar(media_kit_libs_linux_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 30a795e..b9bd432 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -4,7 +4,6 @@ list(APPEND FLUTTER_PLUGIN_LIST dynamic_color - isar_flutter_libs media_kit_libs_linux screen_retriever_linux tray_manager diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 4038244..e7aa69f 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -9,7 +9,6 @@ import audio_service import audio_session import device_info_plus import dynamic_color -import isar_flutter_libs import just_audio import package_info_plus import path_provider_foundation @@ -25,7 +24,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin")) - IsarFlutterLibsPlugin.register(with: registry.registrar(forPlugin: "IsarFlutterLibsPlugin")) JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) diff --git a/pubspec.lock b/pubspec.lock index 0f0c544..547fdc9 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -6,7 +6,7 @@ packages: description: name: _fe_analyzer_shared sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "76.0.0" _macros: @@ -19,7 +19,7 @@ packages: description: name: analyzer sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.11.0" analyzer_plugin: @@ -27,7 +27,7 @@ packages: description: name: analyzer_plugin sha256: "9661b30b13a685efaee9f02e5d01ed9f2b423bd889d28a304d02d704aee69161" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.11.3" animated_list_plus: @@ -35,7 +35,7 @@ packages: description: name: animated_list_plus sha256: fb3d7f1fbaf5af84907f3c739236bacda8bf32cbe1f118dd51510752883ff50c - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.5.2" animated_theme_switcher: @@ -43,7 +43,7 @@ packages: description: name: animated_theme_switcher sha256: "24ccd74437b8db78f6d1ec701804702817bced5f925b1b3419c7a93071e3d3e9" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.10" archive: @@ -51,7 +51,7 @@ packages: description: name: archive sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.0.7" args: @@ -59,7 +59,7 @@ packages: description: name: args sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.7.0" async: @@ -67,7 +67,7 @@ packages: description: name: async sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.13.0" audio_service: @@ -75,7 +75,7 @@ packages: description: name: audio_service sha256: cb122c7c2639d2a992421ef96b67948ad88c5221da3365ccef1031393a76e044 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.18.18" audio_service_platform_interface: @@ -83,7 +83,7 @@ packages: description: name: audio_service_platform_interface sha256: "6283782851f6c8b501b60904a32fc7199dc631172da0629d7301e66f672ab777" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.3" audio_service_web: @@ -91,7 +91,7 @@ packages: description: name: audio_service_web sha256: b8ea9243201ee53383157fbccf13d5d2a866b5dda922ec19d866d1d5d70424df - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.4" audio_session: @@ -99,7 +99,7 @@ packages: description: name: audio_session sha256: "2b7fff16a552486d078bfc09a8cde19f426dc6d6329262b684182597bec5b1ac" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.25" audio_video_progress_bar: @@ -107,23 +107,23 @@ packages: description: name: audio_video_progress_bar sha256: "552b1f73c56c4c88407999e0a8507176f60c56de3e6d63bc20a0eab48467d4c9" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.3" background_downloader: dependency: "direct main" description: name: background_downloader - sha256: efe41340f6518449f6c5f116d9bcecc97bbff7708efe47d7a645478117ce15fd - url: "https://pub.flutter-io.cn" + sha256: "2d17c211eb9bf1f947f154fb85d1bea96944fb1efb1b0714851caac993c02dc8" + url: "https://pub.dev" source: hosted - version: "9.4.1" + version: "9.4.3" boolean_selector: dependency: transitive description: name: boolean_selector sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.2" build: @@ -131,7 +131,7 @@ packages: description: name: build sha256: "51dc711996cbf609b90cbe5b335bbce83143875a9d58e4b5c6d3c4f684d3dda7" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.5.4" build_config: @@ -139,7 +139,7 @@ packages: description: name: build_config sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.2" build_daemon: @@ -147,7 +147,7 @@ packages: description: name: build_daemon sha256: bf05f6e12cfea92d3c09308d7bcdab1906cd8a179b023269eed00c071004b957 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.1.1" build_resolvers: @@ -155,7 +155,7 @@ packages: description: name: build_resolvers sha256: ee4257b3f20c0c90e72ed2b57ad637f694ccba48839a821e87db762548c22a62 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.5.4" build_runner: @@ -163,7 +163,7 @@ packages: description: name: build_runner sha256: "382a4d649addbfb7ba71a3631df0ec6a45d5ab9b098638144faf27f02778eb53" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.5.4" build_runner_core: @@ -171,7 +171,7 @@ packages: description: name: build_runner_core sha256: "85fbbb1036d576d966332a3f5ce83f2ce66a40bea1a94ad2d5fc29a19a0d3792" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "9.1.2" built_collection: @@ -179,7 +179,7 @@ packages: description: name: built_collection sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.1.1" built_value: @@ -187,7 +187,7 @@ packages: description: name: built_value sha256: "426cf75afdb23aa74bd4e471704de3f9393f3c7b04c1e2d9c6f1073ae0b8b139" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "8.12.1" cached_network_image: @@ -195,7 +195,7 @@ packages: description: name: cached_network_image sha256: "7c1183e361e5c8b0a0f21a28401eecdbde252441106a9816400dd4c2b2424916" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.4.1" cached_network_image_platform_interface: @@ -203,7 +203,7 @@ packages: description: name: cached_network_image_platform_interface sha256: "35814b016e37fbdc91f7ae18c8caf49ba5c88501813f73ce8a07027a395e2829" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.1.1" cached_network_image_web: @@ -211,7 +211,7 @@ packages: description: name: cached_network_image_web sha256: "980842f4e8e2535b8dbd3d5ca0b1f0ba66bf61d14cc3a17a9b4788a3685ba062" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.3.1" characters: @@ -219,7 +219,7 @@ packages: description: name: characters sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.4.0" checked_yaml: @@ -227,7 +227,7 @@ packages: description: name: checked_yaml sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.4" ci: @@ -235,7 +235,7 @@ packages: description: name: ci sha256: "145d095ce05cddac4d797a158bc4cf3b6016d1fe63d8c3d2fbd7212590adca13" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.0" cli_util: @@ -243,7 +243,7 @@ packages: description: name: cli_util sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.4.2" clock: @@ -251,7 +251,7 @@ packages: description: name: clock sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.2" code_builder: @@ -259,7 +259,7 @@ packages: description: name: code_builder sha256: "11654819532ba94c34de52ff5feb52bd81cba1de00ef2ed622fd50295f9d4243" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.11.0" collection: @@ -267,7 +267,7 @@ packages: description: name: collection sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.19.1" convert: @@ -275,7 +275,7 @@ packages: description: name: convert sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.1.2" cross_file: @@ -283,7 +283,7 @@ packages: description: name: cross_file sha256: "701dcfc06da0882883a2657c445103380e53e647060ad8d9dfb710c100996608" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.3.5+1" crypto: @@ -291,7 +291,7 @@ packages: description: name: crypto sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.7" csslib: @@ -299,7 +299,7 @@ packages: description: name: csslib sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.2" custom_lint: @@ -307,7 +307,7 @@ packages: description: name: custom_lint sha256: "3486c470bb93313a9417f926c7dd694a2e349220992d7b9d14534dc49c15bba9" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.7.0" custom_lint_builder: @@ -315,7 +315,7 @@ packages: description: name: custom_lint_builder sha256: "42cdc41994eeeddab0d7a722c7093ec52bd0761921eeb2cbdbf33d192a234759" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.7.0" custom_lint_core: @@ -323,7 +323,7 @@ packages: description: name: custom_lint_core sha256: "02450c3e45e2a6e8b26c4d16687596ab3c4644dd5792e3313aa9ceba5a49b7f5" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.7.0" custom_lint_visitor: @@ -331,7 +331,7 @@ packages: description: name: custom_lint_visitor sha256: bfe9b7a09c4775a587b58d10ebb871d4fe618237639b1e84d5ec62d7dfef25f9 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.0+6.11.0" dart_style: @@ -339,7 +339,7 @@ packages: description: name: dart_style sha256: "7306ab8a2359a48d22310ad823521d723acfed60ee1f7e37388e8986853b6820" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.3.8" device_info_plus: @@ -347,7 +347,7 @@ packages: description: name: device_info_plus sha256: "98f28b42168cc509abc92f88518882fd58061ea372d7999aecc424345c7bff6a" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "11.5.0" device_info_plus_platform_interface: @@ -355,7 +355,7 @@ packages: description: name: device_info_plus_platform_interface sha256: e1ea89119e34903dca74b883d0dd78eb762814f97fb6c76f35e9ff74d261a18f - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "7.0.3" dio: @@ -363,7 +363,7 @@ packages: description: name: dio sha256: d90ee57923d1828ac14e492ca49440f65477f4bb1263575900be731a3dac66a9 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.9.0" dio_web_adapter: @@ -371,7 +371,7 @@ packages: description: name: dio_web_adapter sha256: "7586e476d70caecaf1686d21eee7247ea43ef5c345eab9e0cc3583ff13378d78" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.1" duration_picker: @@ -379,7 +379,7 @@ packages: description: name: duration_picker sha256: e505a749c93f3218aa4194d339e5d5480d927df23a81f075b5282511f6ac11ab - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.2.0" dynamic_color: @@ -387,7 +387,7 @@ packages: description: name: dynamic_color sha256: "43a5a6679649a7731ab860334a5812f2067c2d9ce6452cf069c5e0c25336c17c" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.8.1" fake_async: @@ -395,7 +395,7 @@ packages: description: name: fake_async sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.3.3" ffi: @@ -403,7 +403,7 @@ packages: description: name: ffi sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.4" file: @@ -411,7 +411,7 @@ packages: description: name: file sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "7.0.1" fixnum: @@ -419,7 +419,7 @@ packages: description: name: fixnum sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.1" flutter: @@ -432,7 +432,7 @@ packages: description: name: flutter_animate sha256: "7befe2d3252728afb77aecaaea1dec88a89d35b9b1d2eea6d04479e8af9117b5" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.5.2" flutter_cache_manager: @@ -440,7 +440,7 @@ packages: description: name: flutter_cache_manager sha256: "400b6592f16a4409a7f2bb929a9a7e38c72cceb8ffb99ee57bbf2cb2cecf8386" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.4.1" flutter_hooks: @@ -448,7 +448,7 @@ packages: description: name: flutter_hooks sha256: "8ae1f090e5f4ef5cfa6670ce1ab5dddadd33f3533a7f9ba19d9f958aa2a89f42" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.21.3+1" flutter_html: @@ -456,7 +456,7 @@ packages: description: name: flutter_html sha256: "38a2fd702ffdf3243fb7441ab58aa1bc7e6922d95a50db76534de8260638558d" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.0" flutter_launcher_icons: @@ -464,7 +464,7 @@ packages: description: name: flutter_launcher_icons sha256: "10f13781741a2e3972126fae08393d3c4e01fa4cd7473326b94b72cf594195e7" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.14.4" flutter_lints: @@ -472,7 +472,7 @@ packages: description: name: flutter_lints sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.0.0" flutter_localizations: @@ -485,7 +485,7 @@ packages: description: name: flutter_riverpod sha256: "9532ee6db4a943a1ed8383072a2e3eeda041db5657cdf6d2acecf3c21ecbe7e1" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.6.1" flutter_settings_ui: @@ -493,7 +493,7 @@ packages: description: name: flutter_settings_ui sha256: dcc506fab724192594e5c232b6214a941abd6e7b5151626635b89258fadbc17c - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.1" flutter_shaders: @@ -501,7 +501,7 @@ packages: description: name: flutter_shaders sha256: "34794acadd8275d971e02df03afee3dee0f98dbfb8c4837082ad0034f612a3e2" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.3" flutter_staggered_grid_view: @@ -509,7 +509,7 @@ packages: description: name: flutter_staggered_grid_view sha256: "19e7abb550c96fbfeb546b23f3ff356ee7c59a019a651f8f102a4ba9b7349395" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.7.0" flutter_svg: @@ -517,7 +517,7 @@ packages: description: name: flutter_svg sha256: "87fbd7c534435b6c5d9d98b01e1fd527812b82e68ddd8bd35fc45ed0fa8f0a95" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.2.3" flutter_test: @@ -535,7 +535,7 @@ packages: description: name: freezed sha256: "44c19278dd9d89292cf46e97dc0c1e52ce03275f40a97c5a348e802a924bf40e" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.5.7" freezed_annotation: @@ -543,7 +543,7 @@ packages: description: name: freezed_annotation sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.4.4" frontend_server_client: @@ -551,7 +551,7 @@ packages: description: name: frontend_server_client sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.0.0" glob: @@ -559,7 +559,7 @@ packages: description: name: glob sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.3" go_router: @@ -567,7 +567,7 @@ packages: description: name: go_router sha256: f02fd7d2a4dc512fec615529824fdd217fecb3a3d3de68360293a551f21634b3 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "14.8.1" graphs: @@ -575,23 +575,39 @@ packages: description: name: graphs sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.3.2" - hive: + hive_ce: dependency: "direct main" description: - name: hive - sha256: "10819524df282842ebae12870e2e0e9ebc3e5c4637bec741ad39b919c589cb20" - url: "https://pub.flutter-io.cn" + name: hive_ce + sha256: "412c638aeac0f003bba664884e3048b9547e541aaca13f10cc639da788184bed" + url: "https://pub.dev" source: hosted - version: "4.0.0-dev.2" + version: "2.16.0" + hive_ce_flutter: + dependency: "direct main" + description: + name: hive_ce_flutter + sha256: "26d656c9e8974f0732f1d09020e2d7b08ba841b8961a02dbfb6caf01474b0e9a" + url: "https://pub.dev" + source: hosted + version: "2.3.3" + hive_ce_generator: + dependency: "direct dev" + description: + name: hive_ce_generator + sha256: "182fb88273055e05ef0e630b5e32e5a30268722ed3bf46fdf5986792862975af" + url: "https://pub.dev" + source: hosted + version: "1.8.1" hooks_riverpod: dependency: "direct main" description: name: hooks_riverpod sha256: "70bba33cfc5670c84b796e6929c54b8bc5be7d0fe15bb28c2560500b9ad06966" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.6.1" hotreloader: @@ -599,7 +615,7 @@ packages: description: name: hotreloader sha256: bc167a1163807b03bada490bfe2df25b0d744df359227880220a5cbd04e5734b - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.3.0" html: @@ -607,7 +623,7 @@ packages: description: name: html sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.15.6" http: @@ -615,7 +631,7 @@ packages: description: name: http sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.6.0" http_multi_server: @@ -623,7 +639,7 @@ packages: description: name: http_multi_server sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.2.2" http_parser: @@ -631,7 +647,7 @@ packages: description: name: http_parser sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.1.2" icons_plus: @@ -639,23 +655,23 @@ packages: description: name: icons_plus sha256: "8e2f601b8605d45dd55b106a0da084a1809125077a49574ca22e8bcd5b6e86f0" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.0.0" image: dependency: transitive description: name: image - sha256: "51555e36056541237b15b57afc31a0f53d4f9aefd9bd00873a6dc0090e54e332" - url: "https://pub.flutter-io.cn" + sha256: "492bd52f6c4fbb6ee41f781ff27765ce5f627910e1e0cbecfa3d9add5562604c" + url: "https://pub.dev" source: hosted - version: "4.6.0" + version: "4.7.2" intl: dependency: transitive description: name: intl sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.20.2" io: @@ -663,31 +679,23 @@ packages: description: name: io sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.5" - isar: - dependency: "direct main" + isolate_channel: + dependency: transitive description: - name: isar - sha256: ebf74d87c400bd9f7da14acb31932b50c2407edbbd40930da3a6c2a8143f85a8 - url: "https://pub.flutter-io.cn" + name: isolate_channel + sha256: f3d36f783b301e6b312c3450eeb2656b0e7d1db81331af2a151d9083a3f6b18d + url: "https://pub.dev" source: hosted - version: "4.0.0-dev.14" - isar_flutter_libs: - dependency: "direct main" - description: - name: isar_flutter_libs - sha256: "04a3f4035e213ddb6e78d0132a7c80296a085c2088c2a761b4a42ee5add36983" - url: "https://pub.flutter-io.cn" - source: hosted - version: "4.0.0-dev.14" + version: "0.2.2+1" js: dependency: transitive description: name: js sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.6.7" json_annotation: @@ -695,7 +703,7 @@ packages: description: name: json_annotation sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.9.0" json_serializable: @@ -703,7 +711,7 @@ packages: description: name: json_serializable sha256: c2fcb3920cf2b6ae6845954186420fca40bc0a8abcc84903b7801f17d7050d7c - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.9.0" just_audio: @@ -711,7 +719,7 @@ packages: description: name: just_audio sha256: "9694e4734f515f2a052493d1d7e0d6de219ee0427c7c29492e246ff32a219908" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.10.5" just_audio_media_kit: @@ -719,7 +727,7 @@ packages: description: name: just_audio_media_kit sha256: f3cf04c3a50339709e87e90b4e841eef4364ab4be2bdbac0c54cc48679f84d23 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.0" just_audio_platform_interface: @@ -727,7 +735,7 @@ packages: description: name: just_audio_platform_interface sha256: "2532c8d6702528824445921c5ff10548b518b13f808c2e34c2fd54793b999a6a" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.6.0" just_audio_web: @@ -735,7 +743,7 @@ packages: description: name: just_audio_web sha256: "6ba8a2a7e87d57d32f0f7b42856ade3d6a9fbe0f1a11fabae0a4f00bb73f0663" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.4.16" leak_tracker: @@ -743,7 +751,7 @@ packages: description: name: leak_tracker sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "10.0.9" leak_tracker_flutter_testing: @@ -751,7 +759,7 @@ packages: description: name: leak_tracker_flutter_testing sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.9" leak_tracker_testing: @@ -759,7 +767,7 @@ packages: description: name: leak_tracker_testing sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.1" lints: @@ -767,7 +775,7 @@ packages: description: name: lints sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.1.1" list_counter: @@ -775,7 +783,7 @@ packages: description: name: list_counter sha256: c447ae3dfcd1c55f0152867090e67e219d42fe6d4f2807db4bbe8b8d69912237 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.2" list_wheel_scroll_view_nls: @@ -783,7 +791,7 @@ packages: description: name: list_wheel_scroll_view_nls sha256: "47a6c27dac35768f2bcd0db05a31f04347ea116faf3529131d937cf130c36e91" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.0.3" logging: @@ -791,7 +799,7 @@ packages: description: name: logging sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.3.0" logging_appenders: @@ -799,7 +807,7 @@ packages: description: name: logging_appenders sha256: "7fefa09636824f312432721c0bf77967ab19003116650729bd202bdf98142d70" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.4.0+1" lottie: @@ -807,7 +815,7 @@ packages: description: name: lottie sha256: c5fa04a80a620066c15cf19cc44773e19e9b38e989ff23ea32e5903ef1015950 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.3.1" macros: @@ -815,7 +823,7 @@ packages: description: name: macros sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.3-main.0" matcher: @@ -823,7 +831,7 @@ packages: description: name: matcher sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.12.17" material_color_utilities: @@ -831,7 +839,7 @@ packages: description: name: material_color_utilities sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.11.1" media_kit: @@ -847,7 +855,7 @@ packages: description: name: media_kit_libs_linux sha256: "2b473399a49ec94452c4d4ae51cfc0f6585074398d74216092bf3d54aac37ecf" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.2.1" media_kit_libs_windows_audio: @@ -855,7 +863,7 @@ packages: description: name: media_kit_libs_windows_audio sha256: c2fd558cc87b9d89a801141fcdffe02e338a3b21a41a18fbd63d5b221a1b8e53 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.9" menu_base: @@ -863,7 +871,7 @@ packages: description: name: menu_base sha256: "820368014a171bd1241030278e6c2617354f492f5c703d7b7d4570a6b8b84405" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.1" meta: @@ -871,7 +879,7 @@ packages: description: name: meta sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.16.0" mime: @@ -879,7 +887,7 @@ packages: description: name: mime sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.0" octo_image: @@ -887,7 +895,7 @@ packages: description: name: octo_image sha256: "34faa6639a78c7e3cbe79be6f9f96535867e879748ade7d17c9b1ae7536293bd" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.0" package_config: @@ -895,7 +903,7 @@ packages: description: name: package_config sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.2.0" package_info_plus: @@ -903,7 +911,7 @@ packages: description: name: package_info_plus sha256: "16eee997588c60225bda0488b6dcfac69280a6b7a3cf02c741895dd370a02968" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "8.3.1" package_info_plus_platform_interface: @@ -911,7 +919,7 @@ packages: description: name: package_info_plus_platform_interface sha256: "202a487f08836a592a6bd4f901ac69b3a8f146af552bbd14407b6b41e1c3f086" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.2.1" path: @@ -919,7 +927,7 @@ packages: description: name: path sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.9.1" path_parsing: @@ -927,7 +935,7 @@ packages: description: name: path_parsing sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.0" path_provider: @@ -935,7 +943,7 @@ packages: description: name: path_provider sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.5" path_provider_android: @@ -943,7 +951,7 @@ packages: description: name: path_provider_android sha256: "3b4c1fc3aa55ddc9cd4aa6759984330d5c8e66aa7702a6223c61540dc6380c37" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.2.19" path_provider_foundation: @@ -951,7 +959,7 @@ packages: description: name: path_provider_foundation sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.4.2" path_provider_linux: @@ -959,7 +967,7 @@ packages: description: name: path_provider_linux sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.2.1" path_provider_platform_interface: @@ -967,7 +975,7 @@ packages: description: name: path_provider_platform_interface sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.2" path_provider_windows: @@ -975,7 +983,7 @@ packages: description: name: path_provider_windows sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.3.0" permission_handler: @@ -983,7 +991,7 @@ packages: description: name: permission_handler sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "11.4.0" permission_handler_android: @@ -991,7 +999,7 @@ packages: description: name: permission_handler_android sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "12.1.0" permission_handler_apple: @@ -999,7 +1007,7 @@ packages: description: name: permission_handler_apple sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "9.4.7" permission_handler_html: @@ -1007,7 +1015,7 @@ packages: description: name: permission_handler_html sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.3+5" permission_handler_platform_interface: @@ -1015,7 +1023,7 @@ packages: description: name: permission_handler_platform_interface sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.3.0" permission_handler_windows: @@ -1023,7 +1031,7 @@ packages: description: name: permission_handler_windows sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.2.1" petitparser: @@ -1031,7 +1039,7 @@ packages: description: name: petitparser sha256: "1a97266a94f7350d30ae522c0af07890c70b8e62c71e8e3920d1db4d23c057d1" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "7.0.1" platform: @@ -1039,7 +1047,7 @@ packages: description: name: platform sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.1.6" plugin_platform_interface: @@ -1047,7 +1055,7 @@ packages: description: name: plugin_platform_interface sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.8" pool: @@ -1055,7 +1063,7 @@ packages: description: name: pool sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.5.2" posix: @@ -1063,7 +1071,7 @@ packages: description: name: posix sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.0.3" pub_semver: @@ -1071,7 +1079,7 @@ packages: description: name: pub_semver sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.2.0" pubspec_parse: @@ -1079,7 +1087,7 @@ packages: description: name: pubspec_parse sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.5.0" riverpod: @@ -1087,7 +1095,7 @@ packages: description: name: riverpod sha256: "59062512288d3056b2321804332a13ffdd1bf16df70dcc8e506e411280a72959" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.6.1" riverpod_analyzer_utils: @@ -1095,7 +1103,7 @@ packages: description: name: riverpod_analyzer_utils sha256: c6b8222b2b483cb87ae77ad147d6408f400c64f060df7a225b127f4afef4f8c8 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.5.8" riverpod_annotation: @@ -1103,7 +1111,7 @@ packages: description: name: riverpod_annotation sha256: e14b0bf45b71326654e2705d462f21b958f987087be850afd60578fcd502d1b8 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.6.1" riverpod_generator: @@ -1111,7 +1119,7 @@ packages: description: name: riverpod_generator sha256: "63546d70952015f0981361636bf8f356d9cfd9d7f6f0815e3c07789a41233188" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.6.3" riverpod_lint: @@ -1119,7 +1127,7 @@ packages: description: name: riverpod_lint sha256: "83e4caa337a9840469b7b9bd8c2351ce85abad80f570d84146911b32086fbd99" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.6.3" rxdart: @@ -1127,7 +1135,7 @@ packages: description: name: rxdart sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.28.0" safe_local_storage: @@ -1135,7 +1143,7 @@ packages: description: name: safe_local_storage sha256: e9a21b6fec7a8aa62cc2585ff4c1b127df42f3185adbd2aca66b47abe2e80236 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.1" screen_retriever: @@ -1143,7 +1151,7 @@ packages: description: name: screen_retriever sha256: "570dbc8e4f70bac451e0efc9c9bb19fa2d6799a11e6ef04f946d7886d2e23d0c" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.2.0" screen_retriever_linux: @@ -1151,7 +1159,7 @@ packages: description: name: screen_retriever_linux sha256: f7f8120c92ef0784e58491ab664d01efda79a922b025ff286e29aa123ea3dd18 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.2.0" screen_retriever_macos: @@ -1159,7 +1167,7 @@ packages: description: name: screen_retriever_macos sha256: "71f956e65c97315dd661d71f828708bd97b6d358e776f1a30d5aa7d22d78a149" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.2.0" screen_retriever_platform_interface: @@ -1167,7 +1175,7 @@ packages: description: name: screen_retriever_platform_interface sha256: ee197f4581ff0d5608587819af40490748e1e39e648d7680ecf95c05197240c0 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.2.0" screen_retriever_windows: @@ -1175,7 +1183,7 @@ packages: description: name: screen_retriever_windows sha256: "449ee257f03ca98a57288ee526a301a430a344a161f9202b4fcc38576716fe13" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.2.0" scroll_loop_auto_scroll: @@ -1183,7 +1191,7 @@ packages: description: name: scroll_loop_auto_scroll sha256: "83645b380c58c9dac2a9948b11a6b09149a2aebd18a7ca25bbf3be3c89dbbbff" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.0.5" sensors_plus: @@ -1191,7 +1199,7 @@ packages: description: name: sensors_plus sha256: "89e2bfc3d883743539ce5774a2b93df61effde40ff958ecad78cd66b1a8b8d52" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.1.2" sensors_plus_platform_interface: @@ -1199,7 +1207,7 @@ packages: description: name: sensors_plus_platform_interface sha256: "58815d2f5e46c0c41c40fb39375d3f127306f7742efe3b891c0b1c87e2b5cd5d" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.1" share_plus: @@ -1207,7 +1215,7 @@ packages: description: name: share_plus sha256: fce43200aa03ea87b91ce4c3ac79f0cecd52e2a7a56c7a4185023c271fbfa6da - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "10.1.4" share_plus_platform_interface: @@ -1215,7 +1223,7 @@ packages: description: name: share_plus_platform_interface sha256: cc012a23fc2d479854e6c80150696c4a5f5bb62cb89af4de1c505cf78d0a5d0b - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.0.2" shelf: @@ -1223,7 +1231,7 @@ packages: description: name: shelf sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.4.2" shelf_web_socket: @@ -1231,7 +1239,7 @@ packages: description: name: shelf_web_socket sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.0" shelfsdk: @@ -1246,7 +1254,7 @@ packages: description: name: shimmer sha256: "5f88c883a22e9f9f299e5ba0e4f7e6054857224976a5d9f839d4ebdc94a14ac9" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.0" shortid: @@ -1254,7 +1262,7 @@ packages: description: name: shortid sha256: d0b40e3dbb50497dad107e19c54ca7de0d1a274eb9b4404991e443dadb9ebedb - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.2" sky_engine: @@ -1267,7 +1275,7 @@ packages: description: name: socket_io_client sha256: e8deafca92e944ac33fd7f93ce7ea453cedc4dac41c9c2526dbd5fdff9636dca - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.1.3" socket_io_common: @@ -1275,7 +1283,7 @@ packages: description: name: socket_io_common sha256: "162fbaecbf4bf9a9372a62a341b3550b51dcef2f02f3e5830a297fd48203d45b" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.1.1" source_gen: @@ -1283,7 +1291,7 @@ packages: description: name: source_gen sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.5.0" source_helper: @@ -1291,7 +1299,7 @@ packages: description: name: source_helper sha256: "86d247119aedce8e63f4751bd9626fc9613255935558447569ad42f9f5b48b3c" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.3.5" source_span: @@ -1299,7 +1307,7 @@ packages: description: name: source_span sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.10.1" sqflite: @@ -1307,7 +1315,7 @@ packages: description: name: sqflite sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.4.2" sqflite_android: @@ -1315,7 +1323,7 @@ packages: description: name: sqflite_android sha256: "2b3070c5fa881839f8b402ee4a39c1b4d561704d4ebbbcfb808a119bc2a1701b" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.4.1" sqflite_common: @@ -1323,7 +1331,7 @@ packages: description: name: sqflite_common sha256: "6ef422a4525ecc601db6c0a2233ff448c731307906e92cabc9ba292afaae16a6" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.5.6" sqflite_darwin: @@ -1331,7 +1339,7 @@ packages: description: name: sqflite_darwin sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.4.2" sqflite_platform_interface: @@ -1339,7 +1347,7 @@ packages: description: name: sqflite_platform_interface sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.4.0" stack_trace: @@ -1347,7 +1355,7 @@ packages: description: name: stack_trace sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.12.1" state_notifier: @@ -1355,7 +1363,7 @@ packages: description: name: state_notifier sha256: b8677376aa54f2d7c58280d5a007f9e8774f1968d1fb1c096adcb4792fba29bb - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.0" stream_channel: @@ -1363,7 +1371,7 @@ packages: description: name: stream_channel sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.4" stream_transform: @@ -1371,7 +1379,7 @@ packages: description: name: stream_transform sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.1" string_scanner: @@ -1379,7 +1387,7 @@ packages: description: name: string_scanner sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.4.1" synchronized: @@ -1387,7 +1395,7 @@ packages: description: name: synchronized sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.4.0" term_glyph: @@ -1395,7 +1403,7 @@ packages: description: name: term_glyph sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.2.2" test_api: @@ -1403,7 +1411,7 @@ packages: description: name: test_api sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.7.4" timing: @@ -1411,7 +1419,7 @@ packages: description: name: timing sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.2" tray_manager: @@ -1419,7 +1427,7 @@ packages: description: name: tray_manager sha256: c5fd83b0ae4d80be6eaedfad87aaefab8787b333b8ebd064b0e442a81006035b - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.5.2" typed_data: @@ -1427,7 +1435,7 @@ packages: description: name: typed_data sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.4.0" universal_platform: @@ -1435,7 +1443,7 @@ packages: description: name: universal_platform sha256: "64e16458a0ea9b99260ceb5467a214c1f298d647c659af1bff6d3bf82536b1ec" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.0" uri_parser: @@ -1451,7 +1459,7 @@ packages: description: name: url_launcher sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.3.2" url_launcher_android: @@ -1459,7 +1467,7 @@ packages: description: name: url_launcher_android sha256: "81777b08c498a292d93ff2feead633174c386291e35612f8da438d6e92c4447e" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.3.20" url_launcher_ios: @@ -1467,7 +1475,7 @@ packages: description: name: url_launcher_ios sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.3.4" url_launcher_linux: @@ -1475,7 +1483,7 @@ packages: description: name: url_launcher_linux sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.2.2" url_launcher_macos: @@ -1483,7 +1491,7 @@ packages: description: name: url_launcher_macos sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.2.3" url_launcher_platform_interface: @@ -1491,7 +1499,7 @@ packages: description: name: url_launcher_platform_interface sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.3.2" url_launcher_web: @@ -1499,7 +1507,7 @@ packages: description: name: url_launcher_web sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.4.1" url_launcher_windows: @@ -1507,7 +1515,7 @@ packages: description: name: url_launcher_windows sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.1.5" uuid: @@ -1515,7 +1523,7 @@ packages: description: name: uuid sha256: a11b666489b1954e01d992f3d601b1804a33937b5a8fe677bd26b8a9f96f96e8 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.5.2" vector_graphics: @@ -1523,7 +1531,7 @@ packages: description: name: vector_graphics sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.19" vector_graphics_codec: @@ -1531,7 +1539,7 @@ packages: description: name: vector_graphics_codec sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.13" vector_graphics_compiler: @@ -1539,7 +1547,7 @@ packages: description: name: vector_graphics_compiler sha256: d354a7ec6931e6047785f4db12a1f61ec3d43b207fc0790f863818543f8ff0dc - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.19" vector_math: @@ -1547,7 +1555,7 @@ packages: description: name: vector_math sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.4" vibration: @@ -1555,7 +1563,7 @@ packages: description: name: vibration sha256: bfb274be6996651d36bf3e3a947d2122767dae255cfb9ce6ce8ee4b38fb56bad - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.1.5" vibration_platform_interface: @@ -1563,7 +1571,7 @@ packages: description: name: vibration_platform_interface sha256: "4134fbfcd427b59a7a91f8733292e4e9b29a7f1e8224ff0d80f5745fbf0743c6" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.1" vm_service: @@ -1571,7 +1579,7 @@ packages: description: name: vm_service sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "15.0.0" watcher: @@ -1579,7 +1587,7 @@ packages: description: name: watcher sha256: f52385d4f73589977c80797e60fe51014f7f2b957b5e9a62c3f6ada439889249 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.2.0" web: @@ -1587,7 +1595,7 @@ packages: description: name: web sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.1" web_socket: @@ -1595,7 +1603,7 @@ packages: description: name: web_socket sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.1" web_socket_channel: @@ -1603,7 +1611,7 @@ packages: description: name: web_socket_channel sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.3" win32: @@ -1611,7 +1619,7 @@ packages: description: name: win32 sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.15.0" win32_registry: @@ -1619,7 +1627,7 @@ packages: description: name: win32_registry sha256: "6f1b564492d0147b330dd794fee8f512cec4977957f310f9951b5f9d83618dae" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.0" window_manager: @@ -1627,7 +1635,7 @@ packages: description: name: window_manager sha256: "7eb6d6c4164ec08e1bf978d6e733f3cebe792e2a23fb07cbca25c2872bfdbdcd" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.5.1" xdg_directories: @@ -1635,7 +1643,7 @@ packages: description: name: xdg_directories sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.0" xml: @@ -1643,7 +1651,7 @@ packages: description: name: xml sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.6.1" yaml: @@ -1651,9 +1659,17 @@ packages: description: name: yaml sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.1.3" + yaml_writer: + dependency: transitive + description: + name: yaml_writer + sha256: "69651cd7238411179ac32079937d4aa9a2970150d6b2ae2c6fe6de09402a5dc5" + url: "https://pub.dev" + source: hosted + version: "2.1.0" sdks: dart: ">=3.8.0 <4.0.0" flutter: ">=3.32.0" diff --git a/pubspec.yaml b/pubspec.yaml index 2ebb2bb..a45d50d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -22,7 +22,7 @@ environment: sdk: ">=3.3.4 <4.0.0" flutter: 3.32.0 -isar_version: &isar_version ^4.0.0-dev.14 # define the version to be used +# isar_version: &isar_version ^4.0.0-dev.14 # define the version to be used # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -37,8 +37,10 @@ dependencies: animated_list_plus: ^0.5.2 animated_theme_switcher: ^2.0.10 - archive: ^4.0.5 - audio_video_progress_bar: ^2.0.2 + archive: ^4.0.5 # 用于编码和解码各种归档和压缩格式的Dart库 + audio_video_progress_bar: ^2.0.2 # 播放进度条 + hooks_riverpod: ^2.5.1 # riverpod hooks + riverpod_annotation: ^2.3.5 # auto_scroll_text: ^0.0.7 background_downloader: ^9.2.0 cached_network_image: ^3.3.1 @@ -58,10 +60,11 @@ dependencies: # font_awesome_flutter: ^10.7.0 freezed_annotation: ^2.4.1 go_router: ^14.0.2 - hive: ^4.0.0-dev.2 - hooks_riverpod: ^2.5.1 - isar: ^4.0.0-dev.14 - isar_flutter_libs: ^4.0.0-dev.14 + hive_ce: ^2.16.0 # 轻量级且极快的键值数据库 + hive_ce_flutter: 2.3.3 + # hive: ^4.0.0-dev.2 + # isar: ^4.0.0-dev.14 + # isar_flutter_libs: ^4.0.0-dev.14 json_annotation: ^4.9.0 audio_service: ^0.18.15 audio_session: ^0.1.23 @@ -97,7 +100,7 @@ dependencies: path: ^1.9.0 path_provider: ^2.1.0 permission_handler: ^11.3.1 - riverpod_annotation: ^2.3.5 + scroll_loop_auto_scroll: ^0.0.5 sensors_plus: ^6.0.1 share_plus: ^10.0.2 @@ -114,6 +117,7 @@ dependencies: icons_plus: ^5.0.0 # http_cache_client: ^1.0.4 # http_cache_isar_store: ^3.0.0-dev.1 + dev_dependencies: build_runner: ^2.4.9 custom_lint: ^0.7.0 @@ -124,6 +128,7 @@ dev_dependencies: json_serializable: ^6.8.0 riverpod_generator: ^2.4.2 riverpod_lint: ^2.3.10 + hive_ce_generator: ^1.8.1 flutter_launcher_icons: "^0.14.4" # For information on the generic Dart part of this file, see the diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 4f18e92..d05533d 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -7,7 +7,6 @@ #include "generated_plugin_registrant.h" #include -#include #include #include #include @@ -19,8 +18,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { DynamicColorPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("DynamicColorPluginCApi")); - IsarFlutterLibsPluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("IsarFlutterLibsPlugin")); MediaKitLibsWindowsAudioPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("MediaKitLibsWindowsAudioPluginCApi")); PermissionHandlerWindowsPluginRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index ed05458..9244dfe 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -4,7 +4,6 @@ list(APPEND FLUTTER_PLUGIN_LIST dynamic_color - isar_flutter_libs media_kit_libs_windows_audio permission_handler_windows screen_retriever_windows