chore: Update dependencies (#372)

Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
This commit is contained in:
PartyDonut 2025-06-07 18:36:17 +02:00 committed by GitHub
parent 4220c68ca3
commit 34c9c5bd9c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
65 changed files with 431 additions and 1910 deletions

2
.fvmrc
View file

@ -1,3 +1,3 @@
{ {
"flutter": "3.29.2" "flutter": "3.32.1"
} }

3
.gitignore vendored
View file

@ -75,3 +75,6 @@ local.properties
# Inno Setup builds # Inno Setup builds
Output Output
# Generated localizations
lib/l10n/generated

6
.vscode/launch.json vendored
View file

@ -80,7 +80,8 @@
"deviceId": "chrome", "deviceId": "chrome",
"args": [ "args": [
"--web-port", "--web-port",
"9090" "9090",
"--web-experimental-hot-reload"
], ],
}, },
{ {
@ -91,7 +92,8 @@
"flutterMode": "release", "flutterMode": "release",
"args": [ "args": [
"--web-port", "--web-port",
"9090" "9090",
"--web-experimental-hot-reload"
], ],
}, },
], ],

12
.vscode/settings.json vendored
View file

@ -7,7 +7,7 @@
"LTWH", "LTWH",
"outro" "outro"
], ],
"dart.flutterSdkPath": ".fvm/versions/3.29.2", "dart.flutterSdkPath": ".fvm/versions/3.32.1",
"search.exclude": { "search.exclude": {
"**/.fvm": true "**/.fvm": true
}, },
@ -15,5 +15,13 @@
"**/.fvm": true "**/.fvm": true
}, },
"editor.detectIndentation": true, "editor.detectIndentation": true,
"dart.lineLength": 120 "dart.lineLength": 120,
"dart.analysisExcludedFolders": [
"build",
".dart_tool",
".fvm",
"packages",
"lib/jellyfin",
"lib/l10n"
]
} }

View file

@ -3,12 +3,15 @@ include: package:lints/recommended.yaml
analyzer: analyzer:
exclude: exclude:
- build/** - build/**
- .dart_tool/**
- .fvm/**
- pubspec.yaml
- packages/**
- lib/jellyfin/** - lib/jellyfin/**
- lib/**/**.g.dart - lib/**/**.g.dart
- lib/**/**.freezed.dart - lib/**/**.freezed.dart
- lib/**/**.mapped.dart - lib/**/**.mapped.dart
- packages/** - lib/l10n/**
- pubspec.yaml
strong-mode: strong-mode:
implicit-casts: false implicit-casts: false
implicit-dynamic: false implicit-dynamic: false

View file

@ -27,6 +27,9 @@ targets:
- "**/**_page.dart" - "**/**_page.dart"
freezed|freezed: freezed|freezed:
options: options:
copy_with: false
equal: false
tostring:
generate_for: generate_for:
- "**/**.f.dart" - "**/**.f.dart"
- "**/**.g.dart" - "**/**.g.dart"
@ -34,7 +37,7 @@ targets:
options: options:
ignoreNull: true ignoreNull: true
discriminatorKey: type discriminatorKey: type
generateMethods: [decode, encode, copy, stringify] generateMethods: [copy]
chopper_generator: chopper_generator:
options: options:
header: "//Generated jellyfin api code" header: "//Generated jellyfin api code"

View file

@ -2,3 +2,5 @@ arb-dir: lib/l10n
template-arb-file: app_en.arb template-arb-file: app_en.arb
output-localization-file: app_localizations.dart output-localization-file: app_localizations.dart
nullable-getter: false nullable-getter: false
synthetic-package: false
output-dir: lib/l10n/generated

View file

@ -7,7 +7,6 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:dynamic_color/dynamic_color.dart'; import 'package:dynamic_color/dynamic_color.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:isar/isar.dart'; import 'package:isar/isar.dart';
import 'package:package_info_plus/package_info_plus.dart'; import 'package:package_info_plus/package_info_plus.dart';
@ -18,6 +17,7 @@ import 'package:smtc_windows/smtc_windows.dart' if (dart.library.html) 'package:
import 'package:universal_html/html.dart' as html; import 'package:universal_html/html.dart' as html;
import 'package:window_manager/window_manager.dart'; import 'package:window_manager/window_manager.dart';
import 'package:fladder/l10n/generated/app_localizations.dart';
import 'package:fladder/models/account_model.dart'; import 'package:fladder/models/account_model.dart';
import 'package:fladder/models/settings/arguments_model.dart'; import 'package:fladder/models/settings/arguments_model.dart';
import 'package:fladder/models/syncing/i_synced_item.dart'; import 'package:fladder/models/syncing/i_synced_item.dart';

View file

@ -4,8 +4,8 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart'; import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
import 'package:fladder/models/credentials_model.dart'; import 'package:fladder/models/credentials_model.dart';
@ -16,7 +16,7 @@ import 'package:fladder/util/localization_helper.dart';
part 'account_model.freezed.dart'; part 'account_model.freezed.dart';
part 'account_model.g.dart'; part 'account_model.g.dart';
@freezed @Freezed(copyWith: true)
class AccountModel with _$AccountModel { class AccountModel with _$AccountModel {
const AccountModel._(); const AccountModel._();

View file

@ -395,56 +395,6 @@ class _$AccountModelImpl extends _AccountModel with DiagnosticableTreeMixin {
..add(DiagnosticsProperty('userConfiguration', userConfiguration)); ..add(DiagnosticsProperty('userConfiguration', userConfiguration));
} }
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$AccountModelImpl &&
(identical(other.name, name) || other.name == name) &&
(identical(other.id, id) || other.id == id) &&
(identical(other.avatar, avatar) || other.avatar == avatar) &&
(identical(other.lastUsed, lastUsed) ||
other.lastUsed == lastUsed) &&
(identical(other.authMethod, authMethod) ||
other.authMethod == authMethod) &&
(identical(other.localPin, localPin) ||
other.localPin == localPin) &&
(identical(other.credentials, credentials) ||
other.credentials == credentials) &&
const DeepCollectionEquality()
.equals(other._latestItemsExcludes, _latestItemsExcludes) &&
const DeepCollectionEquality()
.equals(other._searchQueryHistory, _searchQueryHistory) &&
(identical(other.quickConnectState, quickConnectState) ||
other.quickConnectState == quickConnectState) &&
const DeepCollectionEquality()
.equals(other._savedFilters, _savedFilters) &&
(identical(other.policy, policy) || other.policy == policy) &&
(identical(other.serverConfiguration, serverConfiguration) ||
other.serverConfiguration == serverConfiguration) &&
(identical(other.userConfiguration, userConfiguration) ||
other.userConfiguration == userConfiguration));
}
@JsonKey(includeFromJson: false, includeToJson: false)
@override
int get hashCode => Object.hash(
runtimeType,
name,
id,
avatar,
lastUsed,
authMethod,
localPin,
credentials,
const DeepCollectionEquality().hash(_latestItemsExcludes),
const DeepCollectionEquality().hash(_searchQueryHistory),
quickConnectState,
const DeepCollectionEquality().hash(_savedFilters),
policy,
serverConfiguration,
userConfiguration);
/// Create a copy of AccountModel /// Create a copy of AccountModel
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)

View file

@ -108,34 +108,11 @@ class BoxSetModelMapper extends SubClassMapperBase<BoxSetModel> {
@override @override
final Function instantiate = _instantiate; final Function instantiate = _instantiate;
static BoxSetModel fromMap(Map<String, dynamic> map) {
return ensureInitialized().decodeMap<BoxSetModel>(map);
}
static BoxSetModel fromJson(String json) {
return ensureInitialized().decodeJson<BoxSetModel>(json);
}
} }
mixin BoxSetModelMappable { mixin BoxSetModelMappable {
String toJson() {
return BoxSetModelMapper.ensureInitialized()
.encodeJson<BoxSetModel>(this as BoxSetModel);
}
Map<String, dynamic> toMap() {
return BoxSetModelMapper.ensureInitialized()
.encodeMap<BoxSetModel>(this as BoxSetModel);
}
BoxSetModelCopyWith<BoxSetModel, BoxSetModel, BoxSetModel> get copyWith => BoxSetModelCopyWith<BoxSetModel, BoxSetModel, BoxSetModel> get copyWith =>
_BoxSetModelCopyWithImpl(this as BoxSetModel, $identity, $identity); _BoxSetModelCopyWithImpl(this as BoxSetModel, $identity, $identity);
@override
String toString() {
return BoxSetModelMapper.ensureInitialized()
.stringifyValue(this as BoxSetModel);
}
} }
extension BoxSetModelValueCopy<$R, $Out> extension BoxSetModelValueCopy<$R, $Out>

View file

@ -93,35 +93,12 @@ class ItemBaseModelMapper extends ClassMapperBase<ItemBaseModel> {
@override @override
final Function instantiate = _instantiate; final Function instantiate = _instantiate;
static ItemBaseModel fromMap(Map<String, dynamic> map) {
return ensureInitialized().decodeMap<ItemBaseModel>(map);
}
static ItemBaseModel fromJson(String json) {
return ensureInitialized().decodeJson<ItemBaseModel>(json);
}
} }
mixin ItemBaseModelMappable { mixin ItemBaseModelMappable {
String toJson() {
return ItemBaseModelMapper.ensureInitialized()
.encodeJson<ItemBaseModel>(this as ItemBaseModel);
}
Map<String, dynamic> toMap() {
return ItemBaseModelMapper.ensureInitialized()
.encodeMap<ItemBaseModel>(this as ItemBaseModel);
}
ItemBaseModelCopyWith<ItemBaseModel, ItemBaseModel, ItemBaseModel> ItemBaseModelCopyWith<ItemBaseModel, ItemBaseModel, ItemBaseModel>
get copyWith => _ItemBaseModelCopyWithImpl( get copyWith => _ItemBaseModelCopyWithImpl(
this as ItemBaseModel, $identity, $identity); this as ItemBaseModel, $identity, $identity);
@override
String toString() {
return ItemBaseModelMapper.ensureInitialized()
.stringifyValue(this as ItemBaseModel);
}
} }
extension ItemBaseModelValueCopy<$R, $Out> extension ItemBaseModelValueCopy<$R, $Out>

View file

@ -141,34 +141,11 @@ class EpisodeModelMapper extends SubClassMapperBase<EpisodeModel> {
@override @override
final Function instantiate = _instantiate; final Function instantiate = _instantiate;
static EpisodeModel fromMap(Map<String, dynamic> map) {
return ensureInitialized().decodeMap<EpisodeModel>(map);
}
static EpisodeModel fromJson(String json) {
return ensureInitialized().decodeJson<EpisodeModel>(json);
}
} }
mixin EpisodeModelMappable { mixin EpisodeModelMappable {
String toJson() {
return EpisodeModelMapper.ensureInitialized()
.encodeJson<EpisodeModel>(this as EpisodeModel);
}
Map<String, dynamic> toMap() {
return EpisodeModelMapper.ensureInitialized()
.encodeMap<EpisodeModel>(this as EpisodeModel);
}
EpisodeModelCopyWith<EpisodeModel, EpisodeModel, EpisodeModel> get copyWith => EpisodeModelCopyWith<EpisodeModel, EpisodeModel, EpisodeModel> get copyWith =>
_EpisodeModelCopyWithImpl(this as EpisodeModel, $identity, $identity); _EpisodeModelCopyWithImpl(this as EpisodeModel, $identity, $identity);
@override
String toString() {
return EpisodeModelMapper.ensureInitialized()
.stringifyValue(this as EpisodeModel);
}
} }
extension EpisodeModelValueCopy<$R, $Out> extension EpisodeModelValueCopy<$R, $Out>

View file

@ -108,34 +108,11 @@ class FolderModelMapper extends SubClassMapperBase<FolderModel> {
@override @override
final Function instantiate = _instantiate; final Function instantiate = _instantiate;
static FolderModel fromMap(Map<String, dynamic> map) {
return ensureInitialized().decodeMap<FolderModel>(map);
}
static FolderModel fromJson(String json) {
return ensureInitialized().decodeJson<FolderModel>(json);
}
} }
mixin FolderModelMappable { mixin FolderModelMappable {
String toJson() {
return FolderModelMapper.ensureInitialized()
.encodeJson<FolderModel>(this as FolderModel);
}
Map<String, dynamic> toMap() {
return FolderModelMapper.ensureInitialized()
.encodeMap<FolderModel>(this as FolderModel);
}
FolderModelCopyWith<FolderModel, FolderModel, FolderModel> get copyWith => FolderModelCopyWith<FolderModel, FolderModel, FolderModel> get copyWith =>
_FolderModelCopyWithImpl(this as FolderModel, $identity, $identity); _FolderModelCopyWithImpl(this as FolderModel, $identity, $identity);
@override
String toString() {
return FolderModelMapper.ensureInitialized()
.stringifyValue(this as FolderModel);
}
} }
extension FolderModelValueCopy<$R, $Out> extension FolderModelValueCopy<$R, $Out>

View file

@ -18,92 +18,6 @@ final _privateConstructorUsedError = UnsupportedError(
mixin _$ItemPropertiesModel { mixin _$ItemPropertiesModel {
bool get canDelete => throw _privateConstructorUsedError; bool get canDelete => throw _privateConstructorUsedError;
bool get canDownload => throw _privateConstructorUsedError; bool get canDownload => throw _privateConstructorUsedError;
/// Create a copy of ItemPropertiesModel
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$ItemPropertiesModelCopyWith<ItemPropertiesModel> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $ItemPropertiesModelCopyWith<$Res> {
factory $ItemPropertiesModelCopyWith(
ItemPropertiesModel value, $Res Function(ItemPropertiesModel) then) =
_$ItemPropertiesModelCopyWithImpl<$Res, ItemPropertiesModel>;
@useResult
$Res call({bool canDelete, bool canDownload});
}
/// @nodoc
class _$ItemPropertiesModelCopyWithImpl<$Res, $Val extends ItemPropertiesModel>
implements $ItemPropertiesModelCopyWith<$Res> {
_$ItemPropertiesModelCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of ItemPropertiesModel
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? canDelete = null,
Object? canDownload = null,
}) {
return _then(_value.copyWith(
canDelete: null == canDelete
? _value.canDelete
: canDelete // ignore: cast_nullable_to_non_nullable
as bool,
canDownload: null == canDownload
? _value.canDownload
: canDownload // ignore: cast_nullable_to_non_nullable
as bool,
) as $Val);
}
}
/// @nodoc
abstract class _$$ItemPropertiesModelImplCopyWith<$Res>
implements $ItemPropertiesModelCopyWith<$Res> {
factory _$$ItemPropertiesModelImplCopyWith(_$ItemPropertiesModelImpl value,
$Res Function(_$ItemPropertiesModelImpl) then) =
__$$ItemPropertiesModelImplCopyWithImpl<$Res>;
@override
@useResult
$Res call({bool canDelete, bool canDownload});
}
/// @nodoc
class __$$ItemPropertiesModelImplCopyWithImpl<$Res>
extends _$ItemPropertiesModelCopyWithImpl<$Res, _$ItemPropertiesModelImpl>
implements _$$ItemPropertiesModelImplCopyWith<$Res> {
__$$ItemPropertiesModelImplCopyWithImpl(_$ItemPropertiesModelImpl _value,
$Res Function(_$ItemPropertiesModelImpl) _then)
: super(_value, _then);
/// Create a copy of ItemPropertiesModel
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? canDelete = null,
Object? canDownload = null,
}) {
return _then(_$ItemPropertiesModelImpl(
canDelete: null == canDelete
? _value.canDelete
: canDelete // ignore: cast_nullable_to_non_nullable
as bool,
canDownload: null == canDownload
? _value.canDownload
: canDownload // ignore: cast_nullable_to_non_nullable
as bool,
));
}
} }
/// @nodoc /// @nodoc
@ -122,29 +36,6 @@ class _$ItemPropertiesModelImpl extends _ItemPropertiesModel {
String toString() { String toString() {
return 'ItemPropertiesModel._internal(canDelete: $canDelete, canDownload: $canDownload)'; return 'ItemPropertiesModel._internal(canDelete: $canDelete, canDownload: $canDownload)';
} }
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$ItemPropertiesModelImpl &&
(identical(other.canDelete, canDelete) ||
other.canDelete == canDelete) &&
(identical(other.canDownload, canDownload) ||
other.canDownload == canDownload));
}
@override
int get hashCode => Object.hash(runtimeType, canDelete, canDownload);
/// Create a copy of ItemPropertiesModel
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$ItemPropertiesModelImplCopyWith<_$ItemPropertiesModelImpl> get copyWith =>
__$$ItemPropertiesModelImplCopyWithImpl<_$ItemPropertiesModelImpl>(
this, _$identity);
} }
abstract class _ItemPropertiesModel extends ItemPropertiesModel { abstract class _ItemPropertiesModel extends ItemPropertiesModel {
@ -157,11 +48,4 @@ abstract class _ItemPropertiesModel extends ItemPropertiesModel {
bool get canDelete; bool get canDelete;
@override @override
bool get canDownload; bool get canDownload;
/// Create a copy of ItemPropertiesModel
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(includeFromJson: false, includeToJson: false)
_$$ItemPropertiesModelImplCopyWith<_$ItemPropertiesModelImpl> get copyWith =>
throw _privateConstructorUsedError;
} }

View file

@ -14,7 +14,7 @@ import 'package:fladder/models/items/images_models.dart';
part 'item_shared_models.mapper.dart'; part 'item_shared_models.mapper.dart';
@MappableClass() @MappableClass(generateMethods: GenerateMethods.encode | GenerateMethods.decode | GenerateMethods.copy)
class UserData with UserDataMappable { class UserData with UserDataMappable {
final bool isFavourite; final bool isFavourite;
final int playCount; final int playCount;

View file

@ -92,10 +92,6 @@ mixin UserDataMappable {
UserDataCopyWith<UserData, UserData, UserData> get copyWith => UserDataCopyWith<UserData, UserData, UserData> get copyWith =>
_UserDataCopyWithImpl(this as UserData, $identity, $identity); _UserDataCopyWithImpl(this as UserData, $identity, $identity);
@override
String toString() {
return UserDataMapper.ensureInitialized().stringifyValue(this as UserData);
}
} }
extension UserDataValueCopy<$R, $Out> on ObjectCopyWith<$R, UserData, $Out> { extension UserDataValueCopy<$R, $Out> on ObjectCopyWith<$R, UserData, $Out> {

View file

@ -112,35 +112,12 @@ class ItemStreamModelMapper extends SubClassMapperBase<ItemStreamModel> {
@override @override
final Function instantiate = _instantiate; final Function instantiate = _instantiate;
static ItemStreamModel fromMap(Map<String, dynamic> map) {
return ensureInitialized().decodeMap<ItemStreamModel>(map);
}
static ItemStreamModel fromJson(String json) {
return ensureInitialized().decodeJson<ItemStreamModel>(json);
}
} }
mixin ItemStreamModelMappable { mixin ItemStreamModelMappable {
String toJson() {
return ItemStreamModelMapper.ensureInitialized()
.encodeJson<ItemStreamModel>(this as ItemStreamModel);
}
Map<String, dynamic> toMap() {
return ItemStreamModelMapper.ensureInitialized()
.encodeMap<ItemStreamModel>(this as ItemStreamModel);
}
ItemStreamModelCopyWith<ItemStreamModel, ItemStreamModel, ItemStreamModel> ItemStreamModelCopyWith<ItemStreamModel, ItemStreamModel, ItemStreamModel>
get copyWith => _ItemStreamModelCopyWithImpl( get copyWith => _ItemStreamModelCopyWithImpl(
this as ItemStreamModel, $identity, $identity); this as ItemStreamModel, $identity, $identity);
@override
String toString() {
return ItemStreamModelMapper.ensureInitialized()
.stringifyValue(this as ItemStreamModel);
}
} }
extension ItemStreamModelValueCopy<$R, $Out> extension ItemStreamModelValueCopy<$R, $Out>

View file

@ -24,82 +24,6 @@ mixin _$MediaSegmentsModel {
/// Serializes this MediaSegmentsModel to a JSON map. /// Serializes this MediaSegmentsModel to a JSON map.
Map<String, dynamic> toJson() => throw _privateConstructorUsedError; Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
/// Create a copy of MediaSegmentsModel
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$MediaSegmentsModelCopyWith<MediaSegmentsModel> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $MediaSegmentsModelCopyWith<$Res> {
factory $MediaSegmentsModelCopyWith(
MediaSegmentsModel value, $Res Function(MediaSegmentsModel) then) =
_$MediaSegmentsModelCopyWithImpl<$Res, MediaSegmentsModel>;
@useResult
$Res call({List<MediaSegment> segments});
}
/// @nodoc
class _$MediaSegmentsModelCopyWithImpl<$Res, $Val extends MediaSegmentsModel>
implements $MediaSegmentsModelCopyWith<$Res> {
_$MediaSegmentsModelCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of MediaSegmentsModel
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? segments = null,
}) {
return _then(_value.copyWith(
segments: null == segments
? _value.segments
: segments // ignore: cast_nullable_to_non_nullable
as List<MediaSegment>,
) as $Val);
}
}
/// @nodoc
abstract class _$$MediaSegmentsModelImplCopyWith<$Res>
implements $MediaSegmentsModelCopyWith<$Res> {
factory _$$MediaSegmentsModelImplCopyWith(_$MediaSegmentsModelImpl value,
$Res Function(_$MediaSegmentsModelImpl) then) =
__$$MediaSegmentsModelImplCopyWithImpl<$Res>;
@override
@useResult
$Res call({List<MediaSegment> segments});
}
/// @nodoc
class __$$MediaSegmentsModelImplCopyWithImpl<$Res>
extends _$MediaSegmentsModelCopyWithImpl<$Res, _$MediaSegmentsModelImpl>
implements _$$MediaSegmentsModelImplCopyWith<$Res> {
__$$MediaSegmentsModelImplCopyWithImpl(_$MediaSegmentsModelImpl _value,
$Res Function(_$MediaSegmentsModelImpl) _then)
: super(_value, _then);
/// Create a copy of MediaSegmentsModel
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? segments = null,
}) {
return _then(_$MediaSegmentsModelImpl(
segments: null == segments
? _value._segments
: segments // ignore: cast_nullable_to_non_nullable
as List<MediaSegment>,
));
}
} }
/// @nodoc /// @nodoc
@ -126,28 +50,6 @@ class _$MediaSegmentsModelImpl extends _MediaSegmentsModel {
return 'MediaSegmentsModel(segments: $segments)'; return 'MediaSegmentsModel(segments: $segments)';
} }
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$MediaSegmentsModelImpl &&
const DeepCollectionEquality().equals(other._segments, _segments));
}
@JsonKey(includeFromJson: false, includeToJson: false)
@override
int get hashCode =>
Object.hash(runtimeType, const DeepCollectionEquality().hash(_segments));
/// Create a copy of MediaSegmentsModel
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$MediaSegmentsModelImplCopyWith<_$MediaSegmentsModelImpl> get copyWith =>
__$$MediaSegmentsModelImplCopyWithImpl<_$MediaSegmentsModelImpl>(
this, _$identity);
@override @override
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
return _$$MediaSegmentsModelImplToJson( return _$$MediaSegmentsModelImplToJson(
@ -166,13 +68,6 @@ abstract class _MediaSegmentsModel extends MediaSegmentsModel {
@override @override
List<MediaSegment> get segments; List<MediaSegment> get segments;
/// Create a copy of MediaSegmentsModel
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(includeFromJson: false, includeToJson: false)
_$$MediaSegmentsModelImplCopyWith<_$MediaSegmentsModelImpl> get copyWith =>
throw _privateConstructorUsedError;
} }
MediaSegment _$MediaSegmentFromJson(Map<String, dynamic> json) { MediaSegment _$MediaSegmentFromJson(Map<String, dynamic> json) {
@ -187,102 +82,6 @@ mixin _$MediaSegment {
/// Serializes this MediaSegment to a JSON map. /// Serializes this MediaSegment to a JSON map.
Map<String, dynamic> toJson() => throw _privateConstructorUsedError; Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
/// Create a copy of MediaSegment
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$MediaSegmentCopyWith<MediaSegment> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $MediaSegmentCopyWith<$Res> {
factory $MediaSegmentCopyWith(
MediaSegment value, $Res Function(MediaSegment) then) =
_$MediaSegmentCopyWithImpl<$Res, MediaSegment>;
@useResult
$Res call({MediaSegmentType type, Duration start, Duration end});
}
/// @nodoc
class _$MediaSegmentCopyWithImpl<$Res, $Val extends MediaSegment>
implements $MediaSegmentCopyWith<$Res> {
_$MediaSegmentCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of MediaSegment
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? type = null,
Object? start = null,
Object? end = null,
}) {
return _then(_value.copyWith(
type: null == type
? _value.type
: type // ignore: cast_nullable_to_non_nullable
as MediaSegmentType,
start: null == start
? _value.start
: start // ignore: cast_nullable_to_non_nullable
as Duration,
end: null == end
? _value.end
: end // ignore: cast_nullable_to_non_nullable
as Duration,
) as $Val);
}
}
/// @nodoc
abstract class _$$MediaSegmentImplCopyWith<$Res>
implements $MediaSegmentCopyWith<$Res> {
factory _$$MediaSegmentImplCopyWith(
_$MediaSegmentImpl value, $Res Function(_$MediaSegmentImpl) then) =
__$$MediaSegmentImplCopyWithImpl<$Res>;
@override
@useResult
$Res call({MediaSegmentType type, Duration start, Duration end});
}
/// @nodoc
class __$$MediaSegmentImplCopyWithImpl<$Res>
extends _$MediaSegmentCopyWithImpl<$Res, _$MediaSegmentImpl>
implements _$$MediaSegmentImplCopyWith<$Res> {
__$$MediaSegmentImplCopyWithImpl(
_$MediaSegmentImpl _value, $Res Function(_$MediaSegmentImpl) _then)
: super(_value, _then);
/// Create a copy of MediaSegment
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? type = null,
Object? start = null,
Object? end = null,
}) {
return _then(_$MediaSegmentImpl(
type: null == type
? _value.type
: type // ignore: cast_nullable_to_non_nullable
as MediaSegmentType,
start: null == start
? _value.start
: start // ignore: cast_nullable_to_non_nullable
as Duration,
end: null == end
? _value.end
: end // ignore: cast_nullable_to_non_nullable
as Duration,
));
}
} }
/// @nodoc /// @nodoc
@ -307,28 +106,6 @@ class _$MediaSegmentImpl extends _MediaSegment {
return 'MediaSegment(type: $type, start: $start, end: $end)'; return 'MediaSegment(type: $type, start: $start, end: $end)';
} }
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$MediaSegmentImpl &&
(identical(other.type, type) || other.type == type) &&
(identical(other.start, start) || other.start == start) &&
(identical(other.end, end) || other.end == end));
}
@JsonKey(includeFromJson: false, includeToJson: false)
@override
int get hashCode => Object.hash(runtimeType, type, start, end);
/// Create a copy of MediaSegment
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$MediaSegmentImplCopyWith<_$MediaSegmentImpl> get copyWith =>
__$$MediaSegmentImplCopyWithImpl<_$MediaSegmentImpl>(this, _$identity);
@override @override
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
return _$$MediaSegmentImplToJson( return _$$MediaSegmentImplToJson(
@ -353,11 +130,4 @@ abstract class _MediaSegment extends MediaSegment {
Duration get start; Duration get start;
@override @override
Duration get end; Duration get end;
/// Create a copy of MediaSegment
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(includeFromJson: false, includeToJson: false)
_$$MediaSegmentImplCopyWith<_$MediaSegmentImpl> get copyWith =>
throw _privateConstructorUsedError;
} }

View file

@ -147,34 +147,11 @@ class MovieModelMapper extends SubClassMapperBase<MovieModel> {
@override @override
final Function instantiate = _instantiate; final Function instantiate = _instantiate;
static MovieModel fromMap(Map<String, dynamic> map) {
return ensureInitialized().decodeMap<MovieModel>(map);
}
static MovieModel fromJson(String json) {
return ensureInitialized().decodeJson<MovieModel>(json);
}
} }
mixin MovieModelMappable { mixin MovieModelMappable {
String toJson() {
return MovieModelMapper.ensureInitialized()
.encodeJson<MovieModel>(this as MovieModel);
}
Map<String, dynamic> toMap() {
return MovieModelMapper.ensureInitialized()
.encodeMap<MovieModel>(this as MovieModel);
}
MovieModelCopyWith<MovieModel, MovieModel, MovieModel> get copyWith => MovieModelCopyWith<MovieModel, MovieModel, MovieModel> get copyWith =>
_MovieModelCopyWithImpl(this as MovieModel, $identity, $identity); _MovieModelCopyWithImpl(this as MovieModel, $identity, $identity);
@override
String toString() {
return MovieModelMapper.ensureInitialized()
.stringifyValue(this as MovieModel);
}
} }
extension MovieModelValueCopy<$R, $Out> extension MovieModelValueCopy<$R, $Out>

View file

@ -1,3 +1,4 @@
import 'package:dart_mappable/dart_mappable.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart'; import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
@ -6,8 +7,6 @@ import 'package:fladder/models/items/item_shared_models.dart';
import 'package:fladder/models/items/trick_play_model.dart'; import 'package:fladder/models/items/trick_play_model.dart';
import 'package:fladder/util/duration_extensions.dart'; import 'package:fladder/util/duration_extensions.dart';
import 'package:dart_mappable/dart_mappable.dart';
part 'overview_model.mapper.dart'; part 'overview_model.mapper.dart';
@MappableClass() @MappableClass()
@ -76,7 +75,4 @@ class OverviewModel with OverviewModelMappable {
people: Person.peopleFromDto(item.people ?? [], ref), people: Person.peopleFromDto(item.people ?? [], ref),
); );
} }
factory OverviewModel.fromMap(Map<String, dynamic> map) => OverviewModelMapper.fromMap(map);
factory OverviewModel.fromJson(String json) => OverviewModelMapper.fromJson(json);
} }

View file

@ -114,35 +114,12 @@ class OverviewModelMapper extends ClassMapperBase<OverviewModel> {
@override @override
final Function instantiate = _instantiate; final Function instantiate = _instantiate;
static OverviewModel fromMap(Map<String, dynamic> map) {
return ensureInitialized().decodeMap<OverviewModel>(map);
}
static OverviewModel fromJson(String json) {
return ensureInitialized().decodeJson<OverviewModel>(json);
}
} }
mixin OverviewModelMappable { mixin OverviewModelMappable {
String toJson() {
return OverviewModelMapper.ensureInitialized()
.encodeJson<OverviewModel>(this as OverviewModel);
}
Map<String, dynamic> toMap() {
return OverviewModelMapper.ensureInitialized()
.encodeMap<OverviewModel>(this as OverviewModel);
}
OverviewModelCopyWith<OverviewModel, OverviewModel, OverviewModel> OverviewModelCopyWith<OverviewModel, OverviewModel, OverviewModel>
get copyWith => _OverviewModelCopyWithImpl( get copyWith => _OverviewModelCopyWithImpl(
this as OverviewModel, $identity, $identity); this as OverviewModel, $identity, $identity);
@override
String toString() {
return OverviewModelMapper.ensureInitialized()
.stringifyValue(this as OverviewModel);
}
} }
extension OverviewModelValueCopy<$R, $Out> extension OverviewModelValueCopy<$R, $Out>

View file

@ -124,34 +124,11 @@ class PersonModelMapper extends SubClassMapperBase<PersonModel> {
@override @override
final Function instantiate = _instantiate; final Function instantiate = _instantiate;
static PersonModel fromMap(Map<String, dynamic> map) {
return ensureInitialized().decodeMap<PersonModel>(map);
}
static PersonModel fromJson(String json) {
return ensureInitialized().decodeJson<PersonModel>(json);
}
} }
mixin PersonModelMappable { mixin PersonModelMappable {
String toJson() {
return PersonModelMapper.ensureInitialized()
.encodeJson<PersonModel>(this as PersonModel);
}
Map<String, dynamic> toMap() {
return PersonModelMapper.ensureInitialized()
.encodeMap<PersonModel>(this as PersonModel);
}
PersonModelCopyWith<PersonModel, PersonModel, PersonModel> get copyWith => PersonModelCopyWith<PersonModel, PersonModel, PersonModel> get copyWith =>
_PersonModelCopyWithImpl(this as PersonModel, $identity, $identity); _PersonModelCopyWithImpl(this as PersonModel, $identity, $identity);
@override
String toString() {
return PersonModelMapper.ensureInitialized()
.stringifyValue(this as PersonModel);
}
} }
extension PersonModelValueCopy<$R, $Out> extension PersonModelValueCopy<$R, $Out>

View file

@ -108,35 +108,12 @@ class PhotoAlbumModelMapper extends SubClassMapperBase<PhotoAlbumModel> {
@override @override
final Function instantiate = _instantiate; final Function instantiate = _instantiate;
static PhotoAlbumModel fromMap(Map<String, dynamic> map) {
return ensureInitialized().decodeMap<PhotoAlbumModel>(map);
}
static PhotoAlbumModel fromJson(String json) {
return ensureInitialized().decodeJson<PhotoAlbumModel>(json);
}
} }
mixin PhotoAlbumModelMappable { mixin PhotoAlbumModelMappable {
String toJson() {
return PhotoAlbumModelMapper.ensureInitialized()
.encodeJson<PhotoAlbumModel>(this as PhotoAlbumModel);
}
Map<String, dynamic> toMap() {
return PhotoAlbumModelMapper.ensureInitialized()
.encodeMap<PhotoAlbumModel>(this as PhotoAlbumModel);
}
PhotoAlbumModelCopyWith<PhotoAlbumModel, PhotoAlbumModel, PhotoAlbumModel> PhotoAlbumModelCopyWith<PhotoAlbumModel, PhotoAlbumModel, PhotoAlbumModel>
get copyWith => _PhotoAlbumModelCopyWithImpl( get copyWith => _PhotoAlbumModelCopyWithImpl(
this as PhotoAlbumModel, $identity, $identity); this as PhotoAlbumModel, $identity, $identity);
@override
String toString() {
return PhotoAlbumModelMapper.ensureInitialized()
.stringifyValue(this as PhotoAlbumModel);
}
} }
extension PhotoAlbumModelValueCopy<$R, $Out> extension PhotoAlbumModelValueCopy<$R, $Out>
@ -359,34 +336,11 @@ class PhotoModelMapper extends SubClassMapperBase<PhotoModel> {
@override @override
final Function instantiate = _instantiate; final Function instantiate = _instantiate;
static PhotoModel fromMap(Map<String, dynamic> map) {
return ensureInitialized().decodeMap<PhotoModel>(map);
}
static PhotoModel fromJson(String json) {
return ensureInitialized().decodeJson<PhotoModel>(json);
}
} }
mixin PhotoModelMappable { mixin PhotoModelMappable {
String toJson() {
return PhotoModelMapper.ensureInitialized()
.encodeJson<PhotoModel>(this as PhotoModel);
}
Map<String, dynamic> toMap() {
return PhotoModelMapper.ensureInitialized()
.encodeMap<PhotoModel>(this as PhotoModel);
}
PhotoModelCopyWith<PhotoModel, PhotoModel, PhotoModel> get copyWith => PhotoModelCopyWith<PhotoModel, PhotoModel, PhotoModel> get copyWith =>
_PhotoModelCopyWithImpl(this as PhotoModel, $identity, $identity); _PhotoModelCopyWithImpl(this as PhotoModel, $identity, $identity);
@override
String toString() {
return PhotoModelMapper.ensureInitialized()
.stringifyValue(this as PhotoModel);
}
} }
extension PhotoModelValueCopy<$R, $Out> extension PhotoModelValueCopy<$R, $Out>

View file

@ -137,34 +137,11 @@ class SeasonModelMapper extends SubClassMapperBase<SeasonModel> {
@override @override
final Function instantiate = _instantiate; final Function instantiate = _instantiate;
static SeasonModel fromMap(Map<String, dynamic> map) {
return ensureInitialized().decodeMap<SeasonModel>(map);
}
static SeasonModel fromJson(String json) {
return ensureInitialized().decodeJson<SeasonModel>(json);
}
} }
mixin SeasonModelMappable { mixin SeasonModelMappable {
String toJson() {
return SeasonModelMapper.ensureInitialized()
.encodeJson<SeasonModel>(this as SeasonModel);
}
Map<String, dynamic> toMap() {
return SeasonModelMapper.ensureInitialized()
.encodeMap<SeasonModel>(this as SeasonModel);
}
SeasonModelCopyWith<SeasonModel, SeasonModel, SeasonModel> get copyWith => SeasonModelCopyWith<SeasonModel, SeasonModel, SeasonModel> get copyWith =>
_SeasonModelCopyWithImpl(this as SeasonModel, $identity, $identity); _SeasonModelCopyWithImpl(this as SeasonModel, $identity, $identity);
@override
String toString() {
return SeasonModelMapper.ensureInitialized()
.stringifyValue(this as SeasonModel);
}
} }
extension SeasonModelValueCopy<$R, $Out> extension SeasonModelValueCopy<$R, $Out>

View file

@ -135,34 +135,11 @@ class SeriesModelMapper extends SubClassMapperBase<SeriesModel> {
@override @override
final Function instantiate = _instantiate; final Function instantiate = _instantiate;
static SeriesModel fromMap(Map<String, dynamic> map) {
return ensureInitialized().decodeMap<SeriesModel>(map);
}
static SeriesModel fromJson(String json) {
return ensureInitialized().decodeJson<SeriesModel>(json);
}
} }
mixin SeriesModelMappable { mixin SeriesModelMappable {
String toJson() {
return SeriesModelMapper.ensureInitialized()
.encodeJson<SeriesModel>(this as SeriesModel);
}
Map<String, dynamic> toMap() {
return SeriesModelMapper.ensureInitialized()
.encodeMap<SeriesModel>(this as SeriesModel);
}
SeriesModelCopyWith<SeriesModel, SeriesModel, SeriesModel> get copyWith => SeriesModelCopyWith<SeriesModel, SeriesModel, SeriesModel> get copyWith =>
_SeriesModelCopyWithImpl(this as SeriesModel, $identity, $identity); _SeriesModelCopyWithImpl(this as SeriesModel, $identity, $identity);
@override
String toString() {
return SeriesModelMapper.ensureInitialized()
.stringifyValue(this as SeriesModel);
}
} }
extension SeriesModelValueCopy<$R, $Out> extension SeriesModelValueCopy<$R, $Out>

View file

@ -5,7 +5,7 @@ import 'package:freezed_annotation/freezed_annotation.dart';
part 'trick_play_model.freezed.dart'; part 'trick_play_model.freezed.dart';
part 'trick_play_model.g.dart'; part 'trick_play_model.g.dart';
@freezed @Freezed(copyWith: true)
class TrickPlayModel with _$TrickPlayModel { class TrickPlayModel with _$TrickPlayModel {
factory TrickPlayModel({ factory TrickPlayModel({
required int width, required int width,

View file

@ -225,36 +225,6 @@ class _$TrickPlayModelImpl extends _TrickPlayModel {
return 'TrickPlayModel(width: $width, height: $height, tileWidth: $tileWidth, tileHeight: $tileHeight, thumbnailCount: $thumbnailCount, interval: $interval, images: $images)'; return 'TrickPlayModel(width: $width, height: $height, tileWidth: $tileWidth, tileHeight: $tileHeight, thumbnailCount: $thumbnailCount, interval: $interval, images: $images)';
} }
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$TrickPlayModelImpl &&
(identical(other.width, width) || other.width == width) &&
(identical(other.height, height) || other.height == height) &&
(identical(other.tileWidth, tileWidth) ||
other.tileWidth == tileWidth) &&
(identical(other.tileHeight, tileHeight) ||
other.tileHeight == tileHeight) &&
(identical(other.thumbnailCount, thumbnailCount) ||
other.thumbnailCount == thumbnailCount) &&
(identical(other.interval, interval) ||
other.interval == interval) &&
const DeepCollectionEquality().equals(other._images, _images));
}
@JsonKey(includeFromJson: false, includeToJson: false)
@override
int get hashCode => Object.hash(
runtimeType,
width,
height,
tileWidth,
tileHeight,
thumbnailCount,
interval,
const DeepCollectionEquality().hash(_images));
/// Create a copy of TrickPlayModel /// Create a copy of TrickPlayModel
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)

View file

@ -14,7 +14,7 @@ import 'package:fladder/util/map_bool_helper.dart';
part 'library_filters_model.freezed.dart'; part 'library_filters_model.freezed.dart';
part 'library_filters_model.g.dart'; part 'library_filters_model.g.dart';
@freezed @Freezed(copyWith: true)
class LibraryFiltersModel with _$LibraryFiltersModel { class LibraryFiltersModel with _$LibraryFiltersModel {
const LibraryFiltersModel._(); const LibraryFiltersModel._();
@ -40,11 +40,16 @@ class LibraryFiltersModel with _$LibraryFiltersModel {
factory LibraryFiltersModel.fromJson(Map<String, dynamic> json) => _$LibraryFiltersModelFromJson(json); factory LibraryFiltersModel.fromJson(Map<String, dynamic> json) => _$LibraryFiltersModelFromJson(json);
factory LibraryFiltersModel.fromLibrarySearch(String name, LibrarySearchModel searchModel) { factory LibraryFiltersModel.fromLibrarySearch(
String name,
LibrarySearchModel searchModel, {
bool? isFavourite,
String? id,
}) {
return LibraryFiltersModel._internal( return LibraryFiltersModel._internal(
id: Xid().toString(), id: id ?? Xid().toString(),
name: name, name: name,
isFavourite: false, isFavourite: isFavourite ?? false,
ids: searchModel.views.included.map((e) => e.id).toList(), ids: searchModel.views.included.map((e) => e.id).toList(),
genres: searchModel.genres, genres: searchModel.genres,
filters: searchModel.filters, filters: searchModel.filters,

View file

@ -436,59 +436,6 @@ class _$LibraryFiltersModelImpl extends _LibraryFiltersModel {
return 'LibraryFiltersModel._internal(id: $id, name: $name, isFavourite: $isFavourite, ids: $ids, genres: $genres, filters: $filters, studios: $studios, tags: $tags, years: $years, officialRatings: $officialRatings, types: $types, sortingOption: $sortingOption, sortOrder: $sortOrder, favourites: $favourites, hideEmptyShows: $hideEmptyShows, recursive: $recursive, groupBy: $groupBy)'; return 'LibraryFiltersModel._internal(id: $id, name: $name, isFavourite: $isFavourite, ids: $ids, genres: $genres, filters: $filters, studios: $studios, tags: $tags, years: $years, officialRatings: $officialRatings, types: $types, sortingOption: $sortingOption, sortOrder: $sortOrder, favourites: $favourites, hideEmptyShows: $hideEmptyShows, recursive: $recursive, groupBy: $groupBy)';
} }
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$LibraryFiltersModelImpl &&
(identical(other.id, id) || other.id == id) &&
(identical(other.name, name) || other.name == name) &&
(identical(other.isFavourite, isFavourite) ||
other.isFavourite == isFavourite) &&
const DeepCollectionEquality().equals(other._ids, _ids) &&
const DeepCollectionEquality().equals(other._genres, _genres) &&
const DeepCollectionEquality().equals(other._filters, _filters) &&
const DeepCollectionEquality().equals(other._studios, _studios) &&
const DeepCollectionEquality().equals(other._tags, _tags) &&
const DeepCollectionEquality().equals(other._years, _years) &&
const DeepCollectionEquality()
.equals(other._officialRatings, _officialRatings) &&
const DeepCollectionEquality().equals(other._types, _types) &&
(identical(other.sortingOption, sortingOption) ||
other.sortingOption == sortingOption) &&
(identical(other.sortOrder, sortOrder) ||
other.sortOrder == sortOrder) &&
(identical(other.favourites, favourites) ||
other.favourites == favourites) &&
(identical(other.hideEmptyShows, hideEmptyShows) ||
other.hideEmptyShows == hideEmptyShows) &&
(identical(other.recursive, recursive) ||
other.recursive == recursive) &&
(identical(other.groupBy, groupBy) || other.groupBy == groupBy));
}
@JsonKey(includeFromJson: false, includeToJson: false)
@override
int get hashCode => Object.hash(
runtimeType,
id,
name,
isFavourite,
const DeepCollectionEquality().hash(_ids),
const DeepCollectionEquality().hash(_genres),
const DeepCollectionEquality().hash(_filters),
const DeepCollectionEquality().hash(_studios),
const DeepCollectionEquality().hash(_tags),
const DeepCollectionEquality().hash(_years),
const DeepCollectionEquality().hash(_officialRatings),
const DeepCollectionEquality().hash(_types),
sortingOption,
sortOrder,
favourites,
hideEmptyShows,
recursive,
groupBy);
/// Create a copy of LibraryFiltersModel /// Create a copy of LibraryFiltersModel
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)

View file

@ -177,36 +177,13 @@ class LibrarySearchModelMapper extends ClassMapperBase<LibrarySearchModel> {
@override @override
final Function instantiate = _instantiate; final Function instantiate = _instantiate;
static LibrarySearchModel fromMap(Map<String, dynamic> map) {
return ensureInitialized().decodeMap<LibrarySearchModel>(map);
}
static LibrarySearchModel fromJson(String json) {
return ensureInitialized().decodeJson<LibrarySearchModel>(json);
}
} }
mixin LibrarySearchModelMappable { mixin LibrarySearchModelMappable {
String toJson() {
return LibrarySearchModelMapper.ensureInitialized()
.encodeJson<LibrarySearchModel>(this as LibrarySearchModel);
}
Map<String, dynamic> toMap() {
return LibrarySearchModelMapper.ensureInitialized()
.encodeMap<LibrarySearchModel>(this as LibrarySearchModel);
}
LibrarySearchModelCopyWith<LibrarySearchModel, LibrarySearchModel, LibrarySearchModelCopyWith<LibrarySearchModel, LibrarySearchModel,
LibrarySearchModel> LibrarySearchModel>
get copyWith => _LibrarySearchModelCopyWithImpl( get copyWith => _LibrarySearchModelCopyWithImpl(
this as LibrarySearchModel, $identity, $identity); this as LibrarySearchModel, $identity, $identity);
@override
String toString() {
return LibrarySearchModelMapper.ensureInitialized()
.stringifyValue(this as LibrarySearchModel);
}
} }
extension LibrarySearchModelValueCopy<$R, $Out> extension LibrarySearchModelValueCopy<$R, $Out>

View file

@ -17,82 +17,6 @@ final _privateConstructorUsedError = UnsupportedError(
/// @nodoc /// @nodoc
mixin _$ArgumentsModel { mixin _$ArgumentsModel {
bool get htpcMode => throw _privateConstructorUsedError; bool get htpcMode => throw _privateConstructorUsedError;
/// Create a copy of ArgumentsModel
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$ArgumentsModelCopyWith<ArgumentsModel> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $ArgumentsModelCopyWith<$Res> {
factory $ArgumentsModelCopyWith(
ArgumentsModel value, $Res Function(ArgumentsModel) then) =
_$ArgumentsModelCopyWithImpl<$Res, ArgumentsModel>;
@useResult
$Res call({bool htpcMode});
}
/// @nodoc
class _$ArgumentsModelCopyWithImpl<$Res, $Val extends ArgumentsModel>
implements $ArgumentsModelCopyWith<$Res> {
_$ArgumentsModelCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of ArgumentsModel
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? htpcMode = null,
}) {
return _then(_value.copyWith(
htpcMode: null == htpcMode
? _value.htpcMode
: htpcMode // ignore: cast_nullable_to_non_nullable
as bool,
) as $Val);
}
}
/// @nodoc
abstract class _$$ArgumentsModelImplCopyWith<$Res>
implements $ArgumentsModelCopyWith<$Res> {
factory _$$ArgumentsModelImplCopyWith(_$ArgumentsModelImpl value,
$Res Function(_$ArgumentsModelImpl) then) =
__$$ArgumentsModelImplCopyWithImpl<$Res>;
@override
@useResult
$Res call({bool htpcMode});
}
/// @nodoc
class __$$ArgumentsModelImplCopyWithImpl<$Res>
extends _$ArgumentsModelCopyWithImpl<$Res, _$ArgumentsModelImpl>
implements _$$ArgumentsModelImplCopyWith<$Res> {
__$$ArgumentsModelImplCopyWithImpl(
_$ArgumentsModelImpl _value, $Res Function(_$ArgumentsModelImpl) _then)
: super(_value, _then);
/// Create a copy of ArgumentsModel
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? htpcMode = null,
}) {
return _then(_$ArgumentsModelImpl(
htpcMode: null == htpcMode
? _value.htpcMode
: htpcMode // ignore: cast_nullable_to_non_nullable
as bool,
));
}
} }
/// @nodoc /// @nodoc
@ -108,27 +32,6 @@ class _$ArgumentsModelImpl extends _ArgumentsModel {
String toString() { String toString() {
return 'ArgumentsModel(htpcMode: $htpcMode)'; return 'ArgumentsModel(htpcMode: $htpcMode)';
} }
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$ArgumentsModelImpl &&
(identical(other.htpcMode, htpcMode) ||
other.htpcMode == htpcMode));
}
@override
int get hashCode => Object.hash(runtimeType, htpcMode);
/// Create a copy of ArgumentsModel
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$ArgumentsModelImplCopyWith<_$ArgumentsModelImpl> get copyWith =>
__$$ArgumentsModelImplCopyWithImpl<_$ArgumentsModelImpl>(
this, _$identity);
} }
abstract class _ArgumentsModel extends ArgumentsModel { abstract class _ArgumentsModel extends ArgumentsModel {
@ -137,11 +40,4 @@ abstract class _ArgumentsModel extends ArgumentsModel {
@override @override
bool get htpcMode; bool get htpcMode;
/// Create a copy of ArgumentsModel
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(includeFromJson: false, includeToJson: false)
_$$ArgumentsModelImplCopyWith<_$ArgumentsModelImpl> get copyWith =>
throw _privateConstructorUsedError;
} }

View file

@ -11,7 +11,7 @@ import 'package:fladder/util/custom_color_themes.dart';
part 'client_settings_model.freezed.dart'; part 'client_settings_model.freezed.dart';
part 'client_settings_model.g.dart'; part 'client_settings_model.g.dart';
@freezed @Freezed(copyWith: true)
class ClientSettingsModel with _$ClientSettingsModel { class ClientSettingsModel with _$ClientSettingsModel {
const ClientSettingsModel._(); const ClientSettingsModel._();
factory ClientSettingsModel({ factory ClientSettingsModel({

View file

@ -508,83 +508,6 @@ class _$ClientSettingsModelImpl extends _ClientSettingsModel
..add(DiagnosticsProperty('libraryPageSize', libraryPageSize)); ..add(DiagnosticsProperty('libraryPageSize', libraryPageSize));
} }
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$ClientSettingsModelImpl &&
(identical(other.syncPath, syncPath) ||
other.syncPath == syncPath) &&
(identical(other.position, position) ||
other.position == position) &&
(identical(other.size, size) || other.size == size) &&
(identical(other.timeOut, timeOut) || other.timeOut == timeOut) &&
(identical(other.nextUpDateCutoff, nextUpDateCutoff) ||
other.nextUpDateCutoff == nextUpDateCutoff) &&
(identical(other.themeMode, themeMode) ||
other.themeMode == themeMode) &&
(identical(other.themeColor, themeColor) ||
other.themeColor == themeColor) &&
(identical(other.amoledBlack, amoledBlack) ||
other.amoledBlack == amoledBlack) &&
(identical(other.blurPlaceHolders, blurPlaceHolders) ||
other.blurPlaceHolders == blurPlaceHolders) &&
(identical(other.blurUpcomingEpisodes, blurUpcomingEpisodes) ||
other.blurUpcomingEpisodes == blurUpcomingEpisodes) &&
(identical(other.selectedLocale, selectedLocale) ||
other.selectedLocale == selectedLocale) &&
(identical(other.enableMediaKeys, enableMediaKeys) ||
other.enableMediaKeys == enableMediaKeys) &&
(identical(other.posterSize, posterSize) ||
other.posterSize == posterSize) &&
(identical(other.pinchPosterZoom, pinchPosterZoom) ||
other.pinchPosterZoom == pinchPosterZoom) &&
(identical(other.mouseDragSupport, mouseDragSupport) ||
other.mouseDragSupport == mouseDragSupport) &&
(identical(other.requireWifi, requireWifi) ||
other.requireWifi == requireWifi) &&
(identical(other.showAllCollectionTypes, showAllCollectionTypes) ||
other.showAllCollectionTypes == showAllCollectionTypes) &&
(identical(other.maxConcurrentDownloads, maxConcurrentDownloads) ||
other.maxConcurrentDownloads == maxConcurrentDownloads) &&
(identical(other.schemeVariant, schemeVariant) ||
other.schemeVariant == schemeVariant) &&
(identical(other.checkForUpdates, checkForUpdates) ||
other.checkForUpdates == checkForUpdates) &&
(identical(other.lastViewedUpdate, lastViewedUpdate) ||
other.lastViewedUpdate == lastViewedUpdate) &&
(identical(other.libraryPageSize, libraryPageSize) ||
other.libraryPageSize == libraryPageSize));
}
@JsonKey(includeFromJson: false, includeToJson: false)
@override
int get hashCode => Object.hashAll([
runtimeType,
syncPath,
position,
size,
timeOut,
nextUpDateCutoff,
themeMode,
themeColor,
amoledBlack,
blurPlaceHolders,
blurUpcomingEpisodes,
selectedLocale,
enableMediaKeys,
posterSize,
pinchPosterZoom,
mouseDragSupport,
requireWifi,
showAllCollectionTypes,
maxConcurrentDownloads,
schemeVariant,
checkForUpdates,
lastViewedUpdate,
libraryPageSize
]);
/// Create a copy of ClientSettingsModel /// Create a copy of ClientSettingsModel
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)

View file

@ -8,7 +8,7 @@ import 'package:fladder/util/localization_helper.dart';
part 'home_settings_model.freezed.dart'; part 'home_settings_model.freezed.dart';
part 'home_settings_model.g.dart'; part 'home_settings_model.g.dart';
@freezed @Freezed(copyWith: true)
class HomeSettingsModel with _$HomeSettingsModel { class HomeSettingsModel with _$HomeSettingsModel {
factory HomeSettingsModel({ factory HomeSettingsModel({
@Default({...LayoutMode.values}) Set<LayoutMode> screenLayouts, @Default({...LayoutMode.values}) Set<LayoutMode> screenLayouts,

View file

@ -205,32 +205,6 @@ class _$HomeSettingsModelImpl implements _HomeSettingsModel {
return 'HomeSettingsModel(screenLayouts: $screenLayouts, layoutStates: $layoutStates, homeBanner: $homeBanner, carouselSettings: $carouselSettings, nextUp: $nextUp)'; return 'HomeSettingsModel(screenLayouts: $screenLayouts, layoutStates: $layoutStates, homeBanner: $homeBanner, carouselSettings: $carouselSettings, nextUp: $nextUp)';
} }
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$HomeSettingsModelImpl &&
const DeepCollectionEquality()
.equals(other._screenLayouts, _screenLayouts) &&
const DeepCollectionEquality()
.equals(other._layoutStates, _layoutStates) &&
(identical(other.homeBanner, homeBanner) ||
other.homeBanner == homeBanner) &&
(identical(other.carouselSettings, carouselSettings) ||
other.carouselSettings == carouselSettings) &&
(identical(other.nextUp, nextUp) || other.nextUp == nextUp));
}
@JsonKey(includeFromJson: false, includeToJson: false)
@override
int get hashCode => Object.hash(
runtimeType,
const DeepCollectionEquality().hash(_screenLayouts),
const DeepCollectionEquality().hash(_layoutStates),
homeBanner,
carouselSettings,
nextUp);
/// Create a copy of HomeSettingsModel /// Create a copy of HomeSettingsModel
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)

View file

@ -12,7 +12,7 @@ import 'package:fladder/util/localization_helper.dart';
part 'video_player_settings.freezed.dart'; part 'video_player_settings.freezed.dart';
part 'video_player_settings.g.dart'; part 'video_player_settings.g.dart';
@freezed @Freezed(copyWith: true)
class VideoPlayerSettingsModel with _$VideoPlayerSettingsModel { class VideoPlayerSettingsModel with _$VideoPlayerSettingsModel {
const VideoPlayerSettingsModel._(); const VideoPlayerSettingsModel._();
@ -43,7 +43,10 @@ class VideoPlayerSettingsModel with _$VideoPlayerSettingsModel {
PlayerOptions get wantedPlayer => playerOptions ?? PlayerOptions.platformDefaults; PlayerOptions get wantedPlayer => playerOptions ?? PlayerOptions.platformDefaults;
bool playerSame(VideoPlayerSettingsModel other) { bool playerSame(VideoPlayerSettingsModel other) {
return other.hardwareAccel == hardwareAccel && other.useLibass == useLibass && other.bufferSize == bufferSize && other.wantedPlayer == wantedPlayer; return other.hardwareAccel == hardwareAccel &&
other.useLibass == useLibass &&
other.bufferSize == bufferSize &&
other.wantedPlayer == wantedPlayer;
} }
@override @override

View file

@ -4,17 +4,17 @@ import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:background_downloader/background_downloader.dart'; import 'package:background_downloader/background_downloader.dart';
import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:path/path.dart'; import 'package:path/path.dart';
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart'; import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
import 'package:fladder/models/items/chapters_model.dart'; import 'package:fladder/models/items/chapters_model.dart';
import 'package:fladder/models/items/images_models.dart'; import 'package:fladder/models/items/images_models.dart';
import 'package:fladder/models/items/media_segments_model.dart';
import 'package:fladder/models/items/item_shared_models.dart'; import 'package:fladder/models/items/item_shared_models.dart';
import 'package:fladder/models/items/media_segments_model.dart';
import 'package:fladder/models/items/media_streams_model.dart'; import 'package:fladder/models/items/media_streams_model.dart';
import 'package:fladder/models/items/trick_play_model.dart'; import 'package:fladder/models/items/trick_play_model.dart';
import 'package:fladder/models/syncing/i_synced_item.dart'; import 'package:fladder/models/syncing/i_synced_item.dart';
@ -24,7 +24,7 @@ import 'package:fladder/util/localization_helper.dart';
part 'sync_item.freezed.dart'; part 'sync_item.freezed.dart';
@freezed @Freezed(copyWith: true)
class SyncedItem with _$SyncedItem { class SyncedItem with _$SyncedItem {
const SyncedItem._(); const SyncedItem._();

View file

@ -63,7 +63,6 @@ abstract class $SyncedItemCopyWith<$Res> {
List<SubStreamModel> subtitles, List<SubStreamModel> subtitles,
@UserDataJsonSerializer() UserData? userData}); @UserDataJsonSerializer() UserData? userData});
$MediaSegmentsModelCopyWith<$Res>? get mediaSegments;
$TrickPlayModelCopyWith<$Res>? get fTrickPlayModel; $TrickPlayModelCopyWith<$Res>? get fTrickPlayModel;
} }
@ -162,20 +161,6 @@ class _$SyncedItemCopyWithImpl<$Res, $Val extends SyncedItem>
) as $Val); ) as $Val);
} }
/// Create a copy of SyncedItem
/// with the given fields replaced by the non-null parameter values.
@override
@pragma('vm:prefer-inline')
$MediaSegmentsModelCopyWith<$Res>? get mediaSegments {
if (_value.mediaSegments == null) {
return null;
}
return $MediaSegmentsModelCopyWith<$Res>(_value.mediaSegments!, (value) {
return _then(_value.copyWith(mediaSegments: value) as $Val);
});
}
/// Create a copy of SyncedItem /// Create a copy of SyncedItem
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @override
@ -216,8 +201,6 @@ abstract class _$$SyncItemImplCopyWith<$Res>
List<SubStreamModel> subtitles, List<SubStreamModel> subtitles,
@UserDataJsonSerializer() UserData? userData}); @UserDataJsonSerializer() UserData? userData});
@override
$MediaSegmentsModelCopyWith<$Res>? get mediaSegments;
@override @override
$TrickPlayModelCopyWith<$Res>? get fTrickPlayModel; $TrickPlayModelCopyWith<$Res>? get fTrickPlayModel;
} }
@ -392,57 +375,6 @@ class _$SyncItemImpl extends _SyncItem {
return 'SyncedItem(id: $id, syncing: $syncing, parentId: $parentId, userId: $userId, path: $path, markedForDelete: $markedForDelete, sortName: $sortName, fileSize: $fileSize, videoFileName: $videoFileName, mediaSegments: $mediaSegments, fTrickPlayModel: $fTrickPlayModel, fImages: $fImages, fChapters: $fChapters, subtitles: $subtitles, userData: $userData)'; return 'SyncedItem(id: $id, syncing: $syncing, parentId: $parentId, userId: $userId, path: $path, markedForDelete: $markedForDelete, sortName: $sortName, fileSize: $fileSize, videoFileName: $videoFileName, mediaSegments: $mediaSegments, fTrickPlayModel: $fTrickPlayModel, fImages: $fImages, fChapters: $fChapters, subtitles: $subtitles, userData: $userData)';
} }
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$SyncItemImpl &&
(identical(other.id, id) || other.id == id) &&
(identical(other.syncing, syncing) || other.syncing == syncing) &&
(identical(other.parentId, parentId) ||
other.parentId == parentId) &&
(identical(other.userId, userId) || other.userId == userId) &&
(identical(other.path, path) || other.path == path) &&
(identical(other.markedForDelete, markedForDelete) ||
other.markedForDelete == markedForDelete) &&
(identical(other.sortName, sortName) ||
other.sortName == sortName) &&
(identical(other.fileSize, fileSize) ||
other.fileSize == fileSize) &&
(identical(other.videoFileName, videoFileName) ||
other.videoFileName == videoFileName) &&
(identical(other.mediaSegments, mediaSegments) ||
other.mediaSegments == mediaSegments) &&
(identical(other.fTrickPlayModel, fTrickPlayModel) ||
other.fTrickPlayModel == fTrickPlayModel) &&
(identical(other.fImages, fImages) || other.fImages == fImages) &&
const DeepCollectionEquality()
.equals(other._fChapters, _fChapters) &&
const DeepCollectionEquality()
.equals(other._subtitles, _subtitles) &&
(identical(other.userData, userData) ||
other.userData == userData));
}
@override
int get hashCode => Object.hash(
runtimeType,
id,
syncing,
parentId,
userId,
path,
markedForDelete,
sortName,
fileSize,
videoFileName,
mediaSegments,
fTrickPlayModel,
fImages,
const DeepCollectionEquality().hash(_fChapters),
const DeepCollectionEquality().hash(_subtitles),
userData);
/// Create a copy of SyncedItem /// Create a copy of SyncedItem
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)

View file

@ -6,7 +6,7 @@ import 'package:fladder/models/syncing/sync_item.dart';
part 'sync_settings_model.freezed.dart'; part 'sync_settings_model.freezed.dart';
@Freezed(toJson: false, fromJson: false) @Freezed(toJson: false, fromJson: false, copyWith: true)
class SyncSettingsModel with _$SyncSettingsModel { class SyncSettingsModel with _$SyncSettingsModel {
const SyncSettingsModel._(); const SyncSettingsModel._();

View file

@ -116,18 +116,6 @@ class _$SyncSettignsModelImpl extends _SyncSettignsModel {
return 'SyncSettingsModel(items: $items)'; return 'SyncSettingsModel(items: $items)';
} }
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$SyncSettignsModelImpl &&
const DeepCollectionEquality().equals(other._items, _items));
}
@override
int get hashCode =>
Object.hash(runtimeType, const DeepCollectionEquality().hash(_items));
/// Create a copy of SyncSettingsModel /// Create a copy of SyncSettingsModel
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)

View file

@ -4,9 +4,10 @@ import 'dart:developer';
import 'dart:io'; import 'dart:io';
import 'package:dart_mappable/dart_mappable.dart'; import 'package:dart_mappable/dart_mappable.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/service_provider.dart'; import 'package:fladder/providers/service_provider.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'discovery_provider.g.dart'; part 'discovery_provider.g.dart';
part 'discovery_provider.mapper.dart'; part 'discovery_provider.mapper.dart';
@ -81,7 +82,7 @@ class ServerDiscovery extends _$ServerDiscovery {
} }
} }
@MappableClass() @MappableClass(generateMethods: GenerateMethods.encode | GenerateMethods.decode)
class DiscoveryInfo with DiscoveryInfoMappable { class DiscoveryInfo with DiscoveryInfoMappable {
@MappableField(key: 'Id') @MappableField(key: 'Id')
final String id; final String id;

View file

@ -73,58 +73,4 @@ mixin DiscoveryInfoMappable {
return DiscoveryInfoMapper.ensureInitialized() return DiscoveryInfoMapper.ensureInitialized()
.encodeMap<DiscoveryInfo>(this as DiscoveryInfo); .encodeMap<DiscoveryInfo>(this as DiscoveryInfo);
} }
DiscoveryInfoCopyWith<DiscoveryInfo, DiscoveryInfo, DiscoveryInfo>
get copyWith => _DiscoveryInfoCopyWithImpl(
this as DiscoveryInfo, $identity, $identity);
@override
String toString() {
return DiscoveryInfoMapper.ensureInitialized()
.stringifyValue(this as DiscoveryInfo);
}
}
extension DiscoveryInfoValueCopy<$R, $Out>
on ObjectCopyWith<$R, DiscoveryInfo, $Out> {
DiscoveryInfoCopyWith<$R, DiscoveryInfo, $Out> get $asDiscoveryInfo =>
$base.as((v, t, t2) => _DiscoveryInfoCopyWithImpl(v, t, t2));
}
abstract class DiscoveryInfoCopyWith<$R, $In extends DiscoveryInfo, $Out>
implements ClassCopyWith<$R, $In, $Out> {
$R call({String? id, String? name, String? address, String? endPointAddress});
DiscoveryInfoCopyWith<$R2, $In, $Out2> $chain<$R2, $Out2>(Then<$Out2, $R2> t);
}
class _DiscoveryInfoCopyWithImpl<$R, $Out>
extends ClassCopyWithBase<$R, DiscoveryInfo, $Out>
implements DiscoveryInfoCopyWith<$R, DiscoveryInfo, $Out> {
_DiscoveryInfoCopyWithImpl(super.value, super.then, super.then2);
@override
late final ClassMapperBase<DiscoveryInfo> $mapper =
DiscoveryInfoMapper.ensureInitialized();
@override
$R call(
{String? id,
String? name,
String? address,
Object? endPointAddress = $none}) =>
$apply(FieldCopyWithData({
if (id != null) #id: id,
if (name != null) #name: name,
if (address != null) #address: address,
if (endPointAddress != $none) #endPointAddress: endPointAddress
}));
@override
DiscoveryInfo $make(CopyWithData data) => DiscoveryInfo(
id: data.get(#id, or: $value.id),
name: data.get(#name, or: $value.name),
address: data.get(#address, or: $value.address),
endPointAddress: data.get(#endPointAddress, or: $value.endPointAddress));
@override
DiscoveryInfoCopyWith<$R2, DiscoveryInfo, $Out2> $chain<$R2, $Out2>(
Then<$Out2, $R2> t) =>
_DiscoveryInfoCopyWithImpl($value, $cast, t);
} }

View file

@ -45,7 +45,7 @@ enum LibraryViewType {
}; };
} }
@Freezed(fromJson: false, toJson: false) @Freezed(fromJson: false, toJson: false, copyWith: true)
class LibraryScreenModel with _$LibraryScreenModel { class LibraryScreenModel with _$LibraryScreenModel {
factory LibraryScreenModel({ factory LibraryScreenModel({
@Default([]) List<ViewModel> views, @Default([]) List<ViewModel> views,

View file

@ -234,32 +234,6 @@ class _$LibraryScreenModelImpl implements _LibraryScreenModel {
return 'LibraryScreenModel(views: $views, selectedViewModel: $selectedViewModel, viewType: $viewType, recommendations: $recommendations, genres: $genres, favourites: $favourites)'; return 'LibraryScreenModel(views: $views, selectedViewModel: $selectedViewModel, viewType: $viewType, recommendations: $recommendations, genres: $genres, favourites: $favourites)';
} }
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$LibraryScreenModelImpl &&
const DeepCollectionEquality().equals(other._views, _views) &&
(identical(other.selectedViewModel, selectedViewModel) ||
other.selectedViewModel == selectedViewModel) &&
const DeepCollectionEquality().equals(other._viewType, _viewType) &&
const DeepCollectionEquality()
.equals(other._recommendations, _recommendations) &&
const DeepCollectionEquality().equals(other._genres, _genres) &&
const DeepCollectionEquality()
.equals(other._favourites, _favourites));
}
@override
int get hashCode => Object.hash(
runtimeType,
const DeepCollectionEquality().hash(_views),
selectedViewModel,
const DeepCollectionEquality().hash(_viewType),
const DeepCollectionEquality().hash(_recommendations),
const DeepCollectionEquality().hash(_genres),
const DeepCollectionEquality().hash(_favourites));
/// Create a copy of LibraryScreenModel /// Create a copy of LibraryScreenModel
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)

View file

@ -709,10 +709,14 @@ class LibrarySearchNotifier extends StateNotifier<LibrarySearchModel> {
ref.read(filterProvider.notifier).saveFilter(LibraryFiltersModel.fromLibrarySearch(newName, state)); ref.read(filterProvider.notifier).saveFilter(LibraryFiltersModel.fromLibrarySearch(newName, state));
void updateFilter(LibraryFiltersModel model) { void updateFilter(LibraryFiltersModel model) {
ref.read(filterProvider.notifier).saveFilter(LibraryFiltersModel.fromLibrarySearch(model.name, state).copyWith( ref.read(filterProvider.notifier).saveFilter(
isFavourite: model.isFavourite, LibraryFiltersModel.fromLibrarySearch(
id: model.id, model.name,
)); state,
isFavourite: model.isFavourite,
id: model.id,
),
);
} }
} }

View file

@ -25,92 +25,6 @@ mixin _$SessionInfoModel {
/// Serializes this SessionInfoModel to a JSON map. /// Serializes this SessionInfoModel to a JSON map.
Map<String, dynamic> toJson() => throw _privateConstructorUsedError; Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
/// Create a copy of SessionInfoModel
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$SessionInfoModelCopyWith<SessionInfoModel> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $SessionInfoModelCopyWith<$Res> {
factory $SessionInfoModelCopyWith(
SessionInfoModel value, $Res Function(SessionInfoModel) then) =
_$SessionInfoModelCopyWithImpl<$Res, SessionInfoModel>;
@useResult
$Res call({String? playbackModel, TranscodingInfo? transCodeInfo});
}
/// @nodoc
class _$SessionInfoModelCopyWithImpl<$Res, $Val extends SessionInfoModel>
implements $SessionInfoModelCopyWith<$Res> {
_$SessionInfoModelCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of SessionInfoModel
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? playbackModel = freezed,
Object? transCodeInfo = freezed,
}) {
return _then(_value.copyWith(
playbackModel: freezed == playbackModel
? _value.playbackModel
: playbackModel // ignore: cast_nullable_to_non_nullable
as String?,
transCodeInfo: freezed == transCodeInfo
? _value.transCodeInfo
: transCodeInfo // ignore: cast_nullable_to_non_nullable
as TranscodingInfo?,
) as $Val);
}
}
/// @nodoc
abstract class _$$SessionInfoModelImplCopyWith<$Res>
implements $SessionInfoModelCopyWith<$Res> {
factory _$$SessionInfoModelImplCopyWith(_$SessionInfoModelImpl value,
$Res Function(_$SessionInfoModelImpl) then) =
__$$SessionInfoModelImplCopyWithImpl<$Res>;
@override
@useResult
$Res call({String? playbackModel, TranscodingInfo? transCodeInfo});
}
/// @nodoc
class __$$SessionInfoModelImplCopyWithImpl<$Res>
extends _$SessionInfoModelCopyWithImpl<$Res, _$SessionInfoModelImpl>
implements _$$SessionInfoModelImplCopyWith<$Res> {
__$$SessionInfoModelImplCopyWithImpl(_$SessionInfoModelImpl _value,
$Res Function(_$SessionInfoModelImpl) _then)
: super(_value, _then);
/// Create a copy of SessionInfoModel
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? playbackModel = freezed,
Object? transCodeInfo = freezed,
}) {
return _then(_$SessionInfoModelImpl(
playbackModel: freezed == playbackModel
? _value.playbackModel
: playbackModel // ignore: cast_nullable_to_non_nullable
as String?,
transCodeInfo: freezed == transCodeInfo
? _value.transCodeInfo
: transCodeInfo // ignore: cast_nullable_to_non_nullable
as TranscodingInfo?,
));
}
} }
/// @nodoc /// @nodoc
@ -131,30 +45,6 @@ class _$SessionInfoModelImpl extends _SessionInfoModel {
return 'SessionInfoModel(playbackModel: $playbackModel, transCodeInfo: $transCodeInfo)'; return 'SessionInfoModel(playbackModel: $playbackModel, transCodeInfo: $transCodeInfo)';
} }
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$SessionInfoModelImpl &&
(identical(other.playbackModel, playbackModel) ||
other.playbackModel == playbackModel) &&
(identical(other.transCodeInfo, transCodeInfo) ||
other.transCodeInfo == transCodeInfo));
}
@JsonKey(includeFromJson: false, includeToJson: false)
@override
int get hashCode => Object.hash(runtimeType, playbackModel, transCodeInfo);
/// Create a copy of SessionInfoModel
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$SessionInfoModelImplCopyWith<_$SessionInfoModelImpl> get copyWith =>
__$$SessionInfoModelImplCopyWithImpl<_$SessionInfoModelImpl>(
this, _$identity);
@override @override
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
return _$$SessionInfoModelImplToJson( return _$$SessionInfoModelImplToJson(
@ -176,11 +66,4 @@ abstract class _SessionInfoModel extends SessionInfoModel {
String? get playbackModel; String? get playbackModel;
@override @override
TranscodingInfo? get transCodeInfo; TranscodingInfo? get transCodeInfo;
/// Create a copy of SessionInfoModel
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(includeFromJson: false, includeToJson: false)
_$$SessionInfoModelImplCopyWith<_$SessionInfoModelImpl> get copyWith =>
throw _privateConstructorUsedError;
} }

View file

@ -12,9 +12,18 @@ import 'package:fladder/util/update_checker.dart';
part 'update_provider.freezed.dart'; part 'update_provider.freezed.dart';
part 'update_provider.g.dart'; part 'update_provider.g.dart';
final hasNewUpdateProvider = Provider<bool>((ref) => final hasNewUpdateProvider = Provider<bool>((ref) {
ref.watch(clientSettingsProvider.select((value) => value.lastViewedUpdate)) != final latestRelease = ref.watch(updateProvider).latestRelease;
ref.watch(updateProvider.select((value) => value.latestRelease?.version))); final lastViewedVersion = ref.watch(clientSettingsProvider.select((value) => value.lastViewedUpdate));
final latestVersion = latestRelease?.version;
if (latestVersion == null || lastViewedVersion == null) {
return false;
}
return latestVersion != lastViewedVersion;
});
@Riverpod(keepAlive: true) @Riverpod(keepAlive: true)
class Update extends _$Update { class Update extends _$Update {
@ -60,7 +69,7 @@ class Update extends _$Update {
Future<List<ReleaseInfo>> _fetchLatest() async { Future<List<ReleaseInfo>> _fetchLatest() async {
final latest = await updateChecker.fetchRecentReleases(); final latest = await updateChecker.fetchRecentReleases();
state = state.copyWith( state = UpdatesModel(
lastRelease: latest, lastRelease: latest,
); );
return latest; return latest;

View file

@ -17,82 +17,6 @@ final _privateConstructorUsedError = UnsupportedError(
/// @nodoc /// @nodoc
mixin _$UpdatesModel { mixin _$UpdatesModel {
List<ReleaseInfo> get lastRelease => throw _privateConstructorUsedError; List<ReleaseInfo> get lastRelease => throw _privateConstructorUsedError;
/// Create a copy of UpdatesModel
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$UpdatesModelCopyWith<UpdatesModel> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $UpdatesModelCopyWith<$Res> {
factory $UpdatesModelCopyWith(
UpdatesModel value, $Res Function(UpdatesModel) then) =
_$UpdatesModelCopyWithImpl<$Res, UpdatesModel>;
@useResult
$Res call({List<ReleaseInfo> lastRelease});
}
/// @nodoc
class _$UpdatesModelCopyWithImpl<$Res, $Val extends UpdatesModel>
implements $UpdatesModelCopyWith<$Res> {
_$UpdatesModelCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of UpdatesModel
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? lastRelease = null,
}) {
return _then(_value.copyWith(
lastRelease: null == lastRelease
? _value.lastRelease
: lastRelease // ignore: cast_nullable_to_non_nullable
as List<ReleaseInfo>,
) as $Val);
}
}
/// @nodoc
abstract class _$$UpdatesModelImplCopyWith<$Res>
implements $UpdatesModelCopyWith<$Res> {
factory _$$UpdatesModelImplCopyWith(
_$UpdatesModelImpl value, $Res Function(_$UpdatesModelImpl) then) =
__$$UpdatesModelImplCopyWithImpl<$Res>;
@override
@useResult
$Res call({List<ReleaseInfo> lastRelease});
}
/// @nodoc
class __$$UpdatesModelImplCopyWithImpl<$Res>
extends _$UpdatesModelCopyWithImpl<$Res, _$UpdatesModelImpl>
implements _$$UpdatesModelImplCopyWith<$Res> {
__$$UpdatesModelImplCopyWithImpl(
_$UpdatesModelImpl _value, $Res Function(_$UpdatesModelImpl) _then)
: super(_value, _then);
/// Create a copy of UpdatesModel
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? lastRelease = null,
}) {
return _then(_$UpdatesModelImpl(
lastRelease: null == lastRelease
? _value._lastRelease
: lastRelease // ignore: cast_nullable_to_non_nullable
as List<ReleaseInfo>,
));
}
} }
/// @nodoc /// @nodoc
@ -123,27 +47,6 @@ class _$UpdatesModelImpl extends _UpdatesModel with DiagnosticableTreeMixin {
..add(DiagnosticsProperty('type', 'UpdatesModel')) ..add(DiagnosticsProperty('type', 'UpdatesModel'))
..add(DiagnosticsProperty('lastRelease', lastRelease)); ..add(DiagnosticsProperty('lastRelease', lastRelease));
} }
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$UpdatesModelImpl &&
const DeepCollectionEquality()
.equals(other._lastRelease, _lastRelease));
}
@override
int get hashCode => Object.hash(
runtimeType, const DeepCollectionEquality().hash(_lastRelease));
/// Create a copy of UpdatesModel
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$UpdatesModelImplCopyWith<_$UpdatesModelImpl> get copyWith =>
__$$UpdatesModelImplCopyWithImpl<_$UpdatesModelImpl>(this, _$identity);
} }
abstract class _UpdatesModel extends UpdatesModel { abstract class _UpdatesModel extends UpdatesModel {
@ -153,11 +56,4 @@ abstract class _UpdatesModel extends UpdatesModel {
@override @override
List<ReleaseInfo> get lastRelease; List<ReleaseInfo> get lastRelease;
/// Create a copy of UpdatesModel
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(includeFromJson: false, includeToJson: false)
_$$UpdatesModelImplCopyWith<_$UpdatesModelImpl> get copyWith =>
throw _privateConstructorUsedError;
} }

View file

@ -6,7 +6,7 @@ part of 'update_provider.dart';
// RiverpodGenerator // RiverpodGenerator
// ************************************************************************** // **************************************************************************
String _$updateHash() => r'97f7aca4e255d654a9295e1e9e019536faf6455e'; String _$updateHash() => r'e22205cb13e6b43df1296de90e39059f09bb80a8';
/// See also [Update]. /// See also [Update].
@ProviderFor(Update) @ProviderFor(Update)

View file

@ -178,7 +178,9 @@ class User extends _$User {
if (e.id == model.id) { if (e.id == model.id) {
return model; return model;
} else { } else {
return e.copyWith(isFavourite: model.isFavourite && model.containsSameIds(e.ids) ? false : e.isFavourite); return e.copyWith(
isFavourite: model.isFavourite && model.containsSameIds(e.ids) ? false : e.isFavourite,
);
} }
}, },
).toList()); ).toList());

View file

@ -71,26 +71,22 @@ final AutoRoute _dashboardRoute = CustomRoute(
page: DashboardRoute.page, page: DashboardRoute.page,
transitionsBuilder: TransitionsBuilders.fadeIn, transitionsBuilder: TransitionsBuilders.fadeIn,
initial: true, initial: true,
maintainState: false,
path: 'dashboard', path: 'dashboard',
); );
final AutoRoute _favouritesRoute = CustomRoute( final AutoRoute _favouritesRoute = CustomRoute(
page: FavouritesRoute.page, page: FavouritesRoute.page,
transitionsBuilder: TransitionsBuilders.fadeIn, transitionsBuilder: TransitionsBuilders.fadeIn,
maintainState: false,
path: 'favourites', path: 'favourites',
); );
final AutoRoute _syncedRoute = CustomRoute( final AutoRoute _syncedRoute = CustomRoute(
page: SyncedRoute.page, page: SyncedRoute.page,
transitionsBuilder: TransitionsBuilders.fadeIn, transitionsBuilder: TransitionsBuilders.fadeIn,
maintainState: false,
path: 'synced', path: 'synced',
); );
final AutoRoute _librariesRoute = CustomRoute( final AutoRoute _librariesRoute = CustomRoute(
page: LibraryRoute.page, page: LibraryRoute.page,
transitionsBuilder: TransitionsBuilders.fadeIn, transitionsBuilder: TransitionsBuilders.fadeIn,
maintainState: false,
path: 'libraries', path: 'libraries',
); );

View file

@ -240,8 +240,8 @@ class _LibrarySearchScreenState extends ConsumerState<LibrarySearchScreen> {
}, },
refreshOnStart: false, refreshOnStart: false,
child: CustomScrollView( child: CustomScrollView(
physics: const AlwaysScrollableNoImplicitScrollPhysics(),
controller: scrollController, controller: scrollController,
physics: const AlwaysScrollableScrollPhysics(),
slivers: [ slivers: [
SliverAppBar( SliverAppBar(
floating: !AdaptiveLayout.of(context).isDesktop, floating: !AdaptiveLayout.of(context).isDesktop,
@ -530,25 +530,6 @@ class _LibrarySearchScreenState extends ConsumerState<LibrarySearchScreen> {
} }
} }
class AlwaysScrollableNoImplicitScrollPhysics extends ScrollPhysics {
/// Creates scroll physics that always lets the user scroll.
const AlwaysScrollableNoImplicitScrollPhysics({super.parent});
@override
AlwaysScrollableNoImplicitScrollPhysics applyTo(ScrollPhysics? ancestor) {
return AlwaysScrollableNoImplicitScrollPhysics(parent: buildParent(ancestor));
}
@override
bool get allowImplicitScrolling => false;
@override
bool shouldAcceptUserOffset(ScrollMetrics position) => true;
@override
bool recommendDeferredLoading(double velocity, ScrollMetrics metrics, BuildContext context) => false;
}
class _LibrarySearchBottomBar extends ConsumerWidget { class _LibrarySearchBottomBar extends ConsumerWidget {
final Key uniqueKey; final Key uniqueKey;
final ScrollController scrollController; final ScrollController scrollController;

View file

@ -348,11 +348,11 @@ class _PhotoViewerControllsState extends ConsumerState<PhotoViewerControls> with
Future<void> sharePhoto() async { Future<void> sharePhoto() async {
final file = await DefaultCacheManager().getSingleFile(widget.photo.downloadPath(ref)); final file = await DefaultCacheManager().getSingleFile(widget.photo.downloadPath(ref));
await Share.shareXFiles([ await SharePlus.instance.share(ShareParams(files: [
XFile( XFile(
file.path, file.path,
), ),
]); ]));
await file.delete(); await file.delete();
} }
} }

View file

@ -1,6 +1,6 @@
import 'package:fladder/l10n/generated/app_localizations.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/providers/settings/client_settings_provider.dart'; import 'package:fladder/providers/settings/client_settings_provider.dart';

View file

@ -46,6 +46,7 @@ class _SettingsUpdateInformationState extends ConsumerState<SettingsUpdateInform
padding: const EdgeInsets.symmetric(horizontal: 12), padding: const EdgeInsets.symmetric(horizontal: 12),
child: ListView( child: ListView(
shrinkWrap: true, shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
children: [ children: [
const Divider(), const Divider(),
SettingsListTile( SettingsListTile(
@ -116,6 +117,7 @@ class UpdateInformation extends StatelessWidget {
); );
}, },
), ),
const Divider(),
...releaseInfo.otherDownloads.entries.map( ...releaseInfo.otherDownloads.entries.map(
(entry) { (entry) {
return ElevatedButton( return ElevatedButton(

View file

@ -50,7 +50,7 @@ class FladderTheme {
trackHeight: 8, trackHeight: 8,
thumbColor: colorScheme?.onSurface, thumbColor: colorScheme?.onSurface,
), ),
cardTheme: CardTheme( cardTheme: CardThemeData(
elevation: 3, elevation: 3,
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
margin: EdgeInsets.zero, margin: EdgeInsets.zero,
@ -95,7 +95,7 @@ class FladderTheme {
), ),
), ),
navigationBarTheme: const NavigationBarThemeData(), navigationBarTheme: const NavigationBarThemeData(),
dialogTheme: DialogTheme(shape: defaultShape), dialogTheme: DialogThemeData(shape: defaultShape),
scrollbarTheme: ScrollbarThemeData( scrollbarTheme: ScrollbarThemeData(
radius: const Radius.circular(16), radius: const Radius.circular(16),
thumbColor: WidgetStateProperty.resolveWith((states) { thumbColor: WidgetStateProperty.resolveWith((states) {

View file

@ -20,112 +20,6 @@ mixin _$ApplicationInfo {
String get version => throw _privateConstructorUsedError; String get version => throw _privateConstructorUsedError;
String get buildNumber => throw _privateConstructorUsedError; String get buildNumber => throw _privateConstructorUsedError;
String get os => throw _privateConstructorUsedError; String get os => throw _privateConstructorUsedError;
/// Create a copy of ApplicationInfo
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$ApplicationInfoCopyWith<ApplicationInfo> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $ApplicationInfoCopyWith<$Res> {
factory $ApplicationInfoCopyWith(
ApplicationInfo value, $Res Function(ApplicationInfo) then) =
_$ApplicationInfoCopyWithImpl<$Res, ApplicationInfo>;
@useResult
$Res call({String name, String version, String buildNumber, String os});
}
/// @nodoc
class _$ApplicationInfoCopyWithImpl<$Res, $Val extends ApplicationInfo>
implements $ApplicationInfoCopyWith<$Res> {
_$ApplicationInfoCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of ApplicationInfo
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? name = null,
Object? version = null,
Object? buildNumber = null,
Object? os = null,
}) {
return _then(_value.copyWith(
name: null == name
? _value.name
: name // ignore: cast_nullable_to_non_nullable
as String,
version: null == version
? _value.version
: version // ignore: cast_nullable_to_non_nullable
as String,
buildNumber: null == buildNumber
? _value.buildNumber
: buildNumber // ignore: cast_nullable_to_non_nullable
as String,
os: null == os
? _value.os
: os // ignore: cast_nullable_to_non_nullable
as String,
) as $Val);
}
}
/// @nodoc
abstract class _$$ApplicationInfoImplCopyWith<$Res>
implements $ApplicationInfoCopyWith<$Res> {
factory _$$ApplicationInfoImplCopyWith(_$ApplicationInfoImpl value,
$Res Function(_$ApplicationInfoImpl) then) =
__$$ApplicationInfoImplCopyWithImpl<$Res>;
@override
@useResult
$Res call({String name, String version, String buildNumber, String os});
}
/// @nodoc
class __$$ApplicationInfoImplCopyWithImpl<$Res>
extends _$ApplicationInfoCopyWithImpl<$Res, _$ApplicationInfoImpl>
implements _$$ApplicationInfoImplCopyWith<$Res> {
__$$ApplicationInfoImplCopyWithImpl(
_$ApplicationInfoImpl _value, $Res Function(_$ApplicationInfoImpl) _then)
: super(_value, _then);
/// Create a copy of ApplicationInfo
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? name = null,
Object? version = null,
Object? buildNumber = null,
Object? os = null,
}) {
return _then(_$ApplicationInfoImpl(
name: null == name
? _value.name
: name // ignore: cast_nullable_to_non_nullable
as String,
version: null == version
? _value.version
: version // ignore: cast_nullable_to_non_nullable
as String,
buildNumber: null == buildNumber
? _value.buildNumber
: buildNumber // ignore: cast_nullable_to_non_nullable
as String,
os: null == os
? _value.os
: os // ignore: cast_nullable_to_non_nullable
as String,
));
}
} }
/// @nodoc /// @nodoc
@ -146,30 +40,6 @@ class _$ApplicationInfoImpl extends _ApplicationInfo {
final String buildNumber; final String buildNumber;
@override @override
final String os; final String os;
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$ApplicationInfoImpl &&
(identical(other.name, name) || other.name == name) &&
(identical(other.version, version) || other.version == version) &&
(identical(other.buildNumber, buildNumber) ||
other.buildNumber == buildNumber) &&
(identical(other.os, os) || other.os == os));
}
@override
int get hashCode => Object.hash(runtimeType, name, version, buildNumber, os);
/// Create a copy of ApplicationInfo
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$ApplicationInfoImplCopyWith<_$ApplicationInfoImpl> get copyWith =>
__$$ApplicationInfoImplCopyWithImpl<_$ApplicationInfoImpl>(
this, _$identity);
} }
abstract class _ApplicationInfo extends ApplicationInfo { abstract class _ApplicationInfo extends ApplicationInfo {
@ -188,11 +58,4 @@ abstract class _ApplicationInfo extends ApplicationInfo {
String get buildNumber; String get buildNumber;
@override @override
String get os; String get os;
/// Create a copy of ApplicationInfo
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(includeFromJson: false, includeToJson: false)
_$$ApplicationInfoImplCopyWith<_$ApplicationInfoImpl> get copyWith =>
throw _privateConstructorUsedError;
} }

View file

@ -41,14 +41,12 @@ class FladderImage extends ConsumerWidget {
key: Key(newImage.key), key: Key(newImage.key),
fit: StackFit.expand, fit: StackFit.expand,
children: [ children: [
if (!disableBlur && useBluredPlaceHolder && newImage.hash.isNotEmpty) if (!disableBlur && useBluredPlaceHolder && newImage.hash.isNotEmpty || blurOnly)
Image( BlurHash(
fit: blurFit ?? fit, hash: newImage.hash,
excludeFromSemantics: true, optimizationMode: BlurHashOptimizationMode.approximation,
filterQuality: FilterQuality.low, color: Colors.transparent,
image: BlurHashImage( imageFit: blurFit ?? fit,
newImage.hash,
),
), ),
if (!blurOnly) if (!blurOnly)
FadeInImage( FadeInImage(

View file

@ -1,8 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/l10n/generated/app_localizations.dart';
///Only use for base translations, under normal circumstances ALWAYS use the widgets provided context ///Only use for base translations, under normal circumstances ALWAYS use the widgets provided context
final localizationContextProvider = StateProvider<BuildContext?>((ref) => null); final localizationContextProvider = StateProvider<BuildContext?>((ref) => null);

View file

@ -84,159 +84,155 @@ class _SideNavigationBarState extends ConsumerState<SideNavigationBar> {
), ),
child: (context) => widget.child, child: (context) => widget.child,
), ),
AnimatedFadeSize( Container(
alignment: Alignment.topLeft, color: Theme.of(context).colorScheme.surface.withValues(alpha: shouldExpand ? 0.95 : 0.85),
child: AnimatedContainer( width: shouldExpand ? expandedWidth : collapsedWidth,
duration: const Duration(milliseconds: 250), child: MouseRegion(
color: Theme.of(context).colorScheme.surface.withValues(alpha: shouldExpand ? 0.95 : 0.85), onEnter: (value) => startTimer(),
width: shouldExpand ? expandedWidth : collapsedWidth, onExit: (event) => stopTimer(),
child: MouseRegion( onHover: (value) => startTimer(),
onEnter: (value) => startTimer(), child: Column(
onExit: (event) => stopTimer(), children: [
onHover: (value) => startTimer(), if (isDesktop && AdaptiveLayout.of(context).platform != TargetPlatform.macOS) ...{
child: Column( const SizedBox(height: 4),
children: [ Text(
if (isDesktop && AdaptiveLayout.of(context).platform != TargetPlatform.macOS) ...{ "Fladder",
const SizedBox(height: 4), style: Theme.of(context).textTheme.titleSmall,
Text( ),
"Fladder", },
style: Theme.of(context).textTheme.titleSmall, if (AdaptiveLayout.of(context).platform == TargetPlatform.macOS) SizedBox(height: padding.top),
), Expanded(
}, child: Padding(
if (AdaptiveLayout.of(context).platform == TargetPlatform.macOS) SizedBox(height: padding.top), key: const Key('navigation_rail'),
Expanded( padding: padding.copyWith(right: 0, top: isDesktop ? 8 : null),
child: Padding( child: Column(
key: const Key('navigation_rail'), spacing: 2,
padding: padding.copyWith(right: 0, top: isDesktop ? 8 : null), children: [
child: Column( Align(
spacing: 2, alignment: largeBar && expandedSideBar ? Alignment.centerRight : Alignment.center,
children: [ child: Opacity(
Align( opacity: largeBar && expandedSideBar ? 0.65 : 1.0,
alignment: largeBar && expandedSideBar ? Alignment.centerRight : Alignment.center, child: IconButton(
child: Opacity( onPressed: !largeBar
opacity: largeBar && expandedSideBar ? 0.65 : 1.0, ? () => widget.scaffoldKey.currentState?.openDrawer()
child: IconButton( : () => setState(() {
onPressed: !largeBar expandedSideBar = !expandedSideBar;
? () => widget.scaffoldKey.currentState?.openDrawer() if (!expandedSideBar) {
: () => setState(() { showOnHover = false;
expandedSideBar = !expandedSideBar; }
if (!expandedSideBar) { }),
showOnHover = false; icon: Icon(
} largeBar && expandedSideBar ? IconsaxPlusLinear.sidebar_left : IconsaxPlusLinear.menu,
}),
icon: Icon(
largeBar && expandedSideBar ? IconsaxPlusLinear.sidebar_left : IconsaxPlusLinear.menu,
),
), ),
), ),
), ),
const SizedBox(height: 8), ),
if (largeBar) ...[ const SizedBox(height: 8),
AnimatedFadeSize( if (largeBar) ...[
duration: const Duration(milliseconds: 250), AnimatedFadeSize(
child: shouldExpand ? actionButton(context).extended : actionButton(context).normal, duration: const Duration(milliseconds: 250),
), child: shouldExpand ? actionButton(context).extended : actionButton(context).normal,
],
Expanded(
child: Column(
spacing: 2,
mainAxisAlignment: !largeBar ? MainAxisAlignment.center : MainAxisAlignment.start,
children: [
...widget.destinations.mapIndexed(
(index, destination) =>
destination.toNavigationButton(widget.currentIndex == index, true, shouldExpand),
),
if (views.isNotEmpty && largeBar) ...[
const Divider(
indent: 32,
endIndent: 32,
),
Flexible(
child: OverflowView.flexible(
direction: Axis.vertical,
spacing: 4,
children: views.map(
(view) {
final actions = [
ItemActionButton(
label: Text(context.localized.scanLibrary),
icon: const Icon(IconsaxPlusLinear.refresh),
action: () => showRefreshPopup(context, view.id, view.name),
)
];
return view.toNavigationButton(
context.router.currentUrl.contains(view.id),
true,
shouldExpand,
() => context.pushRoute(LibrarySearchRoute(viewModelId: view.id)),
onLongPress: () => showBottomSheetPill(
context: context,
content: (context, scrollController) => ListView(
shrinkWrap: true,
controller: scrollController,
children: actions.listTileItems(context, useIcons: true),
),
),
trailing: actions,
);
},
).toList(),
builder: (context, remaining) {
return PopupMenuButton(
iconColor: Theme.of(context).colorScheme.onSurface.withValues(alpha: 0.45),
padding: EdgeInsets.zero,
icon: NavigationButton(
label: context.localized.other,
selectedIcon: const Icon(IconsaxPlusLinear.arrow_square_down),
icon: const Icon(IconsaxPlusLinear.arrow_square_down),
expanded: shouldExpand,
horizontal: true,
),
itemBuilder: (context) => views
.sublist(views.length - remaining)
.map(
(e) => PopupMenuItem(
onTap: () => context.pushRoute(LibrarySearchRoute(viewModelId: e.id)),
child: Row(
spacing: 8,
children: [
Icon(e.collectionType.iconOutlined),
Text(e.name),
],
),
),
)
.toList(),
);
},
),
),
],
],
),
),
NavigationButton(
label: context.localized.settings,
selected: widget.currentLocation.contains(const SettingsRoute().routeName),
selectedIcon: const Icon(IconsaxPlusBold.setting_3),
horizontal: true,
expanded: shouldExpand,
icon: const SettingsUserIcon(),
onPressed: () {
if (AdaptiveLayout.layoutModeOf(context) == LayoutMode.single) {
context.router.push(const SettingsRoute());
} else {
context.router.push(const ClientSettingsRoute());
}
},
), ),
], ],
), Expanded(
child: Column(
spacing: 2,
mainAxisAlignment: !largeBar ? MainAxisAlignment.center : MainAxisAlignment.start,
children: [
...widget.destinations.mapIndexed(
(index, destination) =>
destination.toNavigationButton(widget.currentIndex == index, true, shouldExpand),
),
if (views.isNotEmpty && largeBar) ...[
const Divider(
indent: 32,
endIndent: 32,
),
Flexible(
child: OverflowView.flexible(
direction: Axis.vertical,
spacing: 4,
children: views.map(
(view) {
final actions = [
ItemActionButton(
label: Text(context.localized.scanLibrary),
icon: const Icon(IconsaxPlusLinear.refresh),
action: () => showRefreshPopup(context, view.id, view.name),
)
];
return view.toNavigationButton(
context.router.currentUrl.contains(view.id),
true,
shouldExpand,
() => context.pushRoute(LibrarySearchRoute(viewModelId: view.id)),
onLongPress: () => showBottomSheetPill(
context: context,
content: (context, scrollController) => ListView(
shrinkWrap: true,
controller: scrollController,
children: actions.listTileItems(context, useIcons: true),
),
),
trailing: actions,
);
},
).toList(),
builder: (context, remaining) {
return PopupMenuButton(
iconColor: Theme.of(context).colorScheme.onSurface.withValues(alpha: 0.45),
padding: EdgeInsets.zero,
icon: NavigationButton(
label: context.localized.other,
selectedIcon: const Icon(IconsaxPlusLinear.arrow_square_down),
icon: const Icon(IconsaxPlusLinear.arrow_square_down),
expanded: shouldExpand,
horizontal: true,
),
itemBuilder: (context) => views
.sublist(views.length - remaining)
.map(
(e) => PopupMenuItem(
onTap: () => context.pushRoute(LibrarySearchRoute(viewModelId: e.id)),
child: Row(
spacing: 8,
children: [
Icon(e.collectionType.iconOutlined),
Text(e.name),
],
),
),
)
.toList(),
);
},
),
),
],
],
),
),
NavigationButton(
label: context.localized.settings,
selected: widget.currentLocation.contains(const SettingsRoute().routeName),
selectedIcon: const Icon(IconsaxPlusBold.setting_3),
horizontal: true,
expanded: shouldExpand,
icon: const SettingsUserIcon(),
onPressed: () {
if (AdaptiveLayout.layoutModeOf(context) == LayoutMode.single) {
context.router.push(const SettingsRoute());
} else {
context.router.push(const ClientSettingsRoute());
}
},
),
],
), ),
), ),
if (AdaptiveLayout.of(context).inputDevice == InputDevice.pointer) const SizedBox(height: 16), ),
], if (AdaptiveLayout.of(context).inputDevice == InputDevice.pointer) const SizedBox(height: 16),
), ],
), ),
), ),
), ),

View file

@ -14,6 +14,7 @@
#include <media_kit_video/media_kit_video_plugin.h> #include <media_kit_video/media_kit_video_plugin.h>
#include <screen_retriever_linux/screen_retriever_linux_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 <volume_controller/volume_controller_plugin.h>
#include <window_manager/window_manager_plugin.h> #include <window_manager/window_manager_plugin.h>
void fl_register_plugins(FlPluginRegistry* registry) { void fl_register_plugins(FlPluginRegistry* registry) {
@ -41,6 +42,9 @@ void fl_register_plugins(FlPluginRegistry* registry) {
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);
g_autoptr(FlPluginRegistrar) volume_controller_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "VolumeControllerPlugin");
volume_controller_plugin_register_with_registrar(volume_controller_registrar);
g_autoptr(FlPluginRegistrar) window_manager_registrar = g_autoptr(FlPluginRegistrar) window_manager_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "WindowManagerPlugin"); fl_plugin_registry_get_registrar_for_plugin(registry, "WindowManagerPlugin");
window_manager_plugin_register_with_registrar(window_manager_registrar); window_manager_plugin_register_with_registrar(window_manager_registrar);

View file

@ -11,6 +11,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
media_kit_video media_kit_video
screen_retriever_linux screen_retriever_linux
url_launcher_linux url_launcher_linux
volume_controller
window_manager window_manager
) )

View file

@ -50,10 +50,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: archive name: archive
sha256: "7dcbd0f87fe5f61cb28da39a1a8b70dbc106e2fe0516f7836eb7bb2948481a12" sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.5" version: "4.0.7"
args: args:
dependency: transitive dependency: transitive
description: description:
@ -66,18 +66,18 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: async name: async
sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.12.0" version: "2.13.0"
audio_service: audio_service:
dependency: "direct main" dependency: "direct main"
description: description:
name: audio_service name: audio_service
sha256: "887ddf15fce31fd12aa8044c3bffd14c58929fb20e31d96284fe3aaf48315ac6" sha256: cb122c7c2639d2a992421ef96b67948ad88c5221da3365ccef1031393a76e044
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.18.17" version: "0.18.18"
audio_service_platform_interface: audio_service_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -130,10 +130,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: background_downloader name: background_downloader
sha256: c3814aa0466368a4c1c32d24bc73ded752edacf06731ead43857a3ac992ed52d sha256: d3016a9eb584f6cb16384c8b4a008943c39119730d60046044349b5dbbda4ccb
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "8.9.5" version: "9.2.2"
boolean_selector: boolean_selector:
dependency: transitive dependency: transitive
description: description:
@ -210,10 +210,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: built_value name: built_value
sha256: ea90e81dc4a25a043d9bee692d20ed6d1c4a1662a28c03a96417446c093ed6b4 sha256: "082001b5c3dc495d4a42f1d5789990505df20d8547d42507c29050af6933ee27"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "8.9.5" version: "8.10.1"
cached_network_image: cached_network_image:
dependency: "direct main" dependency: "direct main"
description: description:
@ -258,18 +258,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: checked_yaml name: checked_yaml
sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.3" version: "2.0.4"
chewie: chewie:
dependency: transitive dependency: transitive
description: description:
name: chewie name: chewie
sha256: df6711bc3ba165ad19cb496e350250be5673327f79c61c9cc8a15088ed8007ed sha256: "4d9554a8f87cc2dc6575dfd5ad20a4375015a29edd567fd6733febe6365e2566"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.11.1" version: "1.11.3"
chopper: chopper:
dependency: "direct main" dependency: "direct main"
description: description:
@ -330,10 +330,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: connectivity_plus name: connectivity_plus
sha256: "04bf81bb0b77de31557b58d052b24b3eee33f09a6e7a8c68a3e247c7df19ec27" sha256: "051849e2bd7c7b3bc5844ea0d096609ddc3a859890ec3a9ac4a65a2620cc1f99"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.1.3" version: "6.1.4"
connectivity_plus_platform_interface: connectivity_plus_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -442,10 +442,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: desktop_drop name: desktop_drop
sha256: "03abf1c0443afdd1d65cf8fa589a2f01c67a11da56bbb06f6ea1de79d5628e94" sha256: bd21017e0415632c85f6b813c846bc8c9811742507776dcf6abf91a14d946e98
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.5.0" version: "0.6.0"
diffutil_dart: diffutil_dart:
dependency: transitive dependency: transitive
description: description:
@ -474,26 +474,26 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: extended_image name: extended_image
sha256: "85199f9233e03abc2ce2e68cbb2991648666af4a527ae4e6250935be8edfddae" sha256: f6cbb1d798f51262ed1a3d93b4f1f2aa0d76128df39af18ecb77fa740f88b2e0
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "9.1.0" version: "10.0.1"
extended_image_library: extended_image_library:
dependency: transitive dependency: transitive
description: description:
name: extended_image_library name: extended_image_library
sha256: e61dafd94400fff6ef7ed1523d445ff3af137f198f3228e4a3107bc5b4bec5d1 sha256: "1f9a24d3a00c2633891c6a7b5cab2807999eb2d5b597e5133b63f49d113811fe"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.6" version: "5.0.1"
fake_async: fake_async:
dependency: transitive dependency: transitive
description: description:
name: fake_async name: fake_async
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.2" version: "1.3.3"
ffi: ffi:
dependency: transitive dependency: transitive
description: description:
@ -514,10 +514,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: file_picker name: file_picker
sha256: ab13ae8ef5580a411c458d6207b6774a6c237d77ac37011b13994879f68a8810 sha256: "77f8e81d22d2a07d0dee2c62e1dda71dc1da73bf43bb2d45af09727406167964"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "8.3.7" version: "10.1.9"
fixnum: fixnum:
dependency: transitive dependency: transitive
description: description:
@ -543,10 +543,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_blurhash name: flutter_blurhash
sha256: "5e67678e479ac639069d7af1e133f4a4702311491188ff3e0227486430db0c06" sha256: e97b9aff13b9930bbaa74d0d899fec76e3f320aba3190322dcc5d32104e3d25d
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.8.2" version: "0.9.1"
flutter_cache_manager: flutter_cache_manager:
dependency: "direct main" dependency: "direct main"
description: description:
@ -559,42 +559,42 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_custom_tabs name: flutter_custom_tabs
sha256: ec5424e196f145ac32e92ddfaee07b883cd4f16f9972812fa8f67fb318b34a4c sha256: ac3543d7b4e0ac6ecdf3744360039ebb573656c0ce759149d228e1934d4f7535
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.2.1" version: "2.4.0"
flutter_custom_tabs_android: flutter_custom_tabs_android:
dependency: transitive dependency: transitive
description: description:
name: flutter_custom_tabs_android name: flutter_custom_tabs_android
sha256: "09bc6297fca815a721d21fa168335ad9d266ac3df483628e716d788b7caf191e" sha256: "925fc5e7d27372ee523962dcfcd4b77c0443549482c284dd7897b77815547621"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.2.0" version: "2.3.1"
flutter_custom_tabs_ios: flutter_custom_tabs_ios:
dependency: transitive dependency: transitive
description: description:
name: flutter_custom_tabs_ios name: flutter_custom_tabs_ios
sha256: "4c93cba13e51e6edafd6f6984811b31fa774ef0ef58a58b93164f7eff18d5dc3" sha256: c61a58d30b29ccb09ea4da0daa335bbf8714bcf8798d0d9f4f58a0b83c6c421b
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.2.0" version: "2.4.0"
flutter_custom_tabs_platform_interface: flutter_custom_tabs_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: flutter_custom_tabs_platform_interface name: flutter_custom_tabs_platform_interface
sha256: d6056832fceb163cabb751b3dd8a4919c03677cad7e4728de8ebcf84cfa4a074 sha256: "54a6ff5cc7571cb266a47ade9f6f89d1980b9ed2dba18162a6d5300afc408449"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.2.0" version: "2.3.0"
flutter_custom_tabs_web: flutter_custom_tabs_web:
dependency: transitive dependency: transitive
description: description:
name: flutter_custom_tabs_web name: flutter_custom_tabs_web
sha256: f90a09501c8be7db4604da1d504f39b73c7525dc60f2ffce4cdea0f015e42eb0 sha256: "236e035c73b6d3ef0a2f85cd8b6b815954e7559c9f9d50a15ed2e53a297b58b0"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.2.0" version: "2.3.0"
flutter_highlight: flutter_highlight:
dependency: transitive dependency: transitive
description: description:
@ -655,10 +655,10 @@ packages:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: flutter_lints name: flutter_lints
sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.0.0" version: "6.0.0"
flutter_localizations: flutter_localizations:
dependency: "direct main" dependency: "direct main"
description: flutter description: flutter
@ -668,10 +668,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: flutter_plugin_android_lifecycle name: flutter_plugin_android_lifecycle
sha256: "5a1e6fb2c0561958d7e4c33574674bda7b77caaca7a33b758876956f2902eea3" sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.27" version: "2.0.28"
flutter_riverpod: flutter_riverpod:
dependency: "direct main" dependency: "direct main"
description: description:
@ -700,18 +700,18 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_sticky_header name: flutter_sticky_header
sha256: "7f76d24d119424ca0c95c146b8627a457e8de8169b0d584f766c2c545db8f8be" sha256: fb4fda6164ef3e5fc7ab73aba34aad253c17b7c6ecf738fa26f1a905b7d2d1e2
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.0" version: "0.8.0"
flutter_svg: flutter_svg:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_svg name: flutter_svg
sha256: c200fd79c918a40c5cd50ea0877fa13f81bdaf6f0a5d3dbcc2a13e3285d6aa1b sha256: d44bf546b13025ec7353091516f6881f1d4c633993cb109c3916c3a0159dadf1
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.17" version: "2.1.0"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter
@ -734,18 +734,18 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_widget_from_html name: flutter_widget_from_html
sha256: f3967a5b42896662efdd420b5adaf8a7d3692b0f44462a07c80e3b4c173b1a02 sha256: "0dfebf7417df2149de93926520c703db9be0c9017e60dc5cf43cebed37f4d11e"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.15.3" version: "0.16.0"
flutter_widget_from_html_core: flutter_widget_from_html_core:
dependency: transitive dependency: transitive
description: description:
name: flutter_widget_from_html_core name: flutter_widget_from_html_core
sha256: b1048fd119a14762e2361bd057da608148a895477846d6149109b2151d2f7abf sha256: f77ea1aa1ba29a38fcce04483f44f12382f541b9e8c2150df37166c23bbbd30f
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.15.2" version: "0.16.0"
font_awesome_flutter: font_awesome_flutter:
dependency: "direct main" dependency: "direct main"
description: description:
@ -782,50 +782,50 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: fvp name: fvp
sha256: "724802f4c3f4d22cd2913356e91208096ba5aaab1db71c9e12b66bef4cf6f799" sha256: a2b6f305a5e559abc21b1be06ca0ffb5bb6b5b523d6d45eb8e78d53f3b89e9a2
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.31.0" version: "0.32.1"
fwfh_cached_network_image: fwfh_cached_network_image:
dependency: transitive dependency: transitive
description: description:
name: fwfh_cached_network_image name: fwfh_cached_network_image
sha256: "8e44226801bfba27930673953afce8af44da7e92573be93f60385d9865a089dd" sha256: "8f4896109ff3e42424ccacf9058ba3afe5d575b58946c8ac646ac85ae882ce23"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.14.3" version: "0.16.0"
fwfh_chewie: fwfh_chewie:
dependency: transitive dependency: transitive
description: description:
name: fwfh_chewie name: fwfh_chewie
sha256: "37bde9cedfb6dc5546176f7f0c56af1e814966cb33ec58f16c9565ed93ccb704" sha256: "1ce7c56894db19881a997813b933835dec142878431370c0eb40f1f878396a25"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.14.8" version: "0.16.0"
fwfh_just_audio: fwfh_just_audio:
dependency: transitive dependency: transitive
description: description:
name: fwfh_just_audio name: fwfh_just_audio
sha256: "38dc2c55803bd3cef33042c473e0c40b891ad4548078424641a32032f6a1245f" sha256: "17816168de1fd180fd3d1fd4500e23136630a248a6889b553e2d2067e133c1a6"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.15.2" version: "0.16.0"
fwfh_svg: fwfh_svg:
dependency: transitive dependency: transitive
description: description:
name: fwfh_svg name: fwfh_svg
sha256: "550b1014d12b5528d8bdb6e3b44b58721f3fb1f65d7a852d1623a817008bdfc4" sha256: "82f3eb378186fe39b3e2e01ed48a1830d34b0b9a237d951077e74ff0d99e2ac3"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.8.3" version: "0.16.0"
fwfh_url_launcher: fwfh_url_launcher:
dependency: transitive dependency: transitive
description: description:
name: fwfh_url_launcher name: fwfh_url_launcher
sha256: b9f5d55a5ae2c2c07243ba33f7ba49ac9544bdb2f4c16d8139df9ccbebe3449c sha256: "5cf1b1baa16740abaef8eb41a8e16ba430295d5ec20b880e4cb94e2924774f0a"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.9.1" version: "0.16.0"
fwfh_webview: fwfh_webview:
dependency: transitive dependency: transitive
description: description:
@ -862,18 +862,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: html name: html
sha256: "1fc58edeaec4307368c60d59b7e15b9d658b57d7f3125098b6294153c75337ec" sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.15.5" version: "0.15.6"
http: http:
dependency: "direct main" dependency: "direct main"
description: description:
name: http name: http
sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.0" version: "1.4.0"
http_client_helper: http_client_helper:
dependency: transitive dependency: transitive
description: description:
@ -926,10 +926,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: intl name: intl
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.19.0" version: "0.20.2"
io: io:
dependency: transitive dependency: transitive
description: description:
@ -998,18 +998,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: just_audio_web name: just_audio_web
sha256: "8c7e779892e180cbc9ffb5a3c52f6e90e1cbbf4a63694cc450972a7edbd2bb6d" sha256: "6ba8a2a7e87d57d32f0f7b42856ade3d6a9fbe0f1a11fabae0a4f00bb73f0663"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.4.15" version: "0.4.16"
leak_tracker: leak_tracker:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker name: leak_tracker
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.0.8" version: "10.0.9"
leak_tracker_flutter_testing: leak_tracker_flutter_testing:
dependency: transitive dependency: transitive
description: description:
@ -1030,10 +1030,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: lints name: lints
sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 sha256: a5e2b223cb7c9c8efdc663ef484fdd95bb243bff242ef5b13e26883547fce9a0
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.1.1" version: "6.0.0"
local_auth: local_auth:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1046,10 +1046,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: local_auth_android name: local_auth_android
sha256: "0abe4e72f55c785b28900de52a2522c86baba0988838b5dc22241b072ecccd74" sha256: "63ad7ca6396290626dc0cb34725a939e4cfe965d80d36112f08d49cf13a8136e"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.0.48" version: "1.0.49"
local_auth_darwin: local_auth_darwin:
dependency: transitive dependency: transitive
description: description:
@ -1230,10 +1230,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: overflow_view name: overflow_view
sha256: e75e834cd93f7abe9d4edc371a17ee92373147b9e973fdc05373ec3d3f163075 sha256: aa39c40f8229e6dcd243e544d707457ff630bb99063d2fd0be8b31f8da902e27
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.4.0" version: "0.5.0"
package_config: package_config:
dependency: transitive dependency: transitive
description: description:
@ -1294,10 +1294,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: path_provider_android name: path_provider_android
sha256: "0ca7359dad67fd7063cb2892ab0c0737b2daafd807cf1acecd62374c8fae6c12" sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.2.16" version: "2.2.17"
path_provider_foundation: path_provider_foundation:
dependency: transitive dependency: transitive
description: description:
@ -1382,10 +1382,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: pointer_interceptor_web name: pointer_interceptor_web
sha256: "7a7087782110f8c1827170660b09f8aa893e0e9a61431dbbe2ac3fc482e8c044" sha256: "460b600e71de6fcea2b3d5f662c92293c049c4319e27f0829310e5a953b3ee2a"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.10.2+1" version: "0.10.3"
pool: pool:
dependency: transitive dependency: transitive
description: description:
@ -1398,18 +1398,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: posix name: posix
sha256: a0117dc2167805aa9125b82eee515cc891819bac2f538c83646d355b16f58b9a sha256: f0d7856b6ca1887cfa6d1d394056a296ae33489db914e365e2044fdada449e62
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.0.1" version: "6.0.2"
provider: provider:
dependency: transitive dependency: transitive
description: description:
name: provider name: provider
sha256: "489024f942069c2920c844ee18bb3d467c69e48955a4f32d1677f71be103e310" sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.1.4" version: "6.1.5"
pub_semver: pub_semver:
dependency: transitive dependency: transitive
description: description:
@ -1430,10 +1430,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: qs_dart name: qs_dart
sha256: c775dbe663cd59365050220b3499dee259b72ad6b352a3e087a15bd77e161b74 sha256: f8d9f9f75fa6e6e72437995ccb549a27d52ec06236cfad1f4e5eceb755427649
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.3+1" version: "1.3.7+1"
recase: recase:
dependency: transitive dependency: transitive
description: description:
@ -1510,10 +1510,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: screen_brightness name: screen_brightness
sha256: eca7bd9d2c3c688bcad14855361cab7097839400b6b4a56f62b7ae511c709958 sha256: "20b43489fbb12316d64633d5abb731f8d3e2c49871f65c8e434c6225d0f58fcf"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.2" version: "2.1.4"
screen_brightness_android: screen_brightness_android:
dependency: transitive dependency: transitive
description: description:
@ -1526,10 +1526,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: screen_brightness_ios name: screen_brightness_ios
sha256: bfd9bfd0ac852e7aa170e7e356cc27195b2a75037b72c8c6336cf6fb2115cffb sha256: "2493953340ecfe8f4f13f61db50ce72533a55b0bbd58ba1402893feecf3727f5"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.1" version: "2.1.2"
screen_brightness_macos: screen_brightness_macos:
dependency: transitive dependency: transitive
description: description:
@ -1538,6 +1538,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.1" version: "2.1.1"
screen_brightness_ohos:
dependency: transitive
description:
name: screen_brightness_ohos
sha256: "61e313e46eaee3f83dd4e85a2a91f8a81be02c154bc9e60830a7c0fd76dac286"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
screen_brightness_platform_interface: screen_brightness_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -1606,18 +1614,18 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: share_plus name: share_plus
sha256: fce43200aa03ea87b91ce4c3ac79f0cecd52e2a7a56c7a4185023c271fbfa6da sha256: b2961506569e28948d75ec346c28775bb111986bb69dc6a20754a457e3d97fa0
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.1.4" version: "11.0.0"
share_plus_platform_interface: share_plus_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: share_plus_platform_interface name: share_plus_platform_interface
sha256: cc012a23fc2d479854e6c80150696c4a5f5bb62cb89af4de1c505cf78d0a5d0b sha256: "1032d392bc5d2095a77447a805aa3f804d2ae6a4d5eef5e6ebb3bd94c1bc19ef"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.0.2" version: "6.0.0"
shared_preferences: shared_preferences:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1630,10 +1638,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_android name: shared_preferences_android
sha256: "3ec7210872c4ba945e3244982918e502fa2bfb5230dff6832459ca0e1879b7ad" sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.8" version: "2.4.10"
shared_preferences_foundation: shared_preferences_foundation:
dependency: transitive dependency: transitive
description: description:
@ -1947,10 +1955,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_android name: url_launcher_android
sha256: "1d0eae19bd7606ef60fe69ef3b312a437a16549476c42321d5dc1506c9ca3bf4" sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.3.15" version: "6.3.16"
url_launcher_ios: url_launcher_ios:
dependency: transitive dependency: transitive
description: description:
@ -1987,10 +1995,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_web name: url_launcher_web
sha256: "3ba963161bd0fe395917ba881d320b9c4f6dd3c4a233da62ab18a5025c85f1e9" sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.0" version: "2.4.1"
url_launcher_windows: url_launcher_windows:
dependency: transitive dependency: transitive
description: description:
@ -2011,10 +2019,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: value_layout_builder name: value_layout_builder
sha256: c02511ea91ca5c643b514a33a38fa52536f74aa939ec367d02938b5ede6807fa sha256: ab4b7d98bac8cefeb9713154d43ee0477490183f5aa23bb4ffa5103d9bbf6275
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.4.0" version: "0.5.0"
vector_graphics: vector_graphics:
dependency: transitive dependency: transitive
description: description:
@ -2035,10 +2043,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: vector_graphics_compiler name: vector_graphics_compiler
sha256: "1b4b9e706a10294258727674a340ae0d6e64a7231980f9f9a3d12e4b42407aad" sha256: "557a315b7d2a6dbb0aaaff84d857967ce6bdc96a63dc6ee2a57ce5a6ee5d3331"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.16" version: "1.1.17"
vector_math: vector_math:
dependency: transitive dependency: transitive
description: description:
@ -2051,26 +2059,26 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: video_player name: video_player
sha256: "7d78f0cfaddc8c19d4cb2d3bebe1bfef11f2103b0a03e5398b303a1bf65eeb14" sha256: "0d55b1f1a31e5ad4c4967bfaa8ade0240b07d20ee4af1dfef5f531056512961a"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.9.5" version: "2.10.0"
video_player_android: video_player_android:
dependency: transitive dependency: transitive
description: description:
name: video_player_android name: video_player_android
sha256: ae7d4f1b41e3ac6d24dd9b9d5d6831b52d74a61bdd90a7a6262a33d8bb97c29a sha256: "4a5135754a62dbc827a64a42ef1f8ed72c962e191c97e2d48744225c2b9ebb73"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.8.2" version: "2.8.7"
video_player_avfoundation: video_player_avfoundation:
dependency: transitive dependency: transitive
description: description:
name: video_player_avfoundation name: video_player_avfoundation
sha256: "84b4752745eeccb6e75865c9aab39b3d28eb27ba5726d352d45db8297fbd75bc" sha256: "9ee764e5cd2fc1e10911ae8ad588e1a19db3b6aa9a6eb53c127c42d3a3c3f22f"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.7.0" version: "2.7.1"
video_player_platform_interface: video_player_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -2083,10 +2091,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: video_player_web name: video_player_web
sha256: "3ef40ea6d72434edbfdba4624b90fd3a80a0740d260667d91e7ecd2d79e13476" sha256: e8bba2e5d1e159d5048c9a491bb2a7b29c535c612bb7d10c1e21107f5bd365ba
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.3.4" version: "2.3.5"
visibility_detector: visibility_detector:
dependency: transitive dependency: transitive
description: description:
@ -2099,34 +2107,34 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: vm_service name: vm_service
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "14.3.1" version: "15.0.0"
volume_controller: volume_controller:
dependency: transitive dependency: transitive
description: description:
name: volume_controller name: volume_controller
sha256: e82fd689bb8e1fe8e64be3fa5946ff8699058f8cf9f4c1679acdba20cda7f5bd sha256: d75039e69c0d90e7810bfd47e3eedf29ff8543ea7a10392792e81f9bded7edf5
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.3.3" version: "3.4.0"
wakelock_plus: wakelock_plus:
dependency: "direct main" dependency: "direct main"
description: description:
name: wakelock_plus name: wakelock_plus
sha256: b90fbcc8d7bdf3b883ea9706d9d76b9978cb1dfa4351fcc8014d6ec31a493354 sha256: a474e314c3e8fb5adef1f9ae2d247e57467ad557fa7483a2b895bc1b421c5678
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.2.11" version: "1.3.2"
wakelock_plus_platform_interface: wakelock_plus_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: wakelock_plus_platform_interface name: wakelock_plus_platform_interface
sha256: "70e780bc99796e1db82fe764b1e7dcb89a86f1e5b3afb1db354de50f2e41eb7a" sha256: e10444072e50dbc4999d7316fd303f7ea53d31c824aa5eb05d7ccbdd98985207
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.2.2" version: "1.2.3"
watcher: watcher:
dependency: transitive dependency: transitive
description: description:
@ -2155,66 +2163,66 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: web_socket name: web_socket
sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.1.6" version: "1.0.1"
web_socket_channel: web_socket_channel:
dependency: transitive dependency: transitive
description: description:
name: web_socket_channel name: web_socket_channel
sha256: "0b8e2457400d8a859b7b2030786835a28a8e80836ef64402abef392ff4f1d0e5" sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.2" version: "3.0.3"
webview_flutter: webview_flutter:
dependency: transitive dependency: transitive
description: description:
name: webview_flutter name: webview_flutter
sha256: "889a0a678e7c793c308c68739996227c9661590605e70b1f6cf6b9a6634f7aec" sha256: c3e4fe614b1c814950ad07186007eff2f2e5dd2935eba7b9a9a1af8e5885f1ba
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.10.0" version: "4.13.0"
webview_flutter_android: webview_flutter_android:
dependency: transitive dependency: transitive
description: description:
name: webview_flutter_android name: webview_flutter_android
sha256: e09150b28a07933839adef0e4a088bb43e8c8d9e6b93025b01882d4067a58ab0 sha256: f6e6afef6e234801da77170f7a1847ded8450778caf2fe13979d140484be3678
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.3.4" version: "4.7.0"
webview_flutter_platform_interface: webview_flutter_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: webview_flutter_platform_interface name: webview_flutter_platform_interface
sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d sha256: f0dc2dc3a2b1e3a6abdd6801b9355ebfeb3b8f6cde6b9dc7c9235909c4a1f147
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.10.0" version: "2.13.1"
webview_flutter_wkwebview: webview_flutter_wkwebview:
dependency: transitive dependency: transitive
description: description:
name: webview_flutter_wkwebview name: webview_flutter_wkwebview
sha256: c14455137ce60a68e1ccaf4e8f2dae8cebcb3465ddaa2fcfb57584fb7c5afe4d sha256: a3d461fe3467014e05f3ac4962e5fdde2a4bf44c561cb53e9ae5c586600fdbc3
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.18.5" version: "3.22.0"
win32: win32:
dependency: transitive dependency: transitive
description: description:
name: win32 name: win32
sha256: dc6ecaa00a7c708e5b4d10ee7bec8c270e9276dfcab1783f57e9962d7884305f sha256: "329edf97fdd893e0f1e3b9e88d6a0e627128cc17cc316a8d67fda8f1451178ba"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.12.0" version: "5.13.0"
window_manager: window_manager:
dependency: "direct main" dependency: "direct main"
description: description:
name: window_manager name: window_manager
sha256: "732896e1416297c63c9e3fb95aea72d0355f61390263982a47fd519169dc5059" sha256: "51d50168ab267d344b975b15390426b1243600d436770d3f13de67e55b05ec16"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.4.3" version: "0.5.0"
xdg_directories: xdg_directories:
dependency: transitive dependency: transitive
description: description:
@ -2248,5 +2256,5 @@ packages:
source: hosted source: hosted
version: "3.1.3" version: "3.1.3"
sdks: sdks:
dart: ">=3.7.0 <4.0.0" dart: ">=3.8.0 <4.0.0"
flutter: ">=3.27.0" flutter: ">=3.32.0"

View file

@ -40,11 +40,11 @@ dependencies:
iconsax_plus: ^1.0.0 iconsax_plus: ^1.0.0
# Network and HTTP # Network and HTTP
chopper: ^8.0.4 chopper: ^8.1.0
cached_network_image: ^3.4.1 cached_network_image: ^3.4.1
http: ^1.3.0 http: ^1.4.0
flutter_cache_manager: ^3.4.1 flutter_cache_manager: ^3.4.1
connectivity_plus: ^6.1.3 connectivity_plus: ^6.1.4
# State Management # State Management
flutter_riverpod: ^2.6.1 flutter_riverpod: ^2.6.1
@ -58,59 +58,59 @@ dependencies:
logging: ^1.3.0 logging: ^1.3.0
# Internationalization # Internationalization
intl: ^0.19.0 intl: ^0.20.2
# Local Storage # Local Storage
shared_preferences: ^2.5.1 shared_preferences: ^2.5.3
path_provider: ^2.1.5 path_provider: ^2.1.5
# Media # Media
media_kit: ^1.2.0 # Primary package. media_kit: ^1.2.0 # Primary package.
media_kit_video: ^1.2.5 # For video rendering. media_kit_video: ^1.3.0 # For video rendering.
media_kit_libs_video: ^1.0.5 # Native video dependencies. media_kit_libs_video: ^1.0.6 # Native video dependencies.
audio_service: ^0.18.16 audio_service: ^0.18.18
fvp: ^0.31.0 fvp: ^0.32.1
video_player: ^2.9.2 video_player: ^2.10.0
# UI Components # UI Components
dynamic_color: ^1.7.0 dynamic_color: ^1.7.0
flutter_svg: ^2.0.17 flutter_svg: ^2.1.0
animations: ^2.0.11 animations: ^2.0.11
automatic_animated_list: ^1.1.0 automatic_animated_list: ^1.1.0
page_transition: ^2.2.1 page_transition: ^2.2.1
sticky_headers: ^0.3.0+2 sticky_headers: ^0.3.0+2
flutter_staggered_grid_view: ^0.7.0 flutter_staggered_grid_view: ^0.7.0
sliver_tools: ^0.2.12 sliver_tools: ^0.2.12
square_progress_indicator: ^0.0.7 square_progress_indicator: ^0.0.8
flutter_blurhash: ^0.8.2 flutter_blurhash: ^0.9.1
extended_image: ^9.1.0 extended_image: ^10.0.1
flutter_widget_from_html: ^0.15.3 flutter_widget_from_html: ^0.16.0
font_awesome_flutter: ^10.8.0 font_awesome_flutter: ^10.8.0
reorderable_grid: ^1.0.10 reorderable_grid: ^1.0.10
overflow_view: ^0.4.0 overflow_view: ^0.5.0
flutter_sticky_header: ^0.7.0 flutter_sticky_header: ^0.8.0
markdown_widget: ^2.3.2+8 markdown_widget: ^2.3.2+8
# Navigation # Navigation
auto_route: ^9.3.0+1 auto_route: ^9.3.0+1
url_launcher: ^6.3.1 url_launcher: ^6.3.1
flutter_custom_tabs: ^2.1.0 flutter_custom_tabs: ^2.4.0
# Utility # Utility
path: ^1.9.0 path: ^1.9.1
file_picker: ^8.3.1 file_picker: ^10.1.9
transparent_image: ^2.0.1 transparent_image: ^2.0.1
universal_html: ^2.2.4 universal_html: ^2.2.4
collection: ^1.19.0 collection: ^1.19.1
# Device and System # Device and System
local_auth: ^2.3.0 local_auth: ^2.3.0
package_info_plus: ^8.1.4 package_info_plus: ^8.3.0
wakelock_plus: ^1.2.10 wakelock_plus: ^1.3.2
screen_brightness: ^2.1.1 screen_brightness: ^2.1.4
window_manager: ^0.4.3 window_manager: ^0.5.0
smtc_windows: ^1.0.0 smtc_windows: ^1.0.0
background_downloader: ^8.9.4 background_downloader: ^9.2.2
screen_retriever: ^0.2.0 screen_retriever: ^0.2.0
# Data # Data
@ -118,14 +118,14 @@ dependencies:
isar_flutter_libs: ^4.0.0-dev.14 # contains Isar Core isar_flutter_libs: ^4.0.0-dev.14 # contains Isar Core
# Other # Other
async: ^2.11.0 async: ^2.13.0
xid: ^1.2.1 xid: ^1.2.1
desktop_drop: ^0.5.0 desktop_drop: ^0.6.0
flexible_scrollbar: ^0.1.3 flexible_scrollbar: ^0.1.3
flutter_typeahead: ^5.2.0 flutter_typeahead: ^5.2.0
share_plus: ^10.1.4 share_plus: ^11.0.0
archive: ^4.0.2 archive: ^4.0.7
dart_mappable: ^4.3.0 dart_mappable: ^4.5.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
@ -136,17 +136,17 @@ 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: ^5.0.0 flutter_lints: ^6.0.0
build_runner: ^2.4.14 build_runner: ^2.4.15
chopper_generator: ^8.0.4 chopper_generator: ^8.1.0
json_serializable: ^6.9.0 json_serializable: ^6.9.0
custom_lint: ^0.7.0 custom_lint: ^0.7.0
freezed: ^2.5.7 freezed: ^2.5.7
swagger_dart_code_generator: ^3.0.1 swagger_dart_code_generator: ^3.0.1
riverpod_generator: ^2.6.3 riverpod_generator: ^2.6.3
dart_mappable_builder: ^4.3.0 dart_mappable_builder: ^4.3.1+1
auto_route_generator: ^9.0.0 auto_route_generator: ^9.0.0
icons_launcher: ^3.0.0 icons_launcher: ^3.0.1
flutter: flutter:
# The following line ensures that the Material Icons font is # The following line ensures that the Material Icons font is