mirror of
https://github.com/gabehf/Fladder.git
synced 2026-03-07 21:48:14 -08:00
chore: Update flutter to 3.27 and updated packages
This commit is contained in:
parent
e607a6d19b
commit
a817d40463
24 changed files with 3848 additions and 5051 deletions
2
.fvmrc
2
.fvmrc
|
|
@ -1,3 +1,3 @@
|
||||||
{
|
{
|
||||||
"flutter": "3.24.3"
|
"flutter": "3.27.0"
|
||||||
}
|
}
|
||||||
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
|
|
@ -7,7 +7,7 @@
|
||||||
"LTWH",
|
"LTWH",
|
||||||
"outro"
|
"outro"
|
||||||
],
|
],
|
||||||
"dart.flutterSdkPath": ".fvm/versions/3.24.3",
|
"dart.flutterSdkPath": ".fvm/versions/3.27.0",
|
||||||
"search.exclude": {
|
"search.exclude": {
|
||||||
"**/.fvm": true
|
"**/.fvm": true
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
// ignore_for_file: type=lint
|
// ignore_for_file: type=lint
|
||||||
|
|
||||||
import 'package:json_annotation/json_annotation.dart';
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
import 'package:json_annotation/json_annotation.dart' as json;
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
|
|
@ -30,7 +31,7 @@ abstract class JellyfinOpenApi extends ChopperService {
|
||||||
ErrorConverter? errorConverter,
|
ErrorConverter? errorConverter,
|
||||||
Converter? converter,
|
Converter? converter,
|
||||||
Uri? baseUrl,
|
Uri? baseUrl,
|
||||||
Iterable<dynamic>? interceptors,
|
List<Interceptor>? interceptors,
|
||||||
}) {
|
}) {
|
||||||
if (client != null) {
|
if (client != null) {
|
||||||
return _$JellyfinOpenApi(client);
|
return _$JellyfinOpenApi(client);
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,12 +1,13 @@
|
||||||
import 'dart:developer';
|
import 'dart:developer';
|
||||||
|
|
||||||
import 'package:chopper/chopper.dart';
|
import 'package:chopper/chopper.dart';
|
||||||
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||||
|
|
||||||
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
|
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
|
||||||
import 'package:fladder/providers/auth_provider.dart';
|
import 'package:fladder/providers/auth_provider.dart';
|
||||||
import 'package:fladder/providers/service_provider.dart';
|
import 'package:fladder/providers/service_provider.dart';
|
||||||
import 'package:fladder/providers/user_provider.dart';
|
import 'package:fladder/providers/user_provider.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
||||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
||||||
|
|
||||||
part 'api_provider.g.dart';
|
part 'api_provider.g.dart';
|
||||||
|
|
||||||
|
|
@ -26,37 +27,40 @@ class JellyApi extends _$JellyApi {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class JellyRequest implements RequestInterceptor {
|
class JellyRequest implements Interceptor {
|
||||||
JellyRequest(this.ref);
|
JellyRequest(this.ref);
|
||||||
|
|
||||||
final Ref ref;
|
final Ref ref;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
FutureOr<Request> onRequest(Request request) async {
|
FutureOr<Response<BodyType>> intercept<BodyType>(Chain<BodyType> chain) async {
|
||||||
if (request.method == HttpMethod.Post) {
|
|
||||||
chopperLogger.info('Performed a POST request');
|
|
||||||
}
|
|
||||||
|
|
||||||
final serverUrl = Uri.parse(ref.read(userProvider)?.server ?? ref.read(authProvider).tempCredentials.server);
|
final serverUrl = Uri.parse(ref.read(userProvider)?.server ?? ref.read(authProvider).tempCredentials.server);
|
||||||
|
|
||||||
//Use current logged in user otherwise use the authprovider
|
//Use current logged in user otherwise use the authprovider
|
||||||
var loginModel = ref.read(userProvider)?.credentials ?? ref.read(authProvider).tempCredentials;
|
var loginModel = ref.read(userProvider)?.credentials ?? ref.read(authProvider).tempCredentials;
|
||||||
var headers = loginModel.header(ref);
|
var headers = loginModel.header(ref);
|
||||||
|
|
||||||
return request.copyWith(
|
final Response<BodyType> response = await chain.proceed(
|
||||||
|
applyHeaders(
|
||||||
|
chain.request.copyWith(
|
||||||
baseUri: serverUrl,
|
baseUri: serverUrl,
|
||||||
headers: request.headers..addAll(headers),
|
),
|
||||||
|
headers),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
return response;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class JellyResponse implements ResponseInterceptor {
|
class JellyResponse implements Interceptor {
|
||||||
JellyResponse(this.ref);
|
JellyResponse(this.ref);
|
||||||
|
|
||||||
final Ref ref;
|
final Ref ref;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
FutureOr<Response<dynamic>> onResponse(Response<dynamic> response) {
|
FutureOr<Response<BodyType>> intercept<BodyType>(Chain<BodyType> chain) async {
|
||||||
|
final Response<BodyType> response = await chain.proceed(chain.request);
|
||||||
|
|
||||||
if (!response.isSuccessful) {
|
if (!response.isSuccessful) {
|
||||||
log('x- ${response.base.statusCode} - ${response.base.reasonPhrase} - ${response.error} - ${response.base.request?.method} ${response.base.request?.url.toString()}');
|
log('x- ${response.base.statusCode} - ${response.base.reasonPhrase} - ${response.error} - ${response.base.request?.method} ${response.base.request?.url.toString()}');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,4 +22,4 @@ final jellyApiProvider =
|
||||||
|
|
||||||
typedef _$JellyApi = AutoDisposeNotifier<JellyService>;
|
typedef _$JellyApi = AutoDisposeNotifier<JellyService>;
|
||||||
// ignore_for_file: type=lint
|
// ignore_for_file: type=lint
|
||||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
// 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
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,18 @@
|
||||||
import 'dart:developer';
|
import 'dart:developer';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:flutter/widgets.dart';
|
||||||
|
|
||||||
import 'package:archive/archive_io.dart';
|
import 'package:archive/archive_io.dart';
|
||||||
import 'package:chopper/chopper.dart';
|
import 'package:chopper/chopper.dart';
|
||||||
import 'package:fladder/providers/service_provider.dart';
|
|
||||||
import 'package:fladder/providers/user_provider.dart';
|
|
||||||
import 'package:flutter/widgets.dart';
|
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
|
import 'package:path_provider/path_provider.dart';
|
||||||
|
|
||||||
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
|
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
|
||||||
import 'package:fladder/models/book_model.dart';
|
import 'package:fladder/models/book_model.dart';
|
||||||
import 'package:fladder/providers/api_provider.dart';
|
import 'package:fladder/providers/api_provider.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:fladder/providers/service_provider.dart';
|
||||||
|
import 'package:fladder/providers/user_provider.dart';
|
||||||
|
|
||||||
class BookViewerModel {
|
class BookViewerModel {
|
||||||
final BookModel? book;
|
final BookModel? book;
|
||||||
|
|
@ -75,7 +76,7 @@ class BookViewerNotifier extends StateNotifier<BookViewerModel> {
|
||||||
await bookFile.writeAsBytes(response.bodyBytes);
|
await bookFile.writeAsBytes(response.bodyBytes);
|
||||||
|
|
||||||
final inputStream = InputFileStream(bookFile.path);
|
final inputStream = InputFileStream(bookFile.path);
|
||||||
final archive = ZipDecoder().decodeBuffer(inputStream);
|
final archive = ZipDecoder().decodeStream(inputStream);
|
||||||
|
|
||||||
final List<String> imagesPath = [];
|
final List<String> imagesPath = [];
|
||||||
for (var file in archive.files) {
|
for (var file in archive.files) {
|
||||||
|
|
|
||||||
|
|
@ -23,4 +23,4 @@ final serverDiscoveryProvider = AutoDisposeStreamNotifierProvider<
|
||||||
|
|
||||||
typedef _$ServerDiscovery = AutoDisposeStreamNotifier<List<DiscoveryInfo>>;
|
typedef _$ServerDiscovery = AutoDisposeStreamNotifier<List<DiscoveryInfo>>;
|
||||||
// ignore_for_file: type=lint
|
// ignore_for_file: type=lint
|
||||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
// 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
|
||||||
|
|
|
||||||
|
|
@ -157,6 +157,8 @@ class MovieDetailsProvider
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||||
|
// ignore: unused_element
|
||||||
mixin MovieDetailsRef on AutoDisposeNotifierProviderRef<MovieModel?> {
|
mixin MovieDetailsRef on AutoDisposeNotifierProviderRef<MovieModel?> {
|
||||||
/// The parameter `arg` of this provider.
|
/// The parameter `arg` of this provider.
|
||||||
String get arg;
|
String get arg;
|
||||||
|
|
@ -171,4 +173,4 @@ class _MovieDetailsProviderElement
|
||||||
String get arg => (origin as MovieDetailsProvider).arg;
|
String get arg => (origin as MovieDetailsProvider).arg;
|
||||||
}
|
}
|
||||||
// ignore_for_file: type=lint
|
// ignore_for_file: type=lint
|
||||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
// 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
|
||||||
|
|
|
||||||
|
|
@ -157,6 +157,8 @@ class LibraryFiltersProvider extends AutoDisposeNotifierProviderImpl<
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||||
|
// ignore: unused_element
|
||||||
mixin LibraryFiltersRef
|
mixin LibraryFiltersRef
|
||||||
on AutoDisposeNotifierProviderRef<List<LibraryFiltersModel>> {
|
on AutoDisposeNotifierProviderRef<List<LibraryFiltersModel>> {
|
||||||
/// The parameter `ids` of this provider.
|
/// The parameter `ids` of this provider.
|
||||||
|
|
@ -171,4 +173,4 @@ class _LibraryFiltersProviderElement extends AutoDisposeNotifierProviderElement<
|
||||||
List<String> get ids => (origin as LibraryFiltersProvider).ids;
|
List<String> get ids => (origin as LibraryFiltersProvider).ids;
|
||||||
}
|
}
|
||||||
// ignore_for_file: type=lint
|
// ignore_for_file: type=lint
|
||||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
// 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
|
||||||
|
|
|
||||||
|
|
@ -43,4 +43,4 @@ final sessionInfoProvider =
|
||||||
|
|
||||||
typedef _$SessionInfo = AutoDisposeNotifier<SessionInfoModel>;
|
typedef _$SessionInfo = AutoDisposeNotifier<SessionInfoModel>;
|
||||||
// ignore_for_file: type=lint
|
// ignore_for_file: type=lint
|
||||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
// 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
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@ final backgroundDownloaderProvider = Provider<FileDownloader>.internal(
|
||||||
allTransitiveDependencies: null,
|
allTransitiveDependencies: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||||
|
// ignore: unused_element
|
||||||
typedef BackgroundDownloaderRef = ProviderRef<FileDownloader>;
|
typedef BackgroundDownloaderRef = ProviderRef<FileDownloader>;
|
||||||
// ignore_for_file: type=lint
|
// ignore_for_file: type=lint
|
||||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
// 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
|
||||||
|
|
|
||||||
|
|
@ -157,6 +157,8 @@ class SyncChildrenProvider
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||||
|
// ignore: unused_element
|
||||||
mixin SyncChildrenRef on AutoDisposeNotifierProviderRef<List<SyncedItem>> {
|
mixin SyncChildrenRef on AutoDisposeNotifierProviderRef<List<SyncedItem>> {
|
||||||
/// The parameter `arg` of this provider.
|
/// The parameter `arg` of this provider.
|
||||||
SyncedItem get arg;
|
SyncedItem get arg;
|
||||||
|
|
@ -302,6 +304,8 @@ class SyncDownloadStatusProvider extends AutoDisposeNotifierProviderImpl<
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||||
|
// ignore: unused_element
|
||||||
mixin SyncDownloadStatusRef on AutoDisposeNotifierProviderRef<DownloadStream?> {
|
mixin SyncDownloadStatusRef on AutoDisposeNotifierProviderRef<DownloadStream?> {
|
||||||
/// The parameter `arg` of this provider.
|
/// The parameter `arg` of this provider.
|
||||||
SyncedItem get arg;
|
SyncedItem get arg;
|
||||||
|
|
@ -446,6 +450,8 @@ class SyncStatusesProvider
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||||
|
// ignore: unused_element
|
||||||
mixin SyncStatusesRef on AutoDisposeAsyncNotifierProviderRef<SyncStatus> {
|
mixin SyncStatusesRef on AutoDisposeAsyncNotifierProviderRef<SyncStatus> {
|
||||||
/// The parameter `arg` of this provider.
|
/// The parameter `arg` of this provider.
|
||||||
SyncedItem get arg;
|
SyncedItem get arg;
|
||||||
|
|
@ -586,6 +592,8 @@ class SyncSizeProvider extends AutoDisposeNotifierProviderImpl<SyncSize, int?> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||||
|
// ignore: unused_element
|
||||||
mixin SyncSizeRef on AutoDisposeNotifierProviderRef<int?> {
|
mixin SyncSizeRef on AutoDisposeNotifierProviderRef<int?> {
|
||||||
/// The parameter `arg` of this provider.
|
/// The parameter `arg` of this provider.
|
||||||
SyncedItem get arg;
|
SyncedItem get arg;
|
||||||
|
|
@ -600,4 +608,4 @@ class _SyncSizeProviderElement
|
||||||
SyncedItem get arg => (origin as SyncSizeProvider).arg;
|
SyncedItem get arg => (origin as SyncSizeProvider).arg;
|
||||||
}
|
}
|
||||||
// ignore_for_file: type=lint
|
// ignore_for_file: type=lint
|
||||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
// 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
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@ final showSyncButtonProviderProvider = AutoDisposeProvider<bool>.internal(
|
||||||
allTransitiveDependencies: null,
|
allTransitiveDependencies: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||||
|
// ignore: unused_element
|
||||||
typedef ShowSyncButtonProviderRef = AutoDisposeProviderRef<bool>;
|
typedef ShowSyncButtonProviderRef = AutoDisposeProviderRef<bool>;
|
||||||
String _$userHash() => r'e83369c0d569d5a862aa1b92f3f0a45a9d1fe446';
|
String _$userHash() => r'e83369c0d569d5a862aa1b92f3f0a45a9d1fe446';
|
||||||
|
|
||||||
|
|
@ -37,4 +39,4 @@ final userProvider = NotifierProvider<User, AccountModel?>.internal(
|
||||||
|
|
||||||
typedef _$User = Notifier<AccountModel?>;
|
typedef _$User = Notifier<AccountModel?>;
|
||||||
// ignore_for_file: type=lint
|
// ignore_for_file: type=lint
|
||||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
// 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
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'dart:math' as math;
|
import 'dart:math' as math;
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:extended_image/extended_image.dart';
|
import 'package:extended_image/extended_image.dart';
|
||||||
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
|
|
||||||
import 'package:fladder/providers/settings/book_viewer_settings_provider.dart';
|
import 'package:fladder/providers/settings/book_viewer_settings_provider.dart';
|
||||||
import 'package:fladder/screens/book_viewer/book_viewer_controls.dart';
|
import 'package:fladder/screens/book_viewer/book_viewer_controls.dart';
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
||||||
|
|
||||||
class BookViewerReader extends ConsumerWidget {
|
class BookViewerReader extends ConsumerWidget {
|
||||||
final int index;
|
final int index;
|
||||||
|
|
@ -112,7 +114,6 @@ class BookViewerReader extends ConsumerWidget {
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
File(pages[index - 1]),
|
File(pages[index - 1]),
|
||||||
enableMemoryCache: true,
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:flutter_custom_tabs/flutter_custom_tabs.dart' as customtab;
|
import 'package:flutter_custom_tabs/flutter_custom_tabs.dart' as customtab;
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart' as urllauncher;
|
import 'package:url_launcher/url_launcher.dart' as urilauncher;
|
||||||
import 'package:url_launcher/url_launcher_string.dart';
|
import 'package:url_launcher/url_launcher_string.dart';
|
||||||
|
|
||||||
import 'package:fladder/models/items/item_shared_models.dart';
|
import 'package:fladder/models/items/item_shared_models.dart';
|
||||||
|
|
@ -49,26 +49,22 @@ Future<void> launchUrl(BuildContext context, String link) async {
|
||||||
final Uri url = Uri.parse(link);
|
final Uri url = Uri.parse(link);
|
||||||
|
|
||||||
if (AdaptiveLayout.of(context).isDesktop) {
|
if (AdaptiveLayout.of(context).isDesktop) {
|
||||||
if (!await urllauncher.launchUrl(url, mode: LaunchMode.externalApplication)) {
|
if (!await urilauncher.launchUrl(url, mode: LaunchMode.externalApplication)) {
|
||||||
throw Exception('Could not launch $url');
|
throw Exception('Could not launch $url');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
await customtab.launch(
|
await customtab.launchUrl(
|
||||||
link,
|
Uri.parse(link),
|
||||||
customTabsOption: customtab.CustomTabsOption(
|
customTabsOptions: customtab.CustomTabsOptions(
|
||||||
|
colorSchemes: customtab.CustomTabsColorSchemes.defaults(
|
||||||
toolbarColor: Theme.of(context).primaryColor,
|
toolbarColor: Theme.of(context).primaryColor,
|
||||||
enableDefaultShare: true,
|
|
||||||
enableUrlBarHiding: true,
|
|
||||||
showPageTitle: true,
|
|
||||||
extraCustomTabs: const <String>[
|
|
||||||
// ref. https://play.google.com/store/apps/details?id=org.mozilla.firefox
|
|
||||||
'org.mozilla.firefox',
|
|
||||||
// ref. https://play.google.com/store/apps/details?id=com.microsoft.emmx
|
|
||||||
'com.microsoft.emmx',
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
safariVCOption: customtab.SafariViewControllerOption(
|
urlBarHidingEnabled: true,
|
||||||
|
shareState: customtab.CustomTabsShareState.browserDefault,
|
||||||
|
showTitle: true,
|
||||||
|
),
|
||||||
|
safariVCOptions: customtab.SafariViewControllerOptions(
|
||||||
preferredBarTintColor: Theme.of(context).primaryColor,
|
preferredBarTintColor: Theme.of(context).primaryColor,
|
||||||
preferredControlTintColor: Colors.white,
|
preferredControlTintColor: Colors.white,
|
||||||
barCollapsingEnabled: true,
|
barCollapsingEnabled: true,
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,7 @@ class MediaControlsWrapper extends BaseAudioHandler {
|
||||||
playbackState.add(playbackState.value.copyWith(
|
playbackState.add(playbackState.value.copyWith(
|
||||||
playing: value.playing,
|
playing: value.playing,
|
||||||
));
|
));
|
||||||
smtc?.setPlaybackStatus(value.playing ? PlaybackStatus.Playing : PlaybackStatus.Paused);
|
smtc?.setPlaybackStatus(value.playing ? PlaybackStatus.playing : PlaybackStatus.paused);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -212,7 +212,7 @@ class MediaControlsWrapper extends BaseAudioHandler {
|
||||||
);
|
);
|
||||||
|
|
||||||
smtc?.enableSmtc();
|
smtc?.enableSmtc();
|
||||||
smtc?.setPlaybackStatus(PlaybackStatus.Playing);
|
smtc?.setPlaybackStatus(PlaybackStatus.playing);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -225,7 +225,7 @@ class MediaControlsWrapper extends BaseAudioHandler {
|
||||||
|
|
||||||
ref.read(playBackModel)?.playbackStopped(position ?? Duration.zero, totalDuration, ref);
|
ref.read(playBackModel)?.playbackStopped(position ?? Duration.zero, totalDuration, ref);
|
||||||
ref.read(mediaPlaybackProvider.notifier).update((state) => state.copyWith(position: Duration.zero));
|
ref.read(mediaPlaybackProvider.notifier).update((state) => state.copyWith(position: Duration.zero));
|
||||||
smtc?.setPlaybackStatus(PlaybackStatus.Stopped);
|
smtc?.setPlaybackStatus(PlaybackStatus.stopped);
|
||||||
smtc?.clearMetadata();
|
smtc?.clearMetadata();
|
||||||
smtc?.disableSmtc();
|
smtc?.disableSmtc();
|
||||||
playbackState.add(
|
playbackState.add(
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
#include <isar_flutter_libs/isar_flutter_libs_plugin.h>
|
#include <isar_flutter_libs/isar_flutter_libs_plugin.h>
|
||||||
#include <media_kit_libs_linux/media_kit_libs_linux_plugin.h>
|
#include <media_kit_libs_linux/media_kit_libs_linux_plugin.h>
|
||||||
#include <media_kit_video/media_kit_video_plugin.h>
|
#include <media_kit_video/media_kit_video_plugin.h>
|
||||||
#include <screen_retriever/screen_retriever_plugin.h>
|
#include <screen_retriever_linux/screen_retriever_linux_plugin.h>
|
||||||
#include <url_launcher_linux/url_launcher_plugin.h>
|
#include <url_launcher_linux/url_launcher_plugin.h>
|
||||||
#include <window_manager/window_manager_plugin.h>
|
#include <window_manager/window_manager_plugin.h>
|
||||||
|
|
||||||
|
|
@ -35,9 +35,9 @@ void fl_register_plugins(FlPluginRegistry* registry) {
|
||||||
g_autoptr(FlPluginRegistrar) media_kit_video_registrar =
|
g_autoptr(FlPluginRegistrar) media_kit_video_registrar =
|
||||||
fl_plugin_registry_get_registrar_for_plugin(registry, "MediaKitVideoPlugin");
|
fl_plugin_registry_get_registrar_for_plugin(registry, "MediaKitVideoPlugin");
|
||||||
media_kit_video_plugin_register_with_registrar(media_kit_video_registrar);
|
media_kit_video_plugin_register_with_registrar(media_kit_video_registrar);
|
||||||
g_autoptr(FlPluginRegistrar) screen_retriever_registrar =
|
g_autoptr(FlPluginRegistrar) screen_retriever_linux_registrar =
|
||||||
fl_plugin_registry_get_registrar_for_plugin(registry, "ScreenRetrieverPlugin");
|
fl_plugin_registry_get_registrar_for_plugin(registry, "ScreenRetrieverLinuxPlugin");
|
||||||
screen_retriever_plugin_register_with_registrar(screen_retriever_registrar);
|
screen_retriever_linux_plugin_register_with_registrar(screen_retriever_linux_registrar);
|
||||||
g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
|
g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
|
||||||
fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
|
fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
|
||||||
url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
|
url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
||||||
isar_flutter_libs
|
isar_flutter_libs
|
||||||
media_kit_libs_linux
|
media_kit_libs_linux
|
||||||
media_kit_video
|
media_kit_video
|
||||||
screen_retriever
|
screen_retriever_linux
|
||||||
url_launcher_linux
|
url_launcher_linux
|
||||||
window_manager
|
window_manager
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ import media_kit_video
|
||||||
import package_info_plus
|
import package_info_plus
|
||||||
import path_provider_foundation
|
import path_provider_foundation
|
||||||
import screen_brightness_macos
|
import screen_brightness_macos
|
||||||
import screen_retriever
|
import screen_retriever_macos
|
||||||
import share_plus
|
import share_plus
|
||||||
import shared_preferences_foundation
|
import shared_preferences_foundation
|
||||||
import sqflite_darwin
|
import sqflite_darwin
|
||||||
|
|
@ -42,7 +42,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||||
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
|
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
|
||||||
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
||||||
ScreenBrightnessMacosPlugin.register(with: registry.registrar(forPlugin: "ScreenBrightnessMacosPlugin"))
|
ScreenBrightnessMacosPlugin.register(with: registry.registrar(forPlugin: "ScreenBrightnessMacosPlugin"))
|
||||||
ScreenRetrieverPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverPlugin"))
|
ScreenRetrieverMacosPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverMacosPlugin"))
|
||||||
SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin"))
|
SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin"))
|
||||||
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
|
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
|
||||||
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
|
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
|
||||||
|
|
|
||||||
612
pubspec.lock
612
pubspec.lock
File diff suppressed because it is too large
Load diff
30
pubspec.yaml
30
pubspec.yaml
|
|
@ -41,7 +41,7 @@ dependencies:
|
||||||
icons_launcher: ^3.0.0
|
icons_launcher: ^3.0.0
|
||||||
|
|
||||||
# Network and HTTP
|
# Network and HTTP
|
||||||
chopper: ^7.0.4
|
chopper: ^8.0.3
|
||||||
cached_network_image: ^3.2.3
|
cached_network_image: ^3.2.3
|
||||||
http: ^1.1.0
|
http: ^1.1.0
|
||||||
flutter_cache_manager: ^3.3.0
|
flutter_cache_manager: ^3.3.0
|
||||||
|
|
@ -86,19 +86,19 @@ dependencies:
|
||||||
sliver_tools: ^0.2.10
|
sliver_tools: ^0.2.10
|
||||||
square_progress_indicator: ^0.0.7
|
square_progress_indicator: ^0.0.7
|
||||||
flutter_blurhash: ^0.8.2
|
flutter_blurhash: ^0.8.2
|
||||||
extended_image: ^8.1.1
|
extended_image: ^9.1.0
|
||||||
flutter_widget_from_html: ^0.14.11
|
flutter_widget_from_html: ^0.15.3
|
||||||
font_awesome_flutter: ^10.7.0
|
font_awesome_flutter: ^10.7.0
|
||||||
|
|
||||||
# Navigation
|
# Navigation
|
||||||
auto_route: ^9.2.2
|
auto_route: ^9.2.2
|
||||||
url_launcher: ^6.3.1
|
url_launcher: ^6.3.1
|
||||||
flutter_custom_tabs: ^1.0.4
|
flutter_custom_tabs: ^2.1.0
|
||||||
|
|
||||||
# Utility
|
# Utility
|
||||||
path: ^1.8.3
|
path: ^1.8.3
|
||||||
validators: ^3.0.0
|
validators: ^3.0.0
|
||||||
file_picker: ^6.1.1
|
file_picker: ^8.1.7
|
||||||
transparent_image: ^2.0.1
|
transparent_image: ^2.0.1
|
||||||
universal_html: ^2.2.4
|
universal_html: ^2.2.4
|
||||||
collection: ^1.17.0
|
collection: ^1.17.0
|
||||||
|
|
@ -109,9 +109,9 @@ dependencies:
|
||||||
package_info_plus: ^8.0.0
|
package_info_plus: ^8.0.0
|
||||||
open_app_file: ^4.0.2
|
open_app_file: ^4.0.2
|
||||||
wakelock_plus: ^1.1.4
|
wakelock_plus: ^1.1.4
|
||||||
screen_brightness: ^1.0.1
|
screen_brightness: ^2.0.1
|
||||||
window_manager: ^0.3.9
|
window_manager: ^0.4.3
|
||||||
smtc_windows: ^0.1.1
|
smtc_windows: ^1.0.0
|
||||||
background_downloader: ^8.5.2
|
background_downloader: ^8.5.2
|
||||||
|
|
||||||
# Data
|
# Data
|
||||||
|
|
@ -121,11 +121,11 @@ dependencies:
|
||||||
# Other
|
# Other
|
||||||
async: ^2.10.0
|
async: ^2.10.0
|
||||||
xid: ^1.0.12
|
xid: ^1.0.12
|
||||||
desktop_drop: 0.4.3
|
desktop_drop: ^0.5.0
|
||||||
flexible_scrollbar: ^0.1.3
|
flexible_scrollbar: ^0.1.3
|
||||||
flutter_typeahead: ^5.0.2
|
flutter_typeahead: ^5.0.2
|
||||||
share_plus: ^7.1.0
|
share_plus: ^10.1.3
|
||||||
archive: ^3.4.10
|
archive: ^4.0.2
|
||||||
dart_mappable: ^4.2.2
|
dart_mappable: ^4.2.2
|
||||||
reorderable_grid: ^1.0.10
|
reorderable_grid: ^1.0.10
|
||||||
|
|
||||||
|
|
@ -138,13 +138,13 @@ dev_dependencies:
|
||||||
# activated in the `analysis_options.yaml` file located at the root of your
|
# activated in the `analysis_options.yaml` file located at the root of your
|
||||||
# package. See that file for information about deactivating specific lint
|
# package. See that file for information about deactivating specific lint
|
||||||
# rules and activating additional ones.
|
# rules and activating additional ones.
|
||||||
flutter_lints: ^3.0.0
|
flutter_lints: ^5.0.0
|
||||||
build_runner: ^2.4.11
|
build_runner: ^2.4.11
|
||||||
chopper_generator: ^7.4.0
|
chopper_generator: ^8.0.3
|
||||||
json_serializable: ^6.8.0
|
json_serializable: ^6.8.0
|
||||||
custom_lint: ^0.6.4
|
custom_lint: ^0.7.0
|
||||||
freezed: ^2.5.2
|
freezed: ^2.5.2
|
||||||
swagger_dart_code_generator: ^2.15.2
|
swagger_dart_code_generator: ^3.0.1
|
||||||
riverpod_generator: ^2.4.0
|
riverpod_generator: ^2.4.0
|
||||||
dart_mappable_builder: ^4.2.3
|
dart_mappable_builder: ^4.2.3
|
||||||
auto_route_generator: ^9.0.0
|
auto_route_generator: ^9.0.0
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
#include <media_kit_video/media_kit_video_plugin_c_api.h>
|
#include <media_kit_video/media_kit_video_plugin_c_api.h>
|
||||||
#include <permission_handler_windows/permission_handler_windows_plugin.h>
|
#include <permission_handler_windows/permission_handler_windows_plugin.h>
|
||||||
#include <screen_brightness_windows/screen_brightness_windows_plugin.h>
|
#include <screen_brightness_windows/screen_brightness_windows_plugin.h>
|
||||||
#include <screen_retriever/screen_retriever_plugin.h>
|
#include <screen_retriever_windows/screen_retriever_windows_plugin_c_api.h>
|
||||||
#include <share_plus/share_plus_windows_plugin_c_api.h>
|
#include <share_plus/share_plus_windows_plugin_c_api.h>
|
||||||
#include <url_launcher_windows/url_launcher_windows.h>
|
#include <url_launcher_windows/url_launcher_windows.h>
|
||||||
#include <window_manager/window_manager_plugin.h>
|
#include <window_manager/window_manager_plugin.h>
|
||||||
|
|
@ -39,8 +39,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||||
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
|
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
|
||||||
ScreenBrightnessWindowsPluginRegisterWithRegistrar(
|
ScreenBrightnessWindowsPluginRegisterWithRegistrar(
|
||||||
registry->GetRegistrarForPlugin("ScreenBrightnessWindowsPlugin"));
|
registry->GetRegistrarForPlugin("ScreenBrightnessWindowsPlugin"));
|
||||||
ScreenRetrieverPluginRegisterWithRegistrar(
|
ScreenRetrieverWindowsPluginCApiRegisterWithRegistrar(
|
||||||
registry->GetRegistrarForPlugin("ScreenRetrieverPlugin"));
|
registry->GetRegistrarForPlugin("ScreenRetrieverWindowsPluginCApi"));
|
||||||
SharePlusWindowsPluginCApiRegisterWithRegistrar(
|
SharePlusWindowsPluginCApiRegisterWithRegistrar(
|
||||||
registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi"));
|
registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi"));
|
||||||
UrlLauncherWindowsRegisterWithRegistrar(
|
UrlLauncherWindowsRegisterWithRegistrar(
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
||||||
media_kit_video
|
media_kit_video
|
||||||
permission_handler_windows
|
permission_handler_windows
|
||||||
screen_brightness_windows
|
screen_brightness_windows
|
||||||
screen_retriever
|
screen_retriever_windows
|
||||||
share_plus
|
share_plus
|
||||||
url_launcher_windows
|
url_launcher_windows
|
||||||
window_manager
|
window_manager
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue