diff --git a/lib/data/model/app/bak/backup2.dart b/lib/data/model/app/bak/backup2.dart index 79ac17f3..da2bd18c 100644 --- a/lib/data/model/app/bak/backup2.dart +++ b/lib/data/model/app/bak/backup2.dart @@ -55,9 +55,9 @@ abstract class BackupV2 with _$BackupV2 implements Mergeable { await Mergeable.mergeStore(backupData: history, store: Stores.history, force: force); await Mergeable.mergeStore(backupData: settings, store: Stores.setting, force: force); - if (serverChanged) GlobalRef.gRef?.read(serversNotifierProvider.notifier).reload(); - if (snippetChanged) GlobalRef.gRef?.read(snippetNotifierProvider.notifier).reload(); - if (keyChanged) GlobalRef.gRef?.read(privateKeyNotifierProvider.notifier).reload(); + if (serverChanged) GlobalRef.gRef?.read(serversProvider.notifier).reload(); + if (snippetChanged) GlobalRef.gRef?.read(snippetProvider.notifier).reload(); + if (keyChanged) GlobalRef.gRef?.read(privateKeyProvider.notifier).reload(); _loggerV2.info('Merge completed'); } diff --git a/lib/data/model/server/custom.g.dart b/lib/data/model/server/custom.g.dart index f204a733..c67bbeb4 100644 --- a/lib/data/model/server/custom.g.dart +++ b/lib/data/model/server/custom.g.dart @@ -20,11 +20,11 @@ ServerCustom _$ServerCustomFromJson(Map json) => ServerCustom( Map _$ServerCustomToJson(ServerCustom instance) => { - if (instance.pveAddr case final value?) 'pveAddr': value, + 'pveAddr': ?instance.pveAddr, 'pveIgnoreCert': instance.pveIgnoreCert, - if (instance.cmds case final value?) 'cmds': value, - if (instance.preferTempDev case final value?) 'preferTempDev': value, - if (instance.logoUrl case final value?) 'logoUrl': value, - if (instance.netDev case final value?) 'netDev': value, - if (instance.scriptDir case final value?) 'scriptDir': value, + 'cmds': ?instance.cmds, + 'preferTempDev': ?instance.preferTempDev, + 'logoUrl': ?instance.logoUrl, + 'netDev': ?instance.netDev, + 'scriptDir': ?instance.scriptDir, }; diff --git a/lib/data/model/server/server_private_info.g.dart b/lib/data/model/server/server_private_info.g.dart index fc255435..a3fc1653 100644 --- a/lib/data/model/server/server_private_info.g.dart +++ b/lib/data/model/server/server_private_info.g.dart @@ -41,19 +41,18 @@ Map _$SpiToJson(_Spi instance) => { 'ip': instance.ip, 'port': instance.port, 'user': instance.user, - if (instance.pwd case final value?) 'pwd': value, - if (instance.keyId case final value?) 'pubKeyId': value, - if (instance.tags case final value?) 'tags': value, - if (instance.alterUrl case final value?) 'alterUrl': value, + 'pwd': ?instance.pwd, + 'pubKeyId': ?instance.keyId, + 'tags': ?instance.tags, + 'alterUrl': ?instance.alterUrl, 'autoConnect': instance.autoConnect, - if (instance.jumpId case final value?) 'jumpId': value, - if (instance.custom case final value?) 'custom': value, - if (instance.wolCfg case final value?) 'wolCfg': value, - if (instance.envs case final value?) 'envs': value, + 'jumpId': ?instance.jumpId, + 'custom': ?instance.custom, + 'wolCfg': ?instance.wolCfg, + 'envs': ?instance.envs, 'id': instance.id, - if (_$SystemTypeEnumMap[instance.customSystemType] case final value?) - 'customSystemType': value, - if (instance.disabledCmdTypes case final value?) 'disabledCmdTypes': value, + 'customSystemType': ?_$SystemTypeEnumMap[instance.customSystemType], + 'disabledCmdTypes': ?instance.disabledCmdTypes, }; const _$SystemTypeEnumMap = { diff --git a/lib/data/model/server/wol_cfg.g.dart b/lib/data/model/server/wol_cfg.g.dart index c83fe845..f7049c84 100644 --- a/lib/data/model/server/wol_cfg.g.dart +++ b/lib/data/model/server/wol_cfg.g.dart @@ -16,5 +16,5 @@ Map _$WakeOnLanCfgToJson(WakeOnLanCfg instance) => { 'mac': instance.mac, 'ip': instance.ip, - if (instance.pwd case final value?) 'pwd': value, + 'pwd': ?instance.pwd, }; diff --git a/lib/data/provider/app.g.dart b/lib/data/provider/app.g.dart index 23420a9c..5be19682 100644 --- a/lib/data/provider/app.g.dart +++ b/lib/data/provider/app.g.dart @@ -6,20 +6,57 @@ part of 'app.dart'; // RiverpodGenerator // ************************************************************************** +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint, type=warning + +@ProviderFor(AppStates) +const appStatesProvider = AppStatesProvider._(); + +final class AppStatesProvider extends $NotifierProvider { + const AppStatesProvider._() + : super( + from: null, + argument: null, + retry: null, + name: r'appStatesProvider', + isAutoDispose: false, + dependencies: null, + $allTransitiveDependencies: null, + ); + + @override + String debugGetCreateSourceHash() => _$appStatesHash(); + + @$internal + @override + AppStates create() => AppStates(); + + /// {@macro riverpod.override_with_value} + Override overrideWithValue(AppState value) { + return $ProviderOverride( + origin: this, + providerOverride: $SyncValueProvider(value), + ); + } +} + String _$appStatesHash() => r'ef96f10f6fff0f3dd6d3128ebf070ad79cbc8bc9'; -/// See also [AppStates]. -@ProviderFor(AppStates) -final appStatesProvider = NotifierProvider.internal( - AppStates.new, - name: r'appStatesProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$appStatesHash, - dependencies: null, - allTransitiveDependencies: null, -); - -typedef _$AppStates = Notifier; -// ignore_for_file: type=lint -// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package +abstract class _$AppStates extends $Notifier { + AppState build(); + @$mustCallSuper + @override + void runBuild() { + final created = build(); + final ref = this.ref as $Ref; + final element = + ref.element + as $ClassProviderElement< + AnyNotifier, + AppState, + Object?, + Object? + >; + element.handleValue(ref, created); + } +} diff --git a/lib/data/provider/container.g.dart b/lib/data/provider/container.g.dart index 28445f4f..21c7e085 100644 --- a/lib/data/provider/container.g.dart +++ b/lib/data/provider/container.g.dart @@ -6,35 +6,98 @@ part of 'container.dart'; // RiverpodGenerator // ************************************************************************** -String _$containerNotifierHash() => r'fea65e66499234b0a59bffff8d69c4ab8c93b2fd'; +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint, type=warning -/// Copied from Dart SDK -class _SystemHash { - _SystemHash._(); +@ProviderFor(ContainerNotifier) +const containerProvider = ContainerNotifierFamily._(); - static int combine(int hash, int value) { - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + value); - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); - return hash ^ (hash >> 6); +final class ContainerNotifierProvider + extends $NotifierProvider { + const ContainerNotifierProvider._({ + required ContainerNotifierFamily super.from, + required (SSHClient?, String, String, BuildContext) super.argument, + }) : super( + retry: null, + name: r'containerProvider', + isAutoDispose: true, + dependencies: null, + $allTransitiveDependencies: null, + ); + + @override + String debugGetCreateSourceHash() => _$containerNotifierHash(); + + @override + String toString() { + return r'containerProvider' + '' + '$argument'; } - static int finish(int hash) { - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); - // ignore: parameter_assignments - hash = hash ^ (hash >> 11); - return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); + @$internal + @override + ContainerNotifier create() => ContainerNotifier(); + + /// {@macro riverpod.override_with_value} + Override overrideWithValue(ContainerState value) { + return $ProviderOverride( + origin: this, + providerOverride: $SyncValueProvider(value), + ); + } + + @override + bool operator ==(Object other) { + return other is ContainerNotifierProvider && other.argument == argument; + } + + @override + int get hashCode { + return argument.hashCode; } } -abstract class _$ContainerNotifier - extends BuildlessAutoDisposeNotifier { - late final SSHClient? client; - late final String userName; - late final String hostId; - late final BuildContext context; +String _$containerNotifierHash() => r'fea65e66499234b0a59bffff8d69c4ab8c93b2fd'; + +final class ContainerNotifierFamily extends $Family + with + $ClassFamilyOverride< + ContainerNotifier, + ContainerState, + ContainerState, + ContainerState, + (SSHClient?, String, String, BuildContext) + > { + const ContainerNotifierFamily._() + : super( + retry: null, + name: r'containerProvider', + dependencies: null, + $allTransitiveDependencies: null, + isAutoDispose: true, + ); + + ContainerNotifierProvider call( + SSHClient? client, + String userName, + String hostId, + BuildContext context, + ) => ContainerNotifierProvider._( + argument: (client, userName, hostId, context), + from: this, + ); + + @override + String toString() => r'containerProvider'; +} + +abstract class _$ContainerNotifier extends $Notifier { + late final _$args = ref.$arg as (SSHClient?, String, String, BuildContext); + SSHClient? get client => _$args.$1; + String get userName => _$args.$2; + String get hostId => _$args.$3; + BuildContext get context => _$args.$4; ContainerState build( SSHClient? client, @@ -42,187 +105,19 @@ abstract class _$ContainerNotifier String hostId, BuildContext context, ); -} - -/// See also [ContainerNotifier]. -@ProviderFor(ContainerNotifier) -const containerNotifierProvider = ContainerNotifierFamily(); - -/// See also [ContainerNotifier]. -class ContainerNotifierFamily extends Family { - /// See also [ContainerNotifier]. - const ContainerNotifierFamily(); - - /// See also [ContainerNotifier]. - ContainerNotifierProvider call( - SSHClient? client, - String userName, - String hostId, - BuildContext context, - ) { - return ContainerNotifierProvider(client, userName, hostId, context); - } - + @$mustCallSuper @override - ContainerNotifierProvider getProviderOverride( - covariant ContainerNotifierProvider provider, - ) { - return call( - provider.client, - provider.userName, - provider.hostId, - provider.context, - ); - } - - static const Iterable? _dependencies = null; - - @override - Iterable? get dependencies => _dependencies; - - static const Iterable? _allTransitiveDependencies = null; - - @override - Iterable? get allTransitiveDependencies => - _allTransitiveDependencies; - - @override - String? get name => r'containerNotifierProvider'; -} - -/// See also [ContainerNotifier]. -class ContainerNotifierProvider - extends AutoDisposeNotifierProviderImpl { - /// See also [ContainerNotifier]. - ContainerNotifierProvider( - SSHClient? client, - String userName, - String hostId, - BuildContext context, - ) : this._internal( - () => ContainerNotifier() - ..client = client - ..userName = userName - ..hostId = hostId - ..context = context, - from: containerNotifierProvider, - name: r'containerNotifierProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$containerNotifierHash, - dependencies: ContainerNotifierFamily._dependencies, - allTransitiveDependencies: - ContainerNotifierFamily._allTransitiveDependencies, - client: client, - userName: userName, - hostId: hostId, - context: context, - ); - - ContainerNotifierProvider._internal( - super._createNotifier, { - required super.name, - required super.dependencies, - required super.allTransitiveDependencies, - required super.debugGetCreateSourceHash, - required super.from, - required this.client, - required this.userName, - required this.hostId, - required this.context, - }) : super.internal(); - - final SSHClient? client; - final String userName; - final String hostId; - final BuildContext context; - - @override - ContainerState runNotifierBuild(covariant ContainerNotifier notifier) { - return notifier.build(client, userName, hostId, context); - } - - @override - Override overrideWith(ContainerNotifier Function() create) { - return ProviderOverride( - origin: this, - override: ContainerNotifierProvider._internal( - () => create() - ..client = client - ..userName = userName - ..hostId = hostId - ..context = context, - from: from, - name: null, - dependencies: null, - allTransitiveDependencies: null, - debugGetCreateSourceHash: null, - client: client, - userName: userName, - hostId: hostId, - context: context, - ), - ); - } - - @override - AutoDisposeNotifierProviderElement - createElement() { - return _ContainerNotifierProviderElement(this); - } - - @override - bool operator ==(Object other) { - return other is ContainerNotifierProvider && - other.client == client && - other.userName == userName && - other.hostId == hostId && - other.context == context; - } - - @override - int get hashCode { - var hash = _SystemHash.combine(0, runtimeType.hashCode); - hash = _SystemHash.combine(hash, client.hashCode); - hash = _SystemHash.combine(hash, userName.hashCode); - hash = _SystemHash.combine(hash, hostId.hashCode); - hash = _SystemHash.combine(hash, context.hashCode); - - return _SystemHash.finish(hash); + void runBuild() { + final created = build(_$args.$1, _$args.$2, _$args.$3, _$args.$4); + final ref = this.ref as $Ref; + final element = + ref.element + as $ClassProviderElement< + AnyNotifier, + ContainerState, + Object?, + Object? + >; + element.handleValue(ref, created); } } - -@Deprecated('Will be removed in 3.0. Use Ref instead') -// ignore: unused_element -mixin ContainerNotifierRef on AutoDisposeNotifierProviderRef { - /// The parameter `client` of this provider. - SSHClient? get client; - - /// The parameter `userName` of this provider. - String get userName; - - /// The parameter `hostId` of this provider. - String get hostId; - - /// The parameter `context` of this provider. - BuildContext get context; -} - -class _ContainerNotifierProviderElement - extends - AutoDisposeNotifierProviderElement - with ContainerNotifierRef { - _ContainerNotifierProviderElement(super.provider); - - @override - SSHClient? get client => (origin as ContainerNotifierProvider).client; - @override - String get userName => (origin as ContainerNotifierProvider).userName; - @override - String get hostId => (origin as ContainerNotifierProvider).hostId; - @override - BuildContext get context => (origin as ContainerNotifierProvider).context; -} - -// ignore_for_file: type=lint -// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/data/provider/private_key.g.dart b/lib/data/provider/private_key.g.dart index 6ee8e41e..64963f3d 100644 --- a/lib/data/provider/private_key.g.dart +++ b/lib/data/provider/private_key.g.dart @@ -6,22 +6,59 @@ part of 'private_key.dart'; // RiverpodGenerator // ************************************************************************** +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint, type=warning + +@ProviderFor(PrivateKeyNotifier) +const privateKeyProvider = PrivateKeyNotifierProvider._(); + +final class PrivateKeyNotifierProvider + extends $NotifierProvider { + const PrivateKeyNotifierProvider._() + : super( + from: null, + argument: null, + retry: null, + name: r'privateKeyProvider', + isAutoDispose: false, + dependencies: null, + $allTransitiveDependencies: null, + ); + + @override + String debugGetCreateSourceHash() => _$privateKeyNotifierHash(); + + @$internal + @override + PrivateKeyNotifier create() => PrivateKeyNotifier(); + + /// {@macro riverpod.override_with_value} + Override overrideWithValue(PrivateKeyState value) { + return $ProviderOverride( + origin: this, + providerOverride: $SyncValueProvider(value), + ); + } +} + String _$privateKeyNotifierHash() => r'12edd05dca29d1cbc9e2a3e047c3d417d22f7bb7'; -/// See also [PrivateKeyNotifier]. -@ProviderFor(PrivateKeyNotifier) -final privateKeyNotifierProvider = - NotifierProvider.internal( - PrivateKeyNotifier.new, - name: r'privateKeyNotifierProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$privateKeyNotifierHash, - dependencies: null, - allTransitiveDependencies: null, - ); - -typedef _$PrivateKeyNotifier = Notifier; -// ignore_for_file: type=lint -// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package +abstract class _$PrivateKeyNotifier extends $Notifier { + PrivateKeyState build(); + @$mustCallSuper + @override + void runBuild() { + final created = build(); + final ref = this.ref as $Ref; + final element = + ref.element + as $ClassProviderElement< + AnyNotifier, + PrivateKeyState, + Object?, + Object? + >; + element.handleValue(ref, created); + } +} diff --git a/lib/data/provider/providers.dart b/lib/data/provider/providers.dart index d3656fbc..c0cf326f 100644 --- a/lib/data/provider/providers.dart +++ b/lib/data/provider/providers.dart @@ -1,4 +1,5 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_riverpod/misc.dart'; import 'package:server_box/data/provider/app.dart'; import 'package:server_box/data/provider/private_key.dart'; @@ -10,7 +11,7 @@ import 'package:server_box/data/provider/snippet.dart'; /// ref.useNotifier, ref.readProvider, ref.watchProvider /// /// Usage: -/// - `providers.read.server` -> `ref.read(serversNotifierProvider)` +/// - `providers.read.server` -> `ref.read(serversProvider)` /// - `providers.use.snippet` -> `ref.read(snippetsNotifierProvider.notifier)` extension RiverpodNotifiers on ConsumerState { @@ -45,11 +46,11 @@ final class ReadMyProvider { T call(ProviderBase provider) => ref.read(provider); // Specific provider getters - ServersState get server => ref.read(serversNotifierProvider); - SnippetState get snippet => ref.read(snippetNotifierProvider); + ServersState get server => ref.read(serversProvider); + SnippetState get snippet => ref.read(snippetProvider); AppState get app => ref.read(appStatesProvider); - PrivateKeyState get privateKey => ref.read(privateKeyNotifierProvider); - SftpState get sftp => ref.read(sftpNotifierProvider); + PrivateKeyState get privateKey => ref.read(privateKeyProvider); + SftpState get sftp => ref.read(sftpProvider); } final class WatchMyProvider { @@ -59,11 +60,11 @@ final class WatchMyProvider { T call(ProviderBase provider) => ref.watch(provider); // Specific provider getters - ServersState get server => ref.watch(serversNotifierProvider); - SnippetState get snippet => ref.watch(snippetNotifierProvider); + ServersState get server => ref.watch(serversProvider); + SnippetState get snippet => ref.watch(snippetProvider); AppState get app => ref.watch(appStatesProvider); - PrivateKeyState get privateKey => ref.watch(privateKeyNotifierProvider); - SftpState get sftp => ref.watch(sftpNotifierProvider); + PrivateKeyState get privateKey => ref.watch(privateKeyProvider); + SftpState get sftp => ref.watch(sftpProvider); } final class UseNotifierMyProvider { @@ -74,9 +75,9 @@ final class UseNotifierMyProvider { ref.read(provider.notifier); // Specific provider notifier getters - ServersNotifier get server => ref.read(serversNotifierProvider.notifier); - SnippetNotifier get snippet => ref.read(snippetNotifierProvider.notifier); + ServersNotifier get server => ref.read(serversProvider.notifier); + SnippetNotifier get snippet => ref.read(snippetProvider.notifier); AppStates get app => ref.read(appStatesProvider.notifier); - PrivateKeyNotifier get privateKey => ref.read(privateKeyNotifierProvider.notifier); - SftpNotifier get sftp => ref.read(sftpNotifierProvider.notifier); + PrivateKeyNotifier get privateKey => ref.read(privateKeyProvider.notifier); + SftpNotifier get sftp => ref.read(sftpProvider.notifier); } \ No newline at end of file diff --git a/lib/data/provider/pve.dart b/lib/data/provider/pve.dart index b96aeff1..a6eddebd 100644 --- a/lib/data/provider/pve.dart +++ b/lib/data/provider/pve.dart @@ -45,7 +45,7 @@ class PveNotifier extends _$PveNotifier { @override PveState build(Spi spiParam) { spi = spiParam; - final serverState = ref.watch(serverNotifierProvider(spi.id)); + final serverState = ref.watch(serverProvider(spi.id)); final client = serverState.client; if (client == null) { return const PveState(error: PveErr(type: PveErrType.net, message: 'Server client is null')); diff --git a/lib/data/provider/pve.g.dart b/lib/data/provider/pve.g.dart index dcd197fb..4eba8f66 100644 --- a/lib/data/provider/pve.g.dart +++ b/lib/data/provider/pve.g.dart @@ -6,155 +6,96 @@ part of 'pve.dart'; // RiverpodGenerator // ************************************************************************** -String _$pveNotifierHash() => r'b5da7240db1b9ee7d61f238cebca45821b7a3445'; +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint, type=warning -/// Copied from Dart SDK -class _SystemHash { - _SystemHash._(); - - static int combine(int hash, int value) { - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + value); - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); - return hash ^ (hash >> 6); - } - - static int finish(int hash) { - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); - // ignore: parameter_assignments - hash = hash ^ (hash >> 11); - return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); - } -} - -abstract class _$PveNotifier extends BuildlessAutoDisposeNotifier { - late final Spi spiParam; - - PveState build(Spi spiParam); -} - -/// See also [PveNotifier]. @ProviderFor(PveNotifier) -const pveNotifierProvider = PveNotifierFamily(); +const pveProvider = PveNotifierFamily._(); -/// See also [PveNotifier]. -class PveNotifierFamily extends Family { - /// See also [PveNotifier]. - const PveNotifierFamily(); +final class PveNotifierProvider + extends $NotifierProvider { + const PveNotifierProvider._({ + required PveNotifierFamily super.from, + required Spi super.argument, + }) : super( + retry: null, + name: r'pveProvider', + isAutoDispose: true, + dependencies: null, + $allTransitiveDependencies: null, + ); - /// See also [PveNotifier]. - PveNotifierProvider call(Spi spiParam) { - return PveNotifierProvider(spiParam); + @override + String debugGetCreateSourceHash() => _$pveNotifierHash(); + + @override + String toString() { + return r'pveProvider' + '' + '($argument)'; } + @$internal @override - PveNotifierProvider getProviderOverride( - covariant PveNotifierProvider provider, - ) { - return call(provider.spiParam); - } + PveNotifier create() => PveNotifier(); - static const Iterable? _dependencies = null; - - @override - Iterable? get dependencies => _dependencies; - - static const Iterable? _allTransitiveDependencies = null; - - @override - Iterable? get allTransitiveDependencies => - _allTransitiveDependencies; - - @override - String? get name => r'pveNotifierProvider'; -} - -/// See also [PveNotifier]. -class PveNotifierProvider - extends AutoDisposeNotifierProviderImpl { - /// See also [PveNotifier]. - PveNotifierProvider(Spi spiParam) - : this._internal( - () => PveNotifier()..spiParam = spiParam, - from: pveNotifierProvider, - name: r'pveNotifierProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$pveNotifierHash, - dependencies: PveNotifierFamily._dependencies, - allTransitiveDependencies: PveNotifierFamily._allTransitiveDependencies, - spiParam: spiParam, - ); - - PveNotifierProvider._internal( - super._createNotifier, { - required super.name, - required super.dependencies, - required super.allTransitiveDependencies, - required super.debugGetCreateSourceHash, - required super.from, - required this.spiParam, - }) : super.internal(); - - final Spi spiParam; - - @override - PveState runNotifierBuild(covariant PveNotifier notifier) { - return notifier.build(spiParam); - } - - @override - Override overrideWith(PveNotifier Function() create) { - return ProviderOverride( + /// {@macro riverpod.override_with_value} + Override overrideWithValue(PveState value) { + return $ProviderOverride( origin: this, - override: PveNotifierProvider._internal( - () => create()..spiParam = spiParam, - from: from, - name: null, - dependencies: null, - allTransitiveDependencies: null, - debugGetCreateSourceHash: null, - spiParam: spiParam, - ), + providerOverride: $SyncValueProvider(value), ); } - @override - AutoDisposeNotifierProviderElement createElement() { - return _PveNotifierProviderElement(this); - } - @override bool operator ==(Object other) { - return other is PveNotifierProvider && other.spiParam == spiParam; + return other is PveNotifierProvider && other.argument == argument; } @override int get hashCode { - var hash = _SystemHash.combine(0, runtimeType.hashCode); - hash = _SystemHash.combine(hash, spiParam.hashCode); - - return _SystemHash.finish(hash); + return argument.hashCode; } } -@Deprecated('Will be removed in 3.0. Use Ref instead') -// ignore: unused_element -mixin PveNotifierRef on AutoDisposeNotifierProviderRef { - /// The parameter `spiParam` of this provider. - Spi get spiParam; -} +String _$pveNotifierHash() => r'b5da7240db1b9ee7d61f238cebca45821b7a3445'; -class _PveNotifierProviderElement - extends AutoDisposeNotifierProviderElement - with PveNotifierRef { - _PveNotifierProviderElement(super.provider); +final class PveNotifierFamily extends $Family + with $ClassFamilyOverride { + const PveNotifierFamily._() + : super( + retry: null, + name: r'pveProvider', + dependencies: null, + $allTransitiveDependencies: null, + isAutoDispose: true, + ); + + PveNotifierProvider call(Spi spiParam) => + PveNotifierProvider._(argument: spiParam, from: this); @override - Spi get spiParam => (origin as PveNotifierProvider).spiParam; + String toString() => r'pveProvider'; } -// ignore_for_file: type=lint -// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package +abstract class _$PveNotifier extends $Notifier { + late final _$args = ref.$arg as Spi; + Spi get spiParam => _$args; + + PveState build(Spi spiParam); + @$mustCallSuper + @override + void runBuild() { + final created = build(_$args); + final ref = this.ref as $Ref; + final element = + ref.element + as $ClassProviderElement< + AnyNotifier, + PveState, + Object?, + Object? + >; + element.handleValue(ref, created); + } +} diff --git a/lib/data/provider/server/all.dart b/lib/data/provider/server/all.dart index 06e65c2f..f18a9207 100644 --- a/lib/data/provider/server/all.dart +++ b/lib/data/provider/server/all.dart @@ -98,7 +98,7 @@ class ServersNotifier extends _$ServersNotifier { if (spi != null) { final newManualDisconnected = Set.from(state.manualDisconnectedIds)..remove(spi.id); state = state.copyWith(manualDisconnectedIds: newManualDisconnected); - final serverNotifier = ref.read(serverNotifierProvider(spi.id).notifier); + final serverNotifier = ref.read(serverProvider(spi.id).notifier); await serverNotifier.refresh(); return; } @@ -109,19 +109,19 @@ class ServersNotifier extends _$ServersNotifier { final spi = entry.value; if (onlyFailed) { - final serverState = ref.read(serverNotifierProvider(serverId)); + final serverState = ref.read(serverProvider(serverId)); if (serverState.conn != ServerConn.failed) return; TryLimiter.reset(serverId); } if (state.manualDisconnectedIds.contains(serverId)) return; - final serverState = ref.read(serverNotifierProvider(serverId)); + final serverState = ref.read(serverProvider(serverId)); if (serverState.conn == ServerConn.disconnected && !spi.autoConnect) { return; } - final serverNotifier = ref.read(serverNotifierProvider(serverId).notifier); + final serverNotifier = ref.read(serverProvider(serverId).notifier); await serverNotifier.refresh(); }), ); @@ -153,7 +153,7 @@ class ServersNotifier extends _$ServersNotifier { void setDisconnected() { for (final serverId in state.servers.keys) { - final serverNotifier = ref.read(serverNotifierProvider(serverId).notifier); + final serverNotifier = ref.read(serverProvider(serverId).notifier); serverNotifier.updateConnection(ServerConn.disconnected); // Update SSH session status to disconnected @@ -180,7 +180,7 @@ class ServersNotifier extends _$ServersNotifier { return; } - final serverNotifier = ref.read(serverNotifierProvider(id).notifier); + final serverNotifier = ref.read(serverProvider(id).notifier); serverNotifier.closeConnection(); final newManualDisconnected = Set.from(state.manualDisconnectedIds)..add(id); @@ -259,7 +259,7 @@ class ServersNotifier extends _$ServersNotifier { } else { newServers[old.id] = newSpi; // Update SPI in the corresponding IndividualServerNotifier - final serverNotifier = ref.read(serverNotifierProvider(old.id).notifier); + final serverNotifier = ref.read(serverProvider(old.id).notifier); serverNotifier.updateSpi(newSpi); } diff --git a/lib/data/provider/server/all.g.dart b/lib/data/provider/server/all.g.dart index d427f43b..3ac8f018 100644 --- a/lib/data/provider/server/all.g.dart +++ b/lib/data/provider/server/all.g.dart @@ -6,21 +6,58 @@ part of 'all.dart'; // RiverpodGenerator // ************************************************************************** +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint, type=warning + +@ProviderFor(ServersNotifier) +const serversProvider = ServersNotifierProvider._(); + +final class ServersNotifierProvider + extends $NotifierProvider { + const ServersNotifierProvider._() + : super( + from: null, + argument: null, + retry: null, + name: r'serversProvider', + isAutoDispose: false, + dependencies: null, + $allTransitiveDependencies: null, + ); + + @override + String debugGetCreateSourceHash() => _$serversNotifierHash(); + + @$internal + @override + ServersNotifier create() => ServersNotifier(); + + /// {@macro riverpod.override_with_value} + Override overrideWithValue(ServersState value) { + return $ProviderOverride( + origin: this, + providerOverride: $SyncValueProvider(value), + ); + } +} + String _$serversNotifierHash() => r'2b29ad3027a203c7a20bfd0142d384a503cbbcaa'; -/// See also [ServersNotifier]. -@ProviderFor(ServersNotifier) -final serversNotifierProvider = - NotifierProvider.internal( - ServersNotifier.new, - name: r'serversNotifierProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$serversNotifierHash, - dependencies: null, - allTransitiveDependencies: null, - ); - -typedef _$ServersNotifier = Notifier; -// ignore_for_file: type=lint -// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package +abstract class _$ServersNotifier extends $Notifier { + ServersState build(); + @$mustCallSuper + @override + void runBuild() { + final created = build(); + final ref = this.ref as $Ref; + final element = + ref.element + as $ClassProviderElement< + AnyNotifier, + ServersState, + Object?, + Object? + >; + element.handleValue(ref, created); + } +} diff --git a/lib/data/provider/server/single.dart b/lib/data/provider/server/single.dart index 01e86bc4..4298a82e 100644 --- a/lib/data/provider/server/single.dart +++ b/lib/data/provider/server/single.dart @@ -45,7 +45,7 @@ abstract class ServerState with _$ServerState { class ServerNotifier extends _$ServerNotifier { @override ServerState build(String serverId) { - final serverNotifier = ref.read(serversNotifierProvider); + final serverNotifier = ref.read(serversProvider); final spi = serverNotifier.servers[serverId]; if (spi == null) { throw StateError('Server $serverId not found'); @@ -160,7 +160,7 @@ class ServerNotifier extends _$ServerNotifier { id: sessionId, spi: spi, startTimeMs: time1.millisecondsSinceEpoch, - disconnect: () => ref.read(serversNotifierProvider.notifier).closeOneServer(spi.id), + disconnect: () => ref.read(serversProvider.notifier).closeOneServer(spi.id), status: TermSessionStatus.connecting, ); TermSessionManager.setActive(sessionId, hasTerminal: false); diff --git a/lib/data/provider/server/single.g.dart b/lib/data/provider/server/single.g.dart index b5431938..14e3da84 100644 --- a/lib/data/provider/server/single.g.dart +++ b/lib/data/provider/server/single.g.dart @@ -6,156 +6,103 @@ part of 'single.dart'; // RiverpodGenerator // ************************************************************************** -String _$serverNotifierHash() => r'd9724fbe6d132f2e2ea4dfa5af73aeab168e1c57'; +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint, type=warning -/// Copied from Dart SDK -class _SystemHash { - _SystemHash._(); - - static int combine(int hash, int value) { - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + value); - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); - return hash ^ (hash >> 6); - } - - static int finish(int hash) { - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); - // ignore: parameter_assignments - hash = hash ^ (hash >> 11); - return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); - } -} - -abstract class _$ServerNotifier extends BuildlessNotifier { - late final String serverId; - - ServerState build(String serverId); -} - -/// See also [ServerNotifier]. @ProviderFor(ServerNotifier) -const serverNotifierProvider = ServerNotifierFamily(); +const serverProvider = ServerNotifierFamily._(); -/// See also [ServerNotifier]. -class ServerNotifierFamily extends Family { - /// See also [ServerNotifier]. - const ServerNotifierFamily(); +final class ServerNotifierProvider + extends $NotifierProvider { + const ServerNotifierProvider._({ + required ServerNotifierFamily super.from, + required String super.argument, + }) : super( + retry: null, + name: r'serverProvider', + isAutoDispose: false, + dependencies: null, + $allTransitiveDependencies: null, + ); - /// See also [ServerNotifier]. - ServerNotifierProvider call(String serverId) { - return ServerNotifierProvider(serverId); + @override + String debugGetCreateSourceHash() => _$serverNotifierHash(); + + @override + String toString() { + return r'serverProvider' + '' + '($argument)'; } + @$internal @override - ServerNotifierProvider getProviderOverride( - covariant ServerNotifierProvider provider, - ) { - return call(provider.serverId); - } + ServerNotifier create() => ServerNotifier(); - static const Iterable? _dependencies = null; - - @override - Iterable? get dependencies => _dependencies; - - static const Iterable? _allTransitiveDependencies = null; - - @override - Iterable? get allTransitiveDependencies => - _allTransitiveDependencies; - - @override - String? get name => r'serverNotifierProvider'; -} - -/// See also [ServerNotifier]. -class ServerNotifierProvider - extends NotifierProviderImpl { - /// See also [ServerNotifier]. - ServerNotifierProvider(String serverId) - : this._internal( - () => ServerNotifier()..serverId = serverId, - from: serverNotifierProvider, - name: r'serverNotifierProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$serverNotifierHash, - dependencies: ServerNotifierFamily._dependencies, - allTransitiveDependencies: - ServerNotifierFamily._allTransitiveDependencies, - serverId: serverId, - ); - - ServerNotifierProvider._internal( - super._createNotifier, { - required super.name, - required super.dependencies, - required super.allTransitiveDependencies, - required super.debugGetCreateSourceHash, - required super.from, - required this.serverId, - }) : super.internal(); - - final String serverId; - - @override - ServerState runNotifierBuild(covariant ServerNotifier notifier) { - return notifier.build(serverId); - } - - @override - Override overrideWith(ServerNotifier Function() create) { - return ProviderOverride( + /// {@macro riverpod.override_with_value} + Override overrideWithValue(ServerState value) { + return $ProviderOverride( origin: this, - override: ServerNotifierProvider._internal( - () => create()..serverId = serverId, - from: from, - name: null, - dependencies: null, - allTransitiveDependencies: null, - debugGetCreateSourceHash: null, - serverId: serverId, - ), + providerOverride: $SyncValueProvider(value), ); } - @override - NotifierProviderElement createElement() { - return _ServerNotifierProviderElement(this); - } - @override bool operator ==(Object other) { - return other is ServerNotifierProvider && other.serverId == serverId; + return other is ServerNotifierProvider && other.argument == argument; } @override int get hashCode { - var hash = _SystemHash.combine(0, runtimeType.hashCode); - hash = _SystemHash.combine(hash, serverId.hashCode); - - return _SystemHash.finish(hash); + return argument.hashCode; } } -@Deprecated('Will be removed in 3.0. Use Ref instead') -// ignore: unused_element -mixin ServerNotifierRef on NotifierProviderRef { - /// The parameter `serverId` of this provider. - String get serverId; -} +String _$serverNotifierHash() => r'd9724fbe6d132f2e2ea4dfa5af73aeab168e1c57'; -class _ServerNotifierProviderElement - extends NotifierProviderElement - with ServerNotifierRef { - _ServerNotifierProviderElement(super.provider); +final class ServerNotifierFamily extends $Family + with + $ClassFamilyOverride< + ServerNotifier, + ServerState, + ServerState, + ServerState, + String + > { + const ServerNotifierFamily._() + : super( + retry: null, + name: r'serverProvider', + dependencies: null, + $allTransitiveDependencies: null, + isAutoDispose: false, + ); + + ServerNotifierProvider call(String serverId) => + ServerNotifierProvider._(argument: serverId, from: this); @override - String get serverId => (origin as ServerNotifierProvider).serverId; + String toString() => r'serverProvider'; } -// ignore_for_file: type=lint -// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package +abstract class _$ServerNotifier extends $Notifier { + late final _$args = ref.$arg as String; + String get serverId => _$args; + + ServerState build(String serverId); + @$mustCallSuper + @override + void runBuild() { + final created = build(_$args); + final ref = this.ref as $Ref; + final element = + ref.element + as $ClassProviderElement< + AnyNotifier, + ServerState, + Object?, + Object? + >; + element.handleValue(ref, created); + } +} diff --git a/lib/data/provider/sftp.g.dart b/lib/data/provider/sftp.g.dart index 557ebfb7..47eb1599 100644 --- a/lib/data/provider/sftp.g.dart +++ b/lib/data/provider/sftp.g.dart @@ -6,20 +6,58 @@ part of 'sftp.dart'; // RiverpodGenerator // ************************************************************************** +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint, type=warning + +@ProviderFor(SftpNotifier) +const sftpProvider = SftpNotifierProvider._(); + +final class SftpNotifierProvider + extends $NotifierProvider { + const SftpNotifierProvider._() + : super( + from: null, + argument: null, + retry: null, + name: r'sftpProvider', + isAutoDispose: false, + dependencies: null, + $allTransitiveDependencies: null, + ); + + @override + String debugGetCreateSourceHash() => _$sftpNotifierHash(); + + @$internal + @override + SftpNotifier create() => SftpNotifier(); + + /// {@macro riverpod.override_with_value} + Override overrideWithValue(SftpState value) { + return $ProviderOverride( + origin: this, + providerOverride: $SyncValueProvider(value), + ); + } +} + String _$sftpNotifierHash() => r'f8412a4bd1f2bc5919ec31a3eba1c27e9a578f41'; -/// See also [SftpNotifier]. -@ProviderFor(SftpNotifier) -final sftpNotifierProvider = NotifierProvider.internal( - SftpNotifier.new, - name: r'sftpNotifierProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$sftpNotifierHash, - dependencies: null, - allTransitiveDependencies: null, -); - -typedef _$SftpNotifier = Notifier; -// ignore_for_file: type=lint -// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package +abstract class _$SftpNotifier extends $Notifier { + SftpState build(); + @$mustCallSuper + @override + void runBuild() { + final created = build(); + final ref = this.ref as $Ref; + final element = + ref.element + as $ClassProviderElement< + AnyNotifier, + SftpState, + Object?, + Object? + >; + element.handleValue(ref, created); + } +} diff --git a/lib/data/provider/snippet.g.dart b/lib/data/provider/snippet.g.dart index bad57609..36bc4e8b 100644 --- a/lib/data/provider/snippet.g.dart +++ b/lib/data/provider/snippet.g.dart @@ -6,21 +6,58 @@ part of 'snippet.dart'; // RiverpodGenerator // ************************************************************************** +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint, type=warning + +@ProviderFor(SnippetNotifier) +const snippetProvider = SnippetNotifierProvider._(); + +final class SnippetNotifierProvider + extends $NotifierProvider { + const SnippetNotifierProvider._() + : super( + from: null, + argument: null, + retry: null, + name: r'snippetProvider', + isAutoDispose: false, + dependencies: null, + $allTransitiveDependencies: null, + ); + + @override + String debugGetCreateSourceHash() => _$snippetNotifierHash(); + + @$internal + @override + SnippetNotifier create() => SnippetNotifier(); + + /// {@macro riverpod.override_with_value} + Override overrideWithValue(SnippetState value) { + return $ProviderOverride( + origin: this, + providerOverride: $SyncValueProvider(value), + ); + } +} + String _$snippetNotifierHash() => r'8285c7edf905a4aaa41cd8b65b0a6755c8b97fc9'; -/// See also [SnippetNotifier]. -@ProviderFor(SnippetNotifier) -final snippetNotifierProvider = - NotifierProvider.internal( - SnippetNotifier.new, - name: r'snippetNotifierProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$snippetNotifierHash, - dependencies: null, - allTransitiveDependencies: null, - ); - -typedef _$SnippetNotifier = Notifier; -// ignore_for_file: type=lint -// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package +abstract class _$SnippetNotifier extends $Notifier { + SnippetState build(); + @$mustCallSuper + @override + void runBuild() { + final created = build(); + final ref = this.ref as $Ref; + final element = + ref.element + as $ClassProviderElement< + AnyNotifier, + SnippetState, + Object?, + Object? + >; + element.handleValue(ref, created); + } +} diff --git a/lib/data/provider/systemd.dart b/lib/data/provider/systemd.dart index 5fbb97d4..3247bdf3 100644 --- a/lib/data/provider/systemd.dart +++ b/lib/data/provider/systemd.dart @@ -25,7 +25,7 @@ class SystemdNotifier extends _$SystemdNotifier { @override SystemdState build(Spi spi) { - final si = ref.read(serverNotifierProvider(spi.id)); + final si = ref.read(serverProvider(spi.id)); _si = si; // Async initialization Future.microtask(() => getUnits()); diff --git a/lib/data/provider/systemd.g.dart b/lib/data/provider/systemd.g.dart index ef4157c7..bfe90827 100644 --- a/lib/data/provider/systemd.g.dart +++ b/lib/data/provider/systemd.g.dart @@ -6,158 +6,103 @@ part of 'systemd.dart'; // RiverpodGenerator // ************************************************************************** -String _$systemdNotifierHash() => r'98466bd176518545be49cae52f8dbe12af3a88a6'; +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint, type=warning -/// Copied from Dart SDK -class _SystemHash { - _SystemHash._(); - - static int combine(int hash, int value) { - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + value); - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); - return hash ^ (hash >> 6); - } - - static int finish(int hash) { - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); - // ignore: parameter_assignments - hash = hash ^ (hash >> 11); - return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); - } -} - -abstract class _$SystemdNotifier - extends BuildlessAutoDisposeNotifier { - late final Spi spi; - - SystemdState build(Spi spi); -} - -/// See also [SystemdNotifier]. @ProviderFor(SystemdNotifier) -const systemdNotifierProvider = SystemdNotifierFamily(); +const systemdProvider = SystemdNotifierFamily._(); -/// See also [SystemdNotifier]. -class SystemdNotifierFamily extends Family { - /// See also [SystemdNotifier]. - const SystemdNotifierFamily(); +final class SystemdNotifierProvider + extends $NotifierProvider { + const SystemdNotifierProvider._({ + required SystemdNotifierFamily super.from, + required Spi super.argument, + }) : super( + retry: null, + name: r'systemdProvider', + isAutoDispose: true, + dependencies: null, + $allTransitiveDependencies: null, + ); - /// See also [SystemdNotifier]. - SystemdNotifierProvider call(Spi spi) { - return SystemdNotifierProvider(spi); + @override + String debugGetCreateSourceHash() => _$systemdNotifierHash(); + + @override + String toString() { + return r'systemdProvider' + '' + '($argument)'; } + @$internal @override - SystemdNotifierProvider getProviderOverride( - covariant SystemdNotifierProvider provider, - ) { - return call(provider.spi); - } + SystemdNotifier create() => SystemdNotifier(); - static const Iterable? _dependencies = null; - - @override - Iterable? get dependencies => _dependencies; - - static const Iterable? _allTransitiveDependencies = null; - - @override - Iterable? get allTransitiveDependencies => - _allTransitiveDependencies; - - @override - String? get name => r'systemdNotifierProvider'; -} - -/// See also [SystemdNotifier]. -class SystemdNotifierProvider - extends AutoDisposeNotifierProviderImpl { - /// See also [SystemdNotifier]. - SystemdNotifierProvider(Spi spi) - : this._internal( - () => SystemdNotifier()..spi = spi, - from: systemdNotifierProvider, - name: r'systemdNotifierProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$systemdNotifierHash, - dependencies: SystemdNotifierFamily._dependencies, - allTransitiveDependencies: - SystemdNotifierFamily._allTransitiveDependencies, - spi: spi, - ); - - SystemdNotifierProvider._internal( - super._createNotifier, { - required super.name, - required super.dependencies, - required super.allTransitiveDependencies, - required super.debugGetCreateSourceHash, - required super.from, - required this.spi, - }) : super.internal(); - - final Spi spi; - - @override - SystemdState runNotifierBuild(covariant SystemdNotifier notifier) { - return notifier.build(spi); - } - - @override - Override overrideWith(SystemdNotifier Function() create) { - return ProviderOverride( + /// {@macro riverpod.override_with_value} + Override overrideWithValue(SystemdState value) { + return $ProviderOverride( origin: this, - override: SystemdNotifierProvider._internal( - () => create()..spi = spi, - from: from, - name: null, - dependencies: null, - allTransitiveDependencies: null, - debugGetCreateSourceHash: null, - spi: spi, - ), + providerOverride: $SyncValueProvider(value), ); } - @override - AutoDisposeNotifierProviderElement - createElement() { - return _SystemdNotifierProviderElement(this); - } - @override bool operator ==(Object other) { - return other is SystemdNotifierProvider && other.spi == spi; + return other is SystemdNotifierProvider && other.argument == argument; } @override int get hashCode { - var hash = _SystemHash.combine(0, runtimeType.hashCode); - hash = _SystemHash.combine(hash, spi.hashCode); - - return _SystemHash.finish(hash); + return argument.hashCode; } } -@Deprecated('Will be removed in 3.0. Use Ref instead') -// ignore: unused_element -mixin SystemdNotifierRef on AutoDisposeNotifierProviderRef { - /// The parameter `spi` of this provider. - Spi get spi; -} +String _$systemdNotifierHash() => r'98466bd176518545be49cae52f8dbe12af3a88a6'; -class _SystemdNotifierProviderElement - extends AutoDisposeNotifierProviderElement - with SystemdNotifierRef { - _SystemdNotifierProviderElement(super.provider); +final class SystemdNotifierFamily extends $Family + with + $ClassFamilyOverride< + SystemdNotifier, + SystemdState, + SystemdState, + SystemdState, + Spi + > { + const SystemdNotifierFamily._() + : super( + retry: null, + name: r'systemdProvider', + dependencies: null, + $allTransitiveDependencies: null, + isAutoDispose: true, + ); + + SystemdNotifierProvider call(Spi spi) => + SystemdNotifierProvider._(argument: spi, from: this); @override - Spi get spi => (origin as SystemdNotifierProvider).spi; + String toString() => r'systemdProvider'; } -// ignore_for_file: type=lint -// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package +abstract class _$SystemdNotifier extends $Notifier { + late final _$args = ref.$arg as Spi; + Spi get spi => _$args; + + SystemdState build(Spi spi); + @$mustCallSuper + @override + void runBuild() { + final created = build(_$args); + final ref = this.ref as $Ref; + final element = + ref.element + as $ClassProviderElement< + AnyNotifier, + SystemdState, + Object?, + Object? + >; + element.handleValue(ref, created); + } +} diff --git a/lib/data/provider/virtual_keyboard.g.dart b/lib/data/provider/virtual_keyboard.g.dart index ffabb564..49d4e1a7 100644 --- a/lib/data/provider/virtual_keyboard.g.dart +++ b/lib/data/provider/virtual_keyboard.g.dart @@ -6,21 +6,58 @@ part of 'virtual_keyboard.dart'; // RiverpodGenerator // ************************************************************************** +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint, type=warning + +@ProviderFor(VirtKeyboard) +const virtKeyboardProvider = VirtKeyboardProvider._(); + +final class VirtKeyboardProvider + extends $NotifierProvider { + const VirtKeyboardProvider._() + : super( + from: null, + argument: null, + retry: null, + name: r'virtKeyboardProvider', + isAutoDispose: true, + dependencies: null, + $allTransitiveDependencies: null, + ); + + @override + String debugGetCreateSourceHash() => _$virtKeyboardHash(); + + @$internal + @override + VirtKeyboard create() => VirtKeyboard(); + + /// {@macro riverpod.override_with_value} + Override overrideWithValue(VirtKeyState value) { + return $ProviderOverride( + origin: this, + providerOverride: $SyncValueProvider(value), + ); + } +} + String _$virtKeyboardHash() => r'1327d412bfb0dd261f3b555f353a8852b4f753e5'; -/// See also [VirtKeyboard]. -@ProviderFor(VirtKeyboard) -final virtKeyboardProvider = - AutoDisposeNotifierProvider.internal( - VirtKeyboard.new, - name: r'virtKeyboardProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$virtKeyboardHash, - dependencies: null, - allTransitiveDependencies: null, - ); - -typedef _$VirtKeyboard = AutoDisposeNotifier; -// ignore_for_file: type=lint -// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package +abstract class _$VirtKeyboard extends $Notifier { + VirtKeyState build(); + @$mustCallSuper + @override + void runBuild() { + final created = build(); + final ref = this.ref as $Ref; + final element = + ref.element + as $ClassProviderElement< + AnyNotifier, + VirtKeyState, + Object?, + Object? + >; + element.handleValue(ref, created); + } +} diff --git a/lib/view/page/backup.dart b/lib/view/page/backup.dart index ff032118..4ff49ab3 100644 --- a/lib/view/page/backup.dart +++ b/lib/view/page/backup.dart @@ -60,7 +60,7 @@ final class _BackupPageState extends ConsumerState with AutomaticKee ], [CenterGreyTitle(libL10n.import), _buildBulkImportServers, _buildImportSnippet], ], - ); + ); } Widget get _buildBakPwd { @@ -400,7 +400,7 @@ final class _BackupPageState extends ConsumerState with AutomaticKee child: SingleChildScrollView(child: Text(libL10n.askContinue('${libL10n.import} [$snippetNames]'))), actions: Btn.ok( onTap: () { - final notifier = ref.read(snippetNotifierProvider.notifier); + final notifier = ref.read(snippetProvider.notifier); for (final snippet in snippets) { notifier.add(snippet); } diff --git a/lib/view/page/container/container.dart b/lib/view/page/container/container.dart index cd54110b..dab4b0a6 100644 --- a/lib/view/page/container/container.dart +++ b/lib/view/page/container/container.dart @@ -43,8 +43,8 @@ class _ContainerPageState extends ConsumerState { @override void initState() { super.initState(); - final serverState = ref.read(serverNotifierProvider(widget.args.spi.id)); - _provider = containerNotifierProvider( + final serverState = ref.read(serverProvider(widget.args.spi.id)); + _provider = containerProvider( serverState.client, widget.args.spi.user, widget.args.spi.id, diff --git a/lib/view/page/home.dart b/lib/view/page/home.dart index 23da02ff..4ef46fb4 100644 --- a/lib/view/page/home.dart +++ b/lib/view/page/home.dart @@ -1,4 +1,5 @@ import 'package:fl_lib/fl_lib.dart'; +import 'package:flutter/foundation.dart' show kReleaseMode; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:responsive_framework/responsive_framework.dart'; @@ -31,15 +32,19 @@ class _HomePageState extends ConsumerState bool _shouldAuth = false; DateTime? _pausedTime; - late final _notifier = ref.read(serversNotifierProvider.notifier); - late final _provider = ref.read(serversNotifierProvider); + late final _notifier = ref.read(serversProvider.notifier); + late final _provider = ref.read(serversProvider); late List _tabs = Stores.setting.homeTabs.fetch(); @override void dispose() { super.dispose(); WidgetsBinding.instance.removeObserver(this); - Future(() => _notifier.closeServer()); + // In release builds (real app exit), close connections. + // In debug (hot reload), avoid forcing disconnects. + if (kReleaseMode) { + Future(() => _notifier.closeServer()); + } _pageController.dispose(); WakelockPlus.disable(); diff --git a/lib/view/page/ping.dart b/lib/view/page/ping.dart index 9d43cf44..48ef4698 100644 --- a/lib/view/page/ping.dart +++ b/lib/view/page/ping.dart @@ -131,7 +131,7 @@ class _PingPageState extends ConsumerState with AutomaticKeepAliveClie return; } - if (ref.read(serversNotifierProvider).serverOrder.isEmpty) { + if (ref.read(serversProvider).serverOrder.isEmpty) { context.showSnackBar(l10n.pingNoServer); return; } @@ -143,8 +143,8 @@ class _PingPageState extends ConsumerState with AutomaticKeepAliveClie } await Future.wait( - ref.read(serversNotifierProvider).servers.values.map((spi) async { - final serverState = ref.read(serverNotifierProvider(spi.id)); + ref.read(serversProvider).servers.values.map((spi) async { + final serverState = ref.read(serverProvider(spi.id)); if (serverState.client == null) { return; } diff --git a/lib/view/page/private_key/edit.dart b/lib/view/page/private_key/edit.dart index 836b5530..80f0b06c 100644 --- a/lib/view/page/private_key/edit.dart +++ b/lib/view/page/private_key/edit.dart @@ -40,7 +40,7 @@ class _PrivateKeyEditPageState extends ConsumerState { final _loading = ValueNotifier(null); - late final _notifier = ref.read(privateKeyNotifierProvider.notifier); + late final _notifier = ref.read(privateKeyProvider.notifier); PrivateKeyInfo? get pki => widget.args?.pki; diff --git a/lib/view/page/private_key/list.dart b/lib/view/page/private_key/list.dart index 949a3ae0..aef8a8b7 100644 --- a/lib/view/page/private_key/list.dart +++ b/lib/view/page/private_key/list.dart @@ -32,7 +32,7 @@ class _PrivateKeyListState extends ConsumerState with After } Widget _buildBody() { - final privateKeyState = ref.watch(privateKeyNotifierProvider); + final privateKeyState = ref.watch(privateKeyProvider); final pkis = privateKeyState.keys; if (pkis.isEmpty) { diff --git a/lib/view/page/process.dart b/lib/view/page/process.dart index 592346de..2373a385 100644 --- a/lib/view/page/process.dart +++ b/lib/view/page/process.dart @@ -37,7 +37,7 @@ class _ProcessPageState extends ConsumerState { ProcSortMode _procSortMode = ProcSortMode.cpu; List _sortModes = List.from(ProcSortMode.values); - late final _provider = serverNotifierProvider(widget.args.spi.id); + late final _provider = serverProvider(widget.args.spi.id); @override void dispose() { diff --git a/lib/view/page/pve.dart b/lib/view/page/pve.dart index f83b807c..ee666a50 100644 --- a/lib/view/page/pve.dart +++ b/lib/view/page/pve.dart @@ -33,7 +33,7 @@ final class _PvePageState extends ConsumerState { late MediaQueryData _media; Timer? _timer; - late final _provider = pveNotifierProvider(widget.args.spi); + late final _provider = pveProvider(widget.args.spi); late final _notifier = ref.read(_provider.notifier); @override diff --git a/lib/view/page/server/detail/view.dart b/lib/view/page/server/detail/view.dart index 7ea2de8d..31a25243 100644 --- a/lib/view/page/server/detail/view.dart +++ b/lib/view/page/server/detail/view.dart @@ -86,7 +86,7 @@ class _ServerDetailPageState extends ConsumerState with Single @override Widget build(BuildContext context) { - final serverState = ref.watch(serverNotifierProvider(widget.args.spi.id)); + final serverState = ref.watch(serverProvider(widget.args.spi.id)); if (serverState.client == null) { return Scaffold( appBar: CustomAppBar(), diff --git a/lib/view/page/server/edit/actions.dart b/lib/view/page/server/edit/actions.dart index 7b94c2de..7b6d30c7 100644 --- a/lib/view/page/server/edit/actions.dart +++ b/lib/view/page/server/edit/actions.dart @@ -4,7 +4,7 @@ extension _Actions on _ServerEditPageState { Future _onTapSSHDiscovery() async { try { final result = await SshDiscoveryPage.route.go(context); - + if (result != null && result.isNotEmpty) { await _processDiscoveredServers(result); } @@ -37,7 +37,7 @@ extension _Actions on _ServerEditPageState { final defaultKeyId = _keyIdx.value?.toString() ?? ''; final usernameController = TextEditingController(text: defaultUsername); final keyIdController = TextEditingController(text: defaultKeyId); - + final shouldProceed = await context.showRoundDialog( title: libL10n.import, child: Column( @@ -63,18 +63,22 @@ extension _Actions on _ServerEditPageState { if (shouldProceed == true) { final username = usernameController.text.isNotEmpty ? usernameController.text : defaultUsername; final keyId = keyIdController.text.isNotEmpty ? keyIdController.text : null; - final servers = discoveredServers.map((result) => Spi( - name: result.ip, - ip: result.ip, - port: result.port, - user: username, - keyId: keyId, - pwd: _passwordController.text.isEmpty ? null : _passwordController.text, - )).toList(); + final servers = discoveredServers + .map( + (result) => Spi( + name: result.ip, + ip: result.ip, + port: result.port, + user: username, + keyId: keyId, + pwd: _passwordController.text.isEmpty ? null : _passwordController.text, + ), + ) + .toList(); await _batchImportServers(servers); } - + usernameController.dispose(); keyIdController.dispose(); } @@ -93,8 +97,9 @@ extension _Actions on _ServerEditPageState { } } context.showSnackBar('${libL10n.success}: $imported ${l10n.servers}'); - if (mounted) Navigator.of(context).pop(true); + if (mounted) context.pop(true); } + void _onTapSSHImport() async { try { final servers = await SSHConfig.parseConfig(); @@ -114,8 +119,7 @@ extension _Actions on _ServerEditPageState { void _handleImportSSHCfgPermissionIssue(Object e, StackTrace s) async { dprint('Error importing SSH config: $e'); // Check if it's a permission error and offer file picker as fallback - if (e is PathAccessException || - e.toString().contains('Operation not permitted')) { + if (e is PathAccessException || e.toString().contains('Operation not permitted')) { final useFilePicker = await context.showRoundDialog( title: l10n.sshConfigImport, child: Column( @@ -157,15 +161,10 @@ extension _Actions on _ServerEditPageState { children: [ Text(l10n.sshConfigFoundServers('${summary.total}')), if (summary.hasDuplicates) - Text( - l10n.sshConfigDuplicatesSkipped('${summary.duplicates}'), - style: UIs.textGrey, - ), + Text(l10n.sshConfigDuplicatesSkipped('${summary.duplicates}'), style: UIs.textGrey), Text(l10n.sshConfigServersToImport('${summary.toImport}')), const SizedBox(height: 16), - ...resolved.map( - (s) => Text('• ${s.name} (${s.user}@${s.ip}:${s.port})'), - ), + ...resolved.map((s) => Text('• ${s.name} (${s.user}@${s.ip}:${s.port})')), ], ), ), @@ -174,7 +173,7 @@ extension _Actions on _ServerEditPageState { if (shouldImport == true) { for (final server in resolved) { - ref.read(serversNotifierProvider.notifier).addServer(server); + ref.read(serversProvider.notifier).addServer(server); } context.showSnackBar(l10n.sshConfigImported('${resolved.length}')); } @@ -203,10 +202,7 @@ extension _Actions on _ServerEditPageState { } void _onTapCustomItem() async { - final res = await KvEditor.route.go( - context, - KvEditorArgs(data: _customCmds.value), - ); + final res = await KvEditor.route.go(context, KvEditorArgs(data: _customCmds.value)); if (res == null) return; _customCmds.value = res; } @@ -257,17 +253,10 @@ extension _Actions on _ServerEditPageState { scriptDir: _scriptDirCtrl.text.selfNotEmptyOrNull, ); - final wolEmpty = - _wolMacCtrl.text.isEmpty && - _wolIpCtrl.text.isEmpty && - _wolPwdCtrl.text.isEmpty; + final wolEmpty = _wolMacCtrl.text.isEmpty && _wolIpCtrl.text.isEmpty && _wolPwdCtrl.text.isEmpty; final wol = wolEmpty ? null - : WakeOnLanCfg( - mac: _wolMacCtrl.text, - ip: _wolIpCtrl.text, - pwd: _wolPwdCtrl.text.selfNotEmptyOrNull, - ); + : WakeOnLanCfg(mac: _wolMacCtrl.text, ip: _wolIpCtrl.text, pwd: _wolPwdCtrl.text.selfNotEmptyOrNull); if (wol != null) { final wolValidation = wol.validate(); if (!wolValidation.$2) { @@ -277,19 +266,13 @@ extension _Actions on _ServerEditPageState { } final spi = Spi( - name: _nameController.text.isEmpty - ? _ipController.text - : _nameController.text, + name: _nameController.text.isEmpty ? _ipController.text : _nameController.text, ip: _ipController.text, port: int.parse(_portController.text), user: _usernameController.text, pwd: _passwordController.text.selfNotEmptyOrNull, keyId: _keyIdx.value != null - ? ref - .read(privateKeyNotifierProvider) - .keys - .elementAt(_keyIdx.value!) - .id + ? ref.read(privateKeyProvider).keys.elementAt(_keyIdx.value!).id : null, tags: _tags.value.isEmpty ? null : _tags.value.toList(), alterUrl: _altUrlController.text.selfNotEmptyOrNull, @@ -300,9 +283,7 @@ extension _Actions on _ServerEditPageState { envs: _env.value.isEmpty ? null : _env.value, id: widget.args?.spi.id ?? ShortId.generate(), customSystemType: _systemType.value, - disabledCmdTypes: _disabledCmdTypes.value.isEmpty - ? null - : _disabledCmdTypes.value.toList(), + disabledCmdTypes: _disabledCmdTypes.value.isEmpty ? null : _disabledCmdTypes.value.toList(), ); if (this.spi == null) { @@ -311,9 +292,9 @@ extension _Actions on _ServerEditPageState { context.showSnackBar('${l10n.sameIdServerExist}: ${spi.id}'); return; } - ref.read(serversNotifierProvider.notifier).addServer(spi); + ref.read(serversProvider.notifier).addServer(spi); } else { - ref.read(serversNotifierProvider.notifier).updateServer(this.spi!, spi); + ref.read(serversProvider.notifier).updateServer(this.spi!, spi); } context.pop(); @@ -369,7 +350,7 @@ extension _Utils on _ServerEditPageState { // Import without asking again since user already gave permission for (final server in resolved) { - ref.read(serversNotifierProvider.notifier).addServer(server); + ref.read(serversProvider.notifier).addServer(server); } context.showSnackBar(l10n.sshConfigImported('${resolved.length}')); } @@ -432,10 +413,7 @@ extension _Utils on _ServerEditPageState { if (spi.keyId == null) { _passwordController.text = spi.pwd ?? ''; } else { - _keyIdx.value = ref - .read(privateKeyNotifierProvider) - .keys - .indexWhere((e) => e.id == spi.keyId); + _keyIdx.value = ref.read(privateKeyProvider).keys.indexWhere((e) => e.id == spi.keyId); } /// List in dart is passed by pointer, so you need to copy it here diff --git a/lib/view/page/server/edit/edit.dart b/lib/view/page/server/edit/edit.dart index 5989cfde..75ec62e9 100644 --- a/lib/view/page/server/edit/edit.dart +++ b/lib/view/page/server/edit/edit.dart @@ -185,7 +185,7 @@ class _ServerEditPageState extends ConsumerState with AfterLayou hint: 'root', suggestion: false, ), - TagTile(tags: _tags, allTags: ref.watch(serversNotifierProvider).tags).cardx, + TagTile(tags: _tags, allTags: ref.watch(serversProvider).tags).cardx, ListTile( title: Text(l10n.autoConnect), trailing: _autoConnect.listenVal( diff --git a/lib/view/page/server/edit/widget.dart b/lib/view/page/server/edit/widget.dart index ce0a47ea..447e9ee0 100644 --- a/lib/view/page/server/edit/widget.dart +++ b/lib/view/page/server/edit/widget.dart @@ -42,7 +42,7 @@ extension _Widgets on _ServerEditPageState { Widget _buildKeyAuth() { const padding = EdgeInsets.only(left: 13, right: 13, bottom: 7); - final privateKeyState = ref.watch(privateKeyNotifierProvider); + final privateKeyState = ref.watch(privateKeyProvider); final pkis = privateKeyState.keys; final choice = _keyIdx.listenVal((val) { @@ -350,7 +350,7 @@ extension _Widgets on _ServerEditPageState { Widget _buildJumpServer() { const padding = EdgeInsets.only(left: 13, right: 13, bottom: 7); final srvs = ref - .watch(serversNotifierProvider) + .watch(serversProvider) .servers .values .where((e) => e.jumpId == null) @@ -462,7 +462,7 @@ extension _Widgets on _ServerEditPageState { actions: Btn.ok( onTap: () async { context.pop(); - ref.read(serversNotifierProvider.notifier).delServer(spi!.id); + ref.read(serversProvider.notifier).delServer(spi!.id); context.pop(true); }, red: true, diff --git a/lib/view/page/server/tab/content.dart b/lib/view/page/server/tab/content.dart index 8feb8c2b..4a11e517 100644 --- a/lib/view/page/server/tab/content.dart +++ b/lib/view/page/server/tab/content.dart @@ -30,16 +30,16 @@ extension on _ServerPageState { const Icon(Icons.refresh, size: 21, color: Colors.grey), () { TryLimiter.reset(s.spi.id); - ref.read(serversNotifierProvider.notifier).refresh(spi: s.spi); + ref.read(serversProvider.notifier).refresh(spi: s.spi); }, ), ServerConn.disconnected => ( const Icon(MingCute.link_3_line, size: 19, color: Colors.grey), - () => ref.read(serversNotifierProvider.notifier).refresh(spi: s.spi), + () => ref.read(serversProvider.notifier).refresh(spi: s.spi), ), ServerConn.finished => ( const Icon(MingCute.unlink_2_line, size: 17, color: Colors.grey), - () => ref.read(serversNotifierProvider.notifier).closeServer(id: s.spi.id), + () => ref.read(serversProvider.notifier).closeServer(id: s.spi.id), ), }; @@ -106,7 +106,7 @@ ${ss.err?.message ?? 'null'} Widget _buildNet(ServerStatus ss, String id) { final cardNoti = _getCardNoti(id); final type = cardNoti.value.net ?? Stores.setting.netViewType.fetch(); - final device = ref.watch(serversNotifierProvider).servers[id]?.custom?.netDev; + final device = ref.watch(serversProvider).servers[id]?.custom?.netDev; final (a, b) = type.build(ss, dev: device); return AnimatedSwitcher( duration: const Duration(milliseconds: 377), diff --git a/lib/view/page/server/tab/landscape.dart b/lib/view/page/server/tab/landscape.dart index b0a91189..46257ba2 100644 --- a/lib/view/page/server/tab/landscape.dart +++ b/lib/view/page/server/tab/landscape.dart @@ -26,7 +26,7 @@ extension on _ServerPageState { } Widget _buildLandscapeBody() { - final serverState = ref.watch(serversNotifierProvider); + final serverState = ref.watch(serversProvider); final order = serverState.serverOrder; if (order.isEmpty) { @@ -37,7 +37,7 @@ extension on _ServerPageState { itemCount: order.length, itemBuilder: (_, idx) { final id = order[idx]; - final srv = ref.watch(serverNotifierProvider(id)); + final srv = ref.watch(serverProvider(id)); final title = _buildServerCardTitle(srv); final List children = [title, _buildNormalCard(srv.status, srv.spi)]; diff --git a/lib/view/page/server/tab/tab.dart b/lib/view/page/server/tab/tab.dart index 681fd2ab..eb64a21e 100644 --- a/lib/view/page/server/tab/tab.dart +++ b/lib/view/page/server/tab/tab.dart @@ -74,7 +74,7 @@ class _ServerPageState extends ConsumerState @override void initState() { super.initState(); - _tags = ValueNotifier(ref.read(serversNotifierProvider).tags); + _tags = ValueNotifier(ref.read(serversProvider).tags); _startAvoidJitterTimer(); } @@ -89,7 +89,7 @@ class _ServerPageState extends ConsumerState Widget build(BuildContext context) { super.build(context); // Listen to provider changes and update the ValueNotifier - ref.listen(serversNotifierProvider, (previous, next) { + ref.listen(serversProvider, (previous, next) { _tags.value = next.tags; }); return OrientationBuilder( @@ -133,7 +133,7 @@ class _ServerPageState extends ConsumerState Widget _buildPortrait() { // final isMobile = ResponsiveBreakpoints.of(context).isMobile; - final serverState = ref.watch(serversNotifierProvider); + final serverState = ref.watch(serversProvider); return _tag.listenVal((val) { final filtered = _filterServers(serverState.serverOrder); final child = _buildScaffold(_buildBodySmall(filtered: filtered)); @@ -183,7 +183,7 @@ class _ServerPageState extends ConsumerState // Last item is just spacing if (index == lens) return SizedBox(height: 77); - final individualState = ref.watch(serverNotifierProvider(serversInThisColumn[index])); + final individualState = ref.watch(serverProvider(serversInThisColumn[index])); return _buildEachServerCard(individualState); }, @@ -339,8 +339,8 @@ class _ServerPageState extends ConsumerState @override Future afterFirstLayout(BuildContext context) async { - ref.read(serversNotifierProvider.notifier).refresh(); - ref.read(serversNotifierProvider.notifier).startAutoRefresh(); + ref.read(serversProvider.notifier).refresh(); + ref.read(serversProvider.notifier).startAutoRefresh(); } static const _kCardHeightMin = 23.0; diff --git a/lib/view/page/server/tab/utils.dart b/lib/view/page/server/tab/utils.dart index 05f69fc4..cd4d94ee 100644 --- a/lib/view/page/server/tab/utils.dart +++ b/lib/view/page/server/tab/utils.dart @@ -98,7 +98,7 @@ extension _Utils on _ServerPageState { final tag = _tag.value; if (tag == TagSwitcher.kDefaultTag) return order; return order.where((e) { - final tags = ref.read(serversNotifierProvider).servers[e]?.tags; + final tags = ref.read(serversProvider).servers[e]?.tags; if (tags == null) return false; return tags.contains(tag); }).toList(); diff --git a/lib/view/page/setting/entries/server.dart b/lib/view/page/setting/entries/server.dart index b5416f9a..7710e66a 100644 --- a/lib/view/page/setting/entries/server.dart +++ b/lib/view/page/setting/entries/server.dart @@ -63,7 +63,7 @@ extension _Server on _AppSettingsPageState { onTap: () async { final keys = Stores.server.keys(); final names = Map.fromEntries( - keys.map((e) => MapEntry(e, ref.read(serversNotifierProvider).servers[e]?.name ?? e)), + keys.map((e) => MapEntry(e, ref.read(serversProvider).servers[e]?.name ?? e)), ); final deleteKeys = await context.showPickDialog( clearable: true, diff --git a/lib/view/page/setting/seq/srv_seq.dart b/lib/view/page/setting/seq/srv_seq.dart index f3768004..58a312a8 100644 --- a/lib/view/page/setting/seq/srv_seq.dart +++ b/lib/view/page/setting/seq/srv_seq.dart @@ -42,7 +42,7 @@ class _ServerOrderPageState extends ConsumerState { } Widget _buildBody() { - final serverState = ref.watch(serversNotifierProvider); + final serverState = ref.watch(serversProvider); final order = serverState.serverOrder; if (order.isEmpty) { @@ -77,7 +77,7 @@ class _ServerOrderPageState extends ConsumerState { } Widget _buildCardTile(int index) { - final serverState = ref.watch(serversNotifierProvider); + final serverState = ref.watch(serversProvider); final order = serverState.serverOrder; final id = order[index]; final spi = serverState.servers[id]; diff --git a/lib/view/page/snippet/edit.dart b/lib/view/page/snippet/edit.dart index 2165770c..7e394082 100644 --- a/lib/view/page/snippet/edit.dart +++ b/lib/view/page/snippet/edit.dart @@ -62,7 +62,7 @@ class _SnippetEditPageState extends ConsumerState with AfterLay child: Text(libL10n.askContinue('${libL10n.delete} ${l10n.snippet}(${snippet.name})')), actions: Btn.ok( onTap: () { - ref.read(snippetNotifierProvider.notifier).del(snippet); + ref.read(snippetProvider.notifier).del(snippet); context.pop(); context.pop(); }, @@ -96,7 +96,7 @@ class _SnippetEditPageState extends ConsumerState with AfterLay autoRunOn: _autoRunOn.value.isEmpty ? null : _autoRunOn.value, ); final oldSnippet = widget.args?.snippet; - final notifier = ref.read(snippetNotifierProvider.notifier); + final notifier = ref.read(snippetProvider.notifier); if (oldSnippet != null) { notifier.update(oldSnippet, snippet); } else { @@ -130,7 +130,7 @@ class _SnippetEditPageState extends ConsumerState with AfterLay ), Consumer( builder: (_, ref, _) { - final tags = ref.watch(snippetNotifierProvider.select((p) => p.tags)); + final tags = ref.watch(snippetProvider.select((p) => p.tags)); return TagTile(tags: _tags, allTags: tags).cardx; }, ), @@ -157,7 +157,7 @@ class _SnippetEditPageState extends ConsumerState with AfterLay builder: (vals) { final subtitle = vals.isEmpty ? null - : vals.map((e) => ref.read(serversNotifierProvider).servers[e]?.name ?? e).join(', '); + : vals.map((e) => ref.read(serversProvider).servers[e]?.name ?? e).join(', '); return ListTile( leading: const Padding( padding: EdgeInsets.only(left: 5), @@ -170,11 +170,11 @@ class _SnippetEditPageState extends ConsumerState with AfterLay : Text(subtitle, maxLines: 1, style: UIs.textGrey, overflow: TextOverflow.ellipsis), onTap: () async { // Create a filtered copy for the dialog, don't modify the original - final validServerIds = vals.where((e) => ref.read(serversNotifierProvider).serverOrder.contains(e)).toList(); + final validServerIds = vals.where((e) => ref.read(serversProvider).serverOrder.contains(e)).toList(); final serverIds = await context.showPickDialog( title: l10n.autoRun, - items: ref.read(serversNotifierProvider).serverOrder, - display: (e) => ref.read(serversNotifierProvider).servers[e]?.name ?? e, + items: ref.read(serversProvider).serverOrder, + display: (e) => ref.read(serversProvider).servers[e]?.name ?? e, initial: validServerIds, clearable: true, ); diff --git a/lib/view/page/snippet/list.dart b/lib/view/page/snippet/list.dart index 79c52565..9e564351 100644 --- a/lib/view/page/snippet/list.dart +++ b/lib/view/page/snippet/list.dart @@ -36,7 +36,7 @@ class _SnippetListPageState extends ConsumerState with Automati Widget _buildBody() { // final isMobile = ResponsiveBreakpoints.of(context).isMobile; - final snippetState = ref.watch(snippetNotifierProvider); + final snippetState = ref.watch(snippetProvider); final snippets = snippetState.snippets; return _tag.listenVal((tag) { @@ -56,7 +56,7 @@ class _SnippetListPageState extends ConsumerState with Automati } Widget _buildScaffold(List snippets, String tag) { - final snippetState = ref.watch(snippetNotifierProvider); + final snippetState = ref.watch(snippetProvider); return Scaffold( appBar: TagSwitcher( tags: snippetState.tags.vn, diff --git a/lib/view/page/ssh/page/init.dart b/lib/view/page/ssh/page/init.dart index 078e8d8e..e003682e 100644 --- a/lib/view/page/ssh/page/init.dart +++ b/lib/view/page/ssh/page/init.dart @@ -66,7 +66,7 @@ extension _Init on SSHPageState { // Mark status connected for notifications / live activities TermSessionManager.updateStatus(_sessionId, TermSessionStatus.connected); - final snippets = ref.read(snippetNotifierProvider.select((p) => p.snippets)); + final snippets = ref.read(snippetProvider.select((p) => p.snippets)); for (final snippet in snippets) { if (snippet.autoRunOn?.contains(widget.args.spi.id) == true) { snippet.runInTerm(_terminal, widget.args.spi); diff --git a/lib/view/page/ssh/page/page.dart b/lib/view/page/ssh/page/page.dart index 02862c0b..2db743e4 100644 --- a/lib/view/page/ssh/page/page.dart +++ b/lib/view/page/ssh/page/page.dart @@ -118,7 +118,7 @@ class SSHPageState extends ConsumerState _setupDiscontinuityTimer(); // Initialize client from provider - final serverState = ref.read(serverNotifierProvider(widget.args.spi.id)); + final serverState = ref.read(serverProvider(widget.args.spi.id)); _client = serverState.client; if (++_sshConnCount == 1) { diff --git a/lib/view/page/ssh/page/virt_key.dart b/lib/view/page/ssh/page/virt_key.dart index 7fb3bd00..fc6897a7 100644 --- a/lib/view/page/ssh/page/virt_key.dart +++ b/lib/view/page/ssh/page/virt_key.dart @@ -52,7 +52,7 @@ extension _VirtKey on SSHPageState { } break; case VirtualKeyFunc.snippet: - final snippetState = ref.read(snippetNotifierProvider); + final snippetState = ref.read(snippetProvider); final snippets = await context.showPickWithTagDialog( title: l10n.snippet, tags: snippetState.tags.vn, diff --git a/lib/view/page/ssh/tab.dart b/lib/view/page/ssh/tab.dart index 78b6d627..310098a1 100644 --- a/lib/view/page/ssh/tab.dart +++ b/lib/view/page/ssh/tab.dart @@ -249,7 +249,7 @@ class _AddPage extends ConsumerWidget { const viewPadding = 7.0; final viewWidth = context.windowSize.width - 2 * viewPadding; - final serverState = ref.watch(serversNotifierProvider); + final serverState = ref.watch(serversProvider); final itemCount = serverState.servers.length; const itemPadding = 1.0; const itemWidth = 150.0; diff --git a/lib/view/page/storage/local.dart b/lib/view/page/storage/local.dart index 9ae76363..52479d3c 100644 --- a/lib/view/page/storage/local.dart +++ b/lib/view/page/storage/local.dart @@ -359,7 +359,7 @@ extension _OnTapFile on _LocalFilePageState { final spi = await context.showPickSingleDialog( title: libL10n.select, - items: ref.read(serversNotifierProvider).servers.values.toList(), + items: ref.read(serversProvider).servers.values.toList(), display: (e) => e.name, ); if (spi == null) return; @@ -370,7 +370,7 @@ extension _OnTapFile on _LocalFilePageState { return; } - ref.read(sftpNotifierProvider.notifier).add(SftpReq(spi, '$remotePath/$fileName', file.absolute.path, SftpReqType.upload)); + ref.read(sftpProvider.notifier).add(SftpReq(spi, '$remotePath/$fileName', file.absolute.path, SftpReqType.upload)); context.showSnackBar(l10n.added2List); } } diff --git a/lib/view/page/storage/sftp.dart b/lib/view/page/storage/sftp.dart index ff8a9552..61d459aa 100644 --- a/lib/view/page/storage/sftp.dart +++ b/lib/view/page/storage/sftp.dart @@ -50,7 +50,7 @@ class _SftpPageState extends ConsumerState with AfterLayoutMixin { @override void initState() { super.initState(); - final serverState = ref.read(serverNotifierProvider(widget.args.spi.id)); + final serverState = ref.read(serverProvider(widget.args.spi.id)); _client = serverState.client!; _status = SftpBrowserStatus(_client); } @@ -290,7 +290,7 @@ extension _Actions on _SftpPageState { final localPath = _getLocalPath(remotePath); final completer = Completer(); final req = SftpReq(widget.args.spi, remotePath, localPath, SftpReqType.download); - ref.read(sftpNotifierProvider.notifier).add(req, completer: completer); + ref.read(sftpProvider.notifier).add(req, completer: completer); final (suc, err) = await context.showLoadingDialog(fn: () => completer.future); if (suc == null || err != null) return; @@ -300,7 +300,7 @@ extension _Actions on _SftpPageState { path: localPath, onSave: (_) { ref - .read(sftpNotifierProvider.notifier) + .read(sftpProvider.notifier) .add(SftpReq(req.spi, remotePath, localPath, SftpReqType.upload)); context.showSnackBar(l10n.added2List); }, @@ -323,7 +323,7 @@ extension _Actions on _SftpPageState { final remotePath = _getRemotePath(name); ref - .read(sftpNotifierProvider.notifier) + .read(sftpProvider.notifier) .add(SftpReq(widget.args.spi, remotePath, _getLocalPath(remotePath), SftpReqType.download)); context.pop(); @@ -653,7 +653,7 @@ extension _Actions on _SftpPageState { final remotePath = '$remoteDir/$fileName'; Loggers.app.info('SFTP upload local: $path, remote: $remotePath'); ref - .read(sftpNotifierProvider.notifier) + .read(sftpProvider.notifier) .add(SftpReq(widget.args.spi, remotePath, path, SftpReqType.upload)); }, icon: const Icon(Icons.upload_file), diff --git a/lib/view/page/storage/sftp_mission.dart b/lib/view/page/storage/sftp_mission.dart index 9928c21e..57588ace 100644 --- a/lib/view/page/storage/sftp_mission.dart +++ b/lib/view/page/storage/sftp_mission.dart @@ -25,7 +25,7 @@ class _SftpMissionPageState extends ConsumerState { } Widget _buildBody() { - final status = ref.watch(sftpNotifierProvider.select((pro) => pro.requests)); + final status = ref.watch(sftpProvider.select((pro) => pro.requests)); if (status.isEmpty) { return Center(child: Text(libL10n.empty)); } @@ -143,7 +143,7 @@ class _SftpMissionPageState extends ConsumerState { child: Text(libL10n.askContinue('${libL10n.delete} ${l10n.mission}($name)')), actions: Btn.ok( onTap: () { - ref.read(sftpNotifierProvider.notifier).cancel(id); + ref.read(sftpProvider.notifier).cancel(id); context.pop(); }, ).toList, diff --git a/lib/view/page/systemd.dart b/lib/view/page/systemd.dart index 84868c59..4c081ca8 100644 --- a/lib/view/page/systemd.dart +++ b/lib/view/page/systemd.dart @@ -19,7 +19,7 @@ final class SystemdPage extends ConsumerStatefulWidget { } final class _SystemdPageState extends ConsumerState { - late final _pro = systemdNotifierProvider(widget.args.spi); + late final _pro = systemdProvider(widget.args.spi); late final _notifier = ref.read(_pro.notifier); diff --git a/lib/view/widget/server_func_btns.dart b/lib/view/widget/server_func_btns.dart index dd3257d8..1ac4758b 100644 --- a/lib/view/widget/server_func_btns.dart +++ b/lib/view/widget/server_func_btns.dart @@ -121,7 +121,7 @@ void _onTapMoreBtns(ServerFuncBtn value, Spi spi, BuildContext context, WidgetRe break; case ServerFuncBtn.snippet: - final snippetState = ref.read(snippetNotifierProvider); + final snippetState = ref.read(snippetProvider); if (snippetState.snippets.isEmpty) { context.showSnackBar(libL10n.empty); return; @@ -273,7 +273,7 @@ void _gotoSSH(Spi spi, BuildContext context) async { } bool _checkClient(BuildContext context, String id, WidgetRef ref) { - final serverState = ref.read(serverNotifierProvider(id)); + final serverState = ref.read(serverProvider(id)); if (serverState.client == null) { context.showSnackBar(l10n.waitConnection); return false; diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 85cd8d4b..ab4ded20 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -653,7 +653,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "Server Box"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = hj_macmini_for_serverbox; + "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = serverbox_lkmm; SWIFT_VERSION = 5.0; }; name = Release; diff --git a/pubspec.lock b/pubspec.lock index 3d5804c6..1e6f0c65 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -17,6 +17,14 @@ packages: url: "https://pub.dev" source: hosted version: "7.6.0" + analyzer_buffer: + dependency: transitive + description: + name: analyzer_buffer + sha256: f7833bee67c03c37241c67f8741b17cc501b69d9758df7a5a4a13ed6c947be43 + url: "https://pub.dev" + source: hosted + version: "0.1.10" analyzer_plugin: dependency: transitive description: @@ -117,10 +125,10 @@ packages: dependency: transitive description: name: build - sha256: "51dc711996cbf609b90cbe5b335bbce83143875a9d58e4b5c6d3c4f684d3dda7" + sha256: "7d95cbbb1526ab5ae977df9b4cc660963b9b27f6d1075c0b34653868911385e4" url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "3.0.0" build_config: dependency: transitive description: @@ -141,26 +149,26 @@ packages: dependency: transitive description: name: build_resolvers - sha256: ee4257b3f20c0c90e72ed2b57ad637f694ccba48839a821e87db762548c22a62 + sha256: "38c9c339333a09b090a638849a4c56e70a404c6bdd3b511493addfbc113b60c2" url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "3.0.0" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "382a4d649addbfb7ba71a3631df0ec6a45d5ab9b098638144faf27f02778eb53" + sha256: b971d4a1c789eba7be3e6fe6ce5e5b50fd3719e3cb485b3fad6d04358304351d url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "2.6.0" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: "85fbbb1036d576d966332a3f5ce83f2ce66a40bea1a94ad2d5fc29a19a0d3792" + sha256: c04e612ca801cd0928ccdb891c263a2b1391cb27940a5ea5afcf9ba894de5d62 url: "https://pub.dev" source: hosted - version: "9.1.2" + version: "9.2.0" built_collection: dependency: transitive description: @@ -343,10 +351,10 @@ packages: dependency: transitive description: name: custom_lint_core - sha256: "31110af3dde9d29fb10828ca33f1dce24d2798477b167675543ce3d208dee8be" + sha256: cc4684d22ca05bf0a4a51127e19a8aea576b42079ed2bc9e956f11aaebe35dd1 url: "https://pub.dev" source: hosted - version: "0.7.5" + version: "0.8.0" custom_lint_visitor: dependency: transitive description: @@ -496,11 +504,9 @@ packages: fl_lib: dependency: "direct main" description: - path: "." - ref: "v1.0.349" - resolved-ref: "77971814f0d7624c9473d4f6ed796c0166d0828b" - url: "https://github.com/lppcg/fl_lib" - source: git + path: "../fl_lib" + relative: true + source: path version: "0.0.1" flutter: dependency: "direct main" @@ -511,10 +517,10 @@ packages: dependency: "direct main" description: name: flutter_displaymode - sha256: "42c5e9abd13d28ed74f701b60529d7f8416947e58256e6659c5550db719c57ef" + sha256: ecd44b1e902b0073b42ff5b55bf283f38e088270724cdbb7f7065ccf54aa60a8 url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.7.0" flutter_gbk2utf8: dependency: "direct main" description: @@ -588,10 +594,10 @@ packages: dependency: "direct main" description: name: flutter_riverpod - sha256: "9532ee6db4a943a1ed8383072a2e3eeda041db5657cdf6d2acecf3c21ecbe7e1" + sha256: "71a420767ae786f9402e4efb74e1119fa95b53e6a3781ab8ab21c121ac1349c6" url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "3.0.1" flutter_secure_storage: dependency: transitive description: @@ -640,6 +646,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.2" + flutter_staggered_grid_view: + dependency: transitive + description: + name: flutter_staggered_grid_view + sha256: "19e7abb550c96fbfeb546b23f3ff356ee7c59a019a651f8f102a4ba9b7349395" + url: "https://pub.dev" + source: hosted + version: "0.7.0" flutter_svg: dependency: transitive description: @@ -662,10 +676,10 @@ packages: dependency: "direct dev" description: name: freezed - sha256: "2d399f823b8849663744d2a9ddcce01c49268fb4170d0442a655bf6a2f47be22" + sha256: "13065f10e135263a4f5a4391b79a8efc5fb8106f8dd555a9e49b750b45393d77" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.2.3" freezed_annotation: dependency: "direct main" description: @@ -743,10 +757,10 @@ packages: dependency: "direct dev" description: name: hive_ce_generator - sha256: "609678c10ebee7503505a0007050af40a0a4f498b1fb7def3220df341e573a89" + sha256: a169feeff2da9cc2c417ce5ae9bcebf7c8a95d7a700492b276909016ad70a786 url: "https://pub.dev" source: hosted - version: "1.9.2" + version: "1.9.3" html: dependency: transitive description: @@ -871,10 +885,10 @@ packages: dependency: "direct dev" description: name: json_serializable - sha256: c50ef5fc083d5b5e12eef489503ba3bf5ccc899e487d691584699b4bdefeea8c + sha256: "33a040668b31b320aafa4822b7b1e177e163fc3c1e835c6750319d4ab23aa6fe" url: "https://pub.dev" source: hosted - version: "6.9.5" + version: "6.11.1" leak_tracker: dependency: transitive description: @@ -1003,6 +1017,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" + mockito: + dependency: transitive + description: + name: mockito + sha256: "2314cbe9165bcd16106513df9cf3c3224713087f09723b128928dc11a4379f99" + url: "https://pub.dev" + source: hosted + version: "5.5.0" multi_split_view: dependency: transitive description: @@ -1248,10 +1270,10 @@ packages: dependency: "direct main" description: name: re_editor - sha256: "17e430f0591dd361992ec2dd6f69191c1853fa46e05432e095310a8f82ee820e" + sha256: dd4e6ca7350a8fa0cda4e425b82a0c3c010f0f6b3f618c74223e05b8129ab629 url: "https://pub.dev" source: hosted - version: "0.7.0" + version: "0.8.0" re_highlight: dependency: transitive description: @@ -1272,34 +1294,34 @@ packages: dependency: transitive description: name: riverpod - sha256: "59062512288d3056b2321804332a13ffdd1bf16df70dcc8e506e411280a72959" + sha256: b21446f04474040479b19004c5b729605cde221bbd14cf16ad0db8804dce4810 url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "3.0.1" riverpod_analyzer_utils: dependency: transitive description: name: riverpod_analyzer_utils - sha256: "03a17170088c63aab6c54c44456f5ab78876a1ddb6032ffde1662ddab4959611" + sha256: a0f68adb078b790faa3c655110a017f9a7b7b079a57bbd40f540e80dce5fcd29 url: "https://pub.dev" source: hosted - version: "0.5.10" + version: "1.0.0-dev.7" riverpod_annotation: dependency: "direct main" description: name: riverpod_annotation - sha256: e14b0bf45b71326654e2705d462f21b958f987087be850afd60578fcd502d1b8 + sha256: d8154e04008b98015ee3e0514a5d929e3d15605790d28bcd74e63e2d415632a1 url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "3.0.1" riverpod_generator: dependency: "direct dev" description: name: riverpod_generator - sha256: "44a0992d54473eb199ede00e2260bd3c262a86560e3c6f6374503d86d0580e36" + sha256: af92fa4051568071f7e12bd44b8b4f3adc7470e3676bd5ac953582a9cce4a1c0 url: "https://pub.dev" source: hosted - version: "2.6.5" + version: "3.0.1" screen_retriever: dependency: transitive description: @@ -1352,10 +1374,10 @@ packages: dependency: transitive description: name: share_plus - sha256: d7dc0630a923883c6328ca31b89aa682bacbf2f8304162d29f7c6aaff03a27a1 + sha256: "3424e9d5c22fd7f7590254ba09465febd6f8827c8b19a44350de4ac31d92d3a6" url: "https://pub.dev" source: hosted - version: "11.1.0" + version: "12.0.0" share_plus_platform_interface: dependency: transitive description: @@ -1461,10 +1483,10 @@ packages: dependency: transitive description: name: source_gen - sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b" + sha256: "7b19d6ba131c6eb98bfcbf8d56c1a7002eba438af2e7ae6f8398b2b0f4f381e3" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "3.1.0" source_helper: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index ee91b290..644f700e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -19,9 +19,9 @@ dependencies: easy_isolate: ^1.3.0 extended_image: ^10.0.0 file_picker: ^10.1.9 - flutter_riverpod: ^2.6.1 + flutter_riverpod: ^3.0.1 flutter_highlight: ^0.7.0 - flutter_displaymode: ^0.6.0 + flutter_displaymode: ^0.7.0 fl_chart: ^1.0.0 freezed_annotation: ^3.0.0 highlight: ^0.7.0 @@ -29,8 +29,8 @@ dependencies: intl: ^0.20.2 json_annotation: ^4.9.0 responsive_framework: ^1.5.1 - re_editor: ^0.7.0 - riverpod_annotation: ^2.6.1 + re_editor: ^0.8.0 + riverpod_annotation: ^3.0.1 shared_preferences: ^2.1.1 wakelock_plus: ^1.2.4 wake_on_lan: ^4.1.1+3 @@ -74,8 +74,8 @@ dependency_overrides: # path: ../dartssh2 # xterm: # path: ../xterm.dart - # fl_lib: - # path: ../fl_lib + fl_lib: + path: ../fl_lib # fl_build: # path: ../fl_build gtk: # TODO: remove it after fixed in upstream @@ -91,7 +91,7 @@ dev_dependencies: flutter_lints: ^6.0.0 json_serializable: ^6.8.0 freezed: ^3.0.0 - riverpod_generator: ^2.6.1 + riverpod_generator: ^3.0.1 test: ^1.24.0 flutter_test: sdk: flutter