migrate: riverpod 3

This commit is contained in:
lollipopkit🏳️‍⚧️
2025-10-08 17:03:13 +08:00
parent f68c4a851b
commit da8517bcf7
51 changed files with 840 additions and 884 deletions

View File

@@ -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: history, store: Stores.history, force: force);
await Mergeable.mergeStore(backupData: settings, store: Stores.setting, force: force); await Mergeable.mergeStore(backupData: settings, store: Stores.setting, force: force);
if (serverChanged) GlobalRef.gRef?.read(serversNotifierProvider.notifier).reload(); if (serverChanged) GlobalRef.gRef?.read(serversProvider.notifier).reload();
if (snippetChanged) GlobalRef.gRef?.read(snippetNotifierProvider.notifier).reload(); if (snippetChanged) GlobalRef.gRef?.read(snippetProvider.notifier).reload();
if (keyChanged) GlobalRef.gRef?.read(privateKeyNotifierProvider.notifier).reload(); if (keyChanged) GlobalRef.gRef?.read(privateKeyProvider.notifier).reload();
_loggerV2.info('Merge completed'); _loggerV2.info('Merge completed');
} }

View File

@@ -20,11 +20,11 @@ ServerCustom _$ServerCustomFromJson(Map<String, dynamic> json) => ServerCustom(
Map<String, dynamic> _$ServerCustomToJson(ServerCustom instance) => Map<String, dynamic> _$ServerCustomToJson(ServerCustom instance) =>
<String, dynamic>{ <String, dynamic>{
if (instance.pveAddr case final value?) 'pveAddr': value, 'pveAddr': ?instance.pveAddr,
'pveIgnoreCert': instance.pveIgnoreCert, 'pveIgnoreCert': instance.pveIgnoreCert,
if (instance.cmds case final value?) 'cmds': value, 'cmds': ?instance.cmds,
if (instance.preferTempDev case final value?) 'preferTempDev': value, 'preferTempDev': ?instance.preferTempDev,
if (instance.logoUrl case final value?) 'logoUrl': value, 'logoUrl': ?instance.logoUrl,
if (instance.netDev case final value?) 'netDev': value, 'netDev': ?instance.netDev,
if (instance.scriptDir case final value?) 'scriptDir': value, 'scriptDir': ?instance.scriptDir,
}; };

View File

@@ -41,19 +41,18 @@ Map<String, dynamic> _$SpiToJson(_Spi instance) => <String, dynamic>{
'ip': instance.ip, 'ip': instance.ip,
'port': instance.port, 'port': instance.port,
'user': instance.user, 'user': instance.user,
if (instance.pwd case final value?) 'pwd': value, 'pwd': ?instance.pwd,
if (instance.keyId case final value?) 'pubKeyId': value, 'pubKeyId': ?instance.keyId,
if (instance.tags case final value?) 'tags': value, 'tags': ?instance.tags,
if (instance.alterUrl case final value?) 'alterUrl': value, 'alterUrl': ?instance.alterUrl,
'autoConnect': instance.autoConnect, 'autoConnect': instance.autoConnect,
if (instance.jumpId case final value?) 'jumpId': value, 'jumpId': ?instance.jumpId,
if (instance.custom case final value?) 'custom': value, 'custom': ?instance.custom,
if (instance.wolCfg case final value?) 'wolCfg': value, 'wolCfg': ?instance.wolCfg,
if (instance.envs case final value?) 'envs': value, 'envs': ?instance.envs,
'id': instance.id, 'id': instance.id,
if (_$SystemTypeEnumMap[instance.customSystemType] case final value?) 'customSystemType': ?_$SystemTypeEnumMap[instance.customSystemType],
'customSystemType': value, 'disabledCmdTypes': ?instance.disabledCmdTypes,
if (instance.disabledCmdTypes case final value?) 'disabledCmdTypes': value,
}; };
const _$SystemTypeEnumMap = { const _$SystemTypeEnumMap = {

View File

@@ -16,5 +16,5 @@ Map<String, dynamic> _$WakeOnLanCfgToJson(WakeOnLanCfg instance) =>
<String, dynamic>{ <String, dynamic>{
'mac': instance.mac, 'mac': instance.mac,
'ip': instance.ip, 'ip': instance.ip,
if (instance.pwd case final value?) 'pwd': value, 'pwd': ?instance.pwd,
}; };

View File

@@ -6,20 +6,57 @@ part of 'app.dart';
// RiverpodGenerator // 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<AppStates, AppState> {
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<AppState>(value),
);
}
}
String _$appStatesHash() => r'ef96f10f6fff0f3dd6d3128ebf070ad79cbc8bc9'; String _$appStatesHash() => r'ef96f10f6fff0f3dd6d3128ebf070ad79cbc8bc9';
/// See also [AppStates]. abstract class _$AppStates extends $Notifier<AppState> {
@ProviderFor(AppStates) AppState build();
final appStatesProvider = NotifierProvider<AppStates, AppState>.internal( @$mustCallSuper
AppStates.new, @override
name: r'appStatesProvider', void runBuild() {
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') final created = build();
? null final ref = this.ref as $Ref<AppState, AppState>;
: _$appStatesHash, final element =
dependencies: null, ref.element
allTransitiveDependencies: null, as $ClassProviderElement<
); AnyNotifier<AppState, AppState>,
AppState,
typedef _$AppStates = Notifier<AppState>; Object?,
// ignore_for_file: type=lint Object?
// 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 >;
element.handleValue(ref, created);
}
}

View File

@@ -6,35 +6,98 @@ part of 'container.dart';
// RiverpodGenerator // RiverpodGenerator
// ************************************************************************** // **************************************************************************
String _$containerNotifierHash() => r'fea65e66499234b0a59bffff8d69c4ab8c93b2fd'; // GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint, type=warning
/// Copied from Dart SDK @ProviderFor(ContainerNotifier)
class _SystemHash { const containerProvider = ContainerNotifierFamily._();
_SystemHash._();
static int combine(int hash, int value) { final class ContainerNotifierProvider
// ignore: parameter_assignments extends $NotifierProvider<ContainerNotifier, ContainerState> {
hash = 0x1fffffff & (hash + value); const ContainerNotifierProvider._({
// ignore: parameter_assignments required ContainerNotifierFamily super.from,
hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); required (SSHClient?, String, String, BuildContext) super.argument,
return hash ^ (hash >> 6); }) : 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) { @$internal
// ignore: parameter_assignments @override
hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); ContainerNotifier create() => ContainerNotifier();
// ignore: parameter_assignments
hash = hash ^ (hash >> 11); /// {@macro riverpod.override_with_value}
return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); Override overrideWithValue(ContainerState value) {
return $ProviderOverride(
origin: this,
providerOverride: $SyncValueProvider<ContainerState>(value),
);
}
@override
bool operator ==(Object other) {
return other is ContainerNotifierProvider && other.argument == argument;
}
@override
int get hashCode {
return argument.hashCode;
} }
} }
abstract class _$ContainerNotifier String _$containerNotifierHash() => r'fea65e66499234b0a59bffff8d69c4ab8c93b2fd';
extends BuildlessAutoDisposeNotifier<ContainerState> {
late final SSHClient? client; final class ContainerNotifierFamily extends $Family
late final String userName; with
late final String hostId; $ClassFamilyOverride<
late final BuildContext context; 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<ContainerState> {
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( ContainerState build(
SSHClient? client, SSHClient? client,
@@ -42,187 +105,19 @@ abstract class _$ContainerNotifier
String hostId, String hostId,
BuildContext context, BuildContext context,
); );
} @$mustCallSuper
/// See also [ContainerNotifier].
@ProviderFor(ContainerNotifier)
const containerNotifierProvider = ContainerNotifierFamily();
/// See also [ContainerNotifier].
class ContainerNotifierFamily extends Family<ContainerState> {
/// See also [ContainerNotifier].
const ContainerNotifierFamily();
/// See also [ContainerNotifier].
ContainerNotifierProvider call(
SSHClient? client,
String userName,
String hostId,
BuildContext context,
) {
return ContainerNotifierProvider(client, userName, hostId, context);
}
@override @override
ContainerNotifierProvider getProviderOverride( void runBuild() {
covariant ContainerNotifierProvider provider, final created = build(_$args.$1, _$args.$2, _$args.$3, _$args.$4);
) { final ref = this.ref as $Ref<ContainerState, ContainerState>;
return call( final element =
provider.client, ref.element
provider.userName, as $ClassProviderElement<
provider.hostId, AnyNotifier<ContainerState, ContainerState>,
provider.context, ContainerState,
); Object?,
} Object?
>;
static const Iterable<ProviderOrFamily>? _dependencies = null; element.handleValue(ref, created);
@override
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
@override
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
_allTransitiveDependencies;
@override
String? get name => r'containerNotifierProvider';
}
/// See also [ContainerNotifier].
class ContainerNotifierProvider
extends AutoDisposeNotifierProviderImpl<ContainerNotifier, ContainerState> {
/// 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<ContainerNotifier, ContainerState>
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);
} }
} }
@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
mixin ContainerNotifierRef on AutoDisposeNotifierProviderRef<ContainerState> {
/// 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<ContainerNotifier, ContainerState>
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

View File

@@ -6,22 +6,59 @@ part of 'private_key.dart';
// RiverpodGenerator // 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<PrivateKeyNotifier, PrivateKeyState> {
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<PrivateKeyState>(value),
);
}
}
String _$privateKeyNotifierHash() => String _$privateKeyNotifierHash() =>
r'12edd05dca29d1cbc9e2a3e047c3d417d22f7bb7'; r'12edd05dca29d1cbc9e2a3e047c3d417d22f7bb7';
/// See also [PrivateKeyNotifier]. abstract class _$PrivateKeyNotifier extends $Notifier<PrivateKeyState> {
@ProviderFor(PrivateKeyNotifier) PrivateKeyState build();
final privateKeyNotifierProvider = @$mustCallSuper
NotifierProvider<PrivateKeyNotifier, PrivateKeyState>.internal( @override
PrivateKeyNotifier.new, void runBuild() {
name: r'privateKeyNotifierProvider', final created = build();
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') final ref = this.ref as $Ref<PrivateKeyState, PrivateKeyState>;
? null final element =
: _$privateKeyNotifierHash, ref.element
dependencies: null, as $ClassProviderElement<
allTransitiveDependencies: null, AnyNotifier<PrivateKeyState, PrivateKeyState>,
); PrivateKeyState,
Object?,
typedef _$PrivateKeyNotifier = Notifier<PrivateKeyState>; Object?
// 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 element.handleValue(ref, created);
}
}

View File

@@ -1,4 +1,5 @@
import 'package:flutter_riverpod/flutter_riverpod.dart'; 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/app.dart';
import 'package:server_box/data/provider/private_key.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 /// ref.useNotifier, ref.readProvider, ref.watchProvider
/// ///
/// Usage: /// Usage:
/// - `providers.read.server` -> `ref.read(serversNotifierProvider)` /// - `providers.read.server` -> `ref.read(serversProvider)`
/// - `providers.use.snippet` -> `ref.read(snippetsNotifierProvider.notifier)` /// - `providers.use.snippet` -> `ref.read(snippetsNotifierProvider.notifier)`
extension RiverpodNotifiers on ConsumerState { extension RiverpodNotifiers on ConsumerState {
@@ -45,11 +46,11 @@ final class ReadMyProvider {
T call<T>(ProviderBase<T> provider) => ref.read(provider); T call<T>(ProviderBase<T> provider) => ref.read(provider);
// Specific provider getters // Specific provider getters
ServersState get server => ref.read(serversNotifierProvider); ServersState get server => ref.read(serversProvider);
SnippetState get snippet => ref.read(snippetNotifierProvider); SnippetState get snippet => ref.read(snippetProvider);
AppState get app => ref.read(appStatesProvider); AppState get app => ref.read(appStatesProvider);
PrivateKeyState get privateKey => ref.read(privateKeyNotifierProvider); PrivateKeyState get privateKey => ref.read(privateKeyProvider);
SftpState get sftp => ref.read(sftpNotifierProvider); SftpState get sftp => ref.read(sftpProvider);
} }
final class WatchMyProvider { final class WatchMyProvider {
@@ -59,11 +60,11 @@ final class WatchMyProvider {
T call<T>(ProviderBase<T> provider) => ref.watch(provider); T call<T>(ProviderBase<T> provider) => ref.watch(provider);
// Specific provider getters // Specific provider getters
ServersState get server => ref.watch(serversNotifierProvider); ServersState get server => ref.watch(serversProvider);
SnippetState get snippet => ref.watch(snippetNotifierProvider); SnippetState get snippet => ref.watch(snippetProvider);
AppState get app => ref.watch(appStatesProvider); AppState get app => ref.watch(appStatesProvider);
PrivateKeyState get privateKey => ref.watch(privateKeyNotifierProvider); PrivateKeyState get privateKey => ref.watch(privateKeyProvider);
SftpState get sftp => ref.watch(sftpNotifierProvider); SftpState get sftp => ref.watch(sftpProvider);
} }
final class UseNotifierMyProvider { final class UseNotifierMyProvider {
@@ -74,9 +75,9 @@ final class UseNotifierMyProvider {
ref.read(provider.notifier); ref.read(provider.notifier);
// Specific provider notifier getters // Specific provider notifier getters
ServersNotifier get server => ref.read(serversNotifierProvider.notifier); ServersNotifier get server => ref.read(serversProvider.notifier);
SnippetNotifier get snippet => ref.read(snippetNotifierProvider.notifier); SnippetNotifier get snippet => ref.read(snippetProvider.notifier);
AppStates get app => ref.read(appStatesProvider.notifier); AppStates get app => ref.read(appStatesProvider.notifier);
PrivateKeyNotifier get privateKey => ref.read(privateKeyNotifierProvider.notifier); PrivateKeyNotifier get privateKey => ref.read(privateKeyProvider.notifier);
SftpNotifier get sftp => ref.read(sftpNotifierProvider.notifier); SftpNotifier get sftp => ref.read(sftpProvider.notifier);
} }

View File

@@ -45,7 +45,7 @@ class PveNotifier extends _$PveNotifier {
@override @override
PveState build(Spi spiParam) { PveState build(Spi spiParam) {
spi = spiParam; spi = spiParam;
final serverState = ref.watch(serverNotifierProvider(spi.id)); final serverState = ref.watch(serverProvider(spi.id));
final client = serverState.client; final client = serverState.client;
if (client == null) { if (client == null) {
return const PveState(error: PveErr(type: PveErrType.net, message: 'Server client is null')); return const PveState(error: PveErr(type: PveErrType.net, message: 'Server client is null'));

View File

@@ -6,155 +6,96 @@ part of 'pve.dart';
// RiverpodGenerator // 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<PveState> {
late final Spi spiParam;
PveState build(Spi spiParam);
}
/// See also [PveNotifier].
@ProviderFor(PveNotifier) @ProviderFor(PveNotifier)
const pveNotifierProvider = PveNotifierFamily(); const pveProvider = PveNotifierFamily._();
/// See also [PveNotifier]. final class PveNotifierProvider
class PveNotifierFamily extends Family<PveState> { extends $NotifierProvider<PveNotifier, PveState> {
/// See also [PveNotifier]. const PveNotifierProvider._({
const PveNotifierFamily(); required PveNotifierFamily super.from,
required Spi super.argument,
}) : super(
retry: null,
name: r'pveProvider',
isAutoDispose: true,
dependencies: null,
$allTransitiveDependencies: null,
);
/// See also [PveNotifier]. @override
PveNotifierProvider call(Spi spiParam) { String debugGetCreateSourceHash() => _$pveNotifierHash();
return PveNotifierProvider(spiParam);
@override
String toString() {
return r'pveProvider'
''
'($argument)';
} }
@$internal
@override @override
PveNotifierProvider getProviderOverride( PveNotifier create() => PveNotifier();
covariant PveNotifierProvider provider,
) {
return call(provider.spiParam);
}
static const Iterable<ProviderOrFamily>? _dependencies = null; /// {@macro riverpod.override_with_value}
Override overrideWithValue(PveState value) {
@override return $ProviderOverride(
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
@override
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
_allTransitiveDependencies;
@override
String? get name => r'pveNotifierProvider';
}
/// See also [PveNotifier].
class PveNotifierProvider
extends AutoDisposeNotifierProviderImpl<PveNotifier, PveState> {
/// 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(
origin: this, origin: this,
override: PveNotifierProvider._internal( providerOverride: $SyncValueProvider<PveState>(value),
() => create()..spiParam = spiParam,
from: from,
name: null,
dependencies: null,
allTransitiveDependencies: null,
debugGetCreateSourceHash: null,
spiParam: spiParam,
),
); );
} }
@override
AutoDisposeNotifierProviderElement<PveNotifier, PveState> createElement() {
return _PveNotifierProviderElement(this);
}
@override @override
bool operator ==(Object other) { bool operator ==(Object other) {
return other is PveNotifierProvider && other.spiParam == spiParam; return other is PveNotifierProvider && other.argument == argument;
} }
@override @override
int get hashCode { int get hashCode {
var hash = _SystemHash.combine(0, runtimeType.hashCode); return argument.hashCode;
hash = _SystemHash.combine(hash, spiParam.hashCode);
return _SystemHash.finish(hash);
} }
} }
@Deprecated('Will be removed in 3.0. Use Ref instead') String _$pveNotifierHash() => r'b5da7240db1b9ee7d61f238cebca45821b7a3445';
// ignore: unused_element
mixin PveNotifierRef on AutoDisposeNotifierProviderRef<PveState> {
/// The parameter `spiParam` of this provider.
Spi get spiParam;
}
class _PveNotifierProviderElement final class PveNotifierFamily extends $Family
extends AutoDisposeNotifierProviderElement<PveNotifier, PveState> with $ClassFamilyOverride<PveNotifier, PveState, PveState, PveState, Spi> {
with PveNotifierRef { const PveNotifierFamily._()
_PveNotifierProviderElement(super.provider); : super(
retry: null,
name: r'pveProvider',
dependencies: null,
$allTransitiveDependencies: null,
isAutoDispose: true,
);
PveNotifierProvider call(Spi spiParam) =>
PveNotifierProvider._(argument: spiParam, from: this);
@override @override
Spi get spiParam => (origin as PveNotifierProvider).spiParam; String toString() => r'pveProvider';
} }
// ignore_for_file: type=lint abstract class _$PveNotifier extends $Notifier<PveState> {
// 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 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<PveState, PveState>;
final element =
ref.element
as $ClassProviderElement<
AnyNotifier<PveState, PveState>,
PveState,
Object?,
Object?
>;
element.handleValue(ref, created);
}
}

View File

@@ -98,7 +98,7 @@ class ServersNotifier extends _$ServersNotifier {
if (spi != null) { if (spi != null) {
final newManualDisconnected = Set<String>.from(state.manualDisconnectedIds)..remove(spi.id); final newManualDisconnected = Set<String>.from(state.manualDisconnectedIds)..remove(spi.id);
state = state.copyWith(manualDisconnectedIds: newManualDisconnected); state = state.copyWith(manualDisconnectedIds: newManualDisconnected);
final serverNotifier = ref.read(serverNotifierProvider(spi.id).notifier); final serverNotifier = ref.read(serverProvider(spi.id).notifier);
await serverNotifier.refresh(); await serverNotifier.refresh();
return; return;
} }
@@ -109,19 +109,19 @@ class ServersNotifier extends _$ServersNotifier {
final spi = entry.value; final spi = entry.value;
if (onlyFailed) { if (onlyFailed) {
final serverState = ref.read(serverNotifierProvider(serverId)); final serverState = ref.read(serverProvider(serverId));
if (serverState.conn != ServerConn.failed) return; if (serverState.conn != ServerConn.failed) return;
TryLimiter.reset(serverId); TryLimiter.reset(serverId);
} }
if (state.manualDisconnectedIds.contains(serverId)) return; 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) { if (serverState.conn == ServerConn.disconnected && !spi.autoConnect) {
return; return;
} }
final serverNotifier = ref.read(serverNotifierProvider(serverId).notifier); final serverNotifier = ref.read(serverProvider(serverId).notifier);
await serverNotifier.refresh(); await serverNotifier.refresh();
}), }),
); );
@@ -153,7 +153,7 @@ class ServersNotifier extends _$ServersNotifier {
void setDisconnected() { void setDisconnected() {
for (final serverId in state.servers.keys) { 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); serverNotifier.updateConnection(ServerConn.disconnected);
// Update SSH session status to disconnected // Update SSH session status to disconnected
@@ -180,7 +180,7 @@ class ServersNotifier extends _$ServersNotifier {
return; return;
} }
final serverNotifier = ref.read(serverNotifierProvider(id).notifier); final serverNotifier = ref.read(serverProvider(id).notifier);
serverNotifier.closeConnection(); serverNotifier.closeConnection();
final newManualDisconnected = Set<String>.from(state.manualDisconnectedIds)..add(id); final newManualDisconnected = Set<String>.from(state.manualDisconnectedIds)..add(id);
@@ -259,7 +259,7 @@ class ServersNotifier extends _$ServersNotifier {
} else { } else {
newServers[old.id] = newSpi; newServers[old.id] = newSpi;
// Update SPI in the corresponding IndividualServerNotifier // 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); serverNotifier.updateSpi(newSpi);
} }

View File

@@ -6,21 +6,58 @@ part of 'all.dart';
// RiverpodGenerator // 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<ServersNotifier, ServersState> {
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<ServersState>(value),
);
}
}
String _$serversNotifierHash() => r'2b29ad3027a203c7a20bfd0142d384a503cbbcaa'; String _$serversNotifierHash() => r'2b29ad3027a203c7a20bfd0142d384a503cbbcaa';
/// See also [ServersNotifier]. abstract class _$ServersNotifier extends $Notifier<ServersState> {
@ProviderFor(ServersNotifier) ServersState build();
final serversNotifierProvider = @$mustCallSuper
NotifierProvider<ServersNotifier, ServersState>.internal( @override
ServersNotifier.new, void runBuild() {
name: r'serversNotifierProvider', final created = build();
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') final ref = this.ref as $Ref<ServersState, ServersState>;
? null final element =
: _$serversNotifierHash, ref.element
dependencies: null, as $ClassProviderElement<
allTransitiveDependencies: null, AnyNotifier<ServersState, ServersState>,
); ServersState,
Object?,
typedef _$ServersNotifier = Notifier<ServersState>; Object?
// 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 element.handleValue(ref, created);
}
}

View File

@@ -45,7 +45,7 @@ abstract class ServerState with _$ServerState {
class ServerNotifier extends _$ServerNotifier { class ServerNotifier extends _$ServerNotifier {
@override @override
ServerState build(String serverId) { ServerState build(String serverId) {
final serverNotifier = ref.read(serversNotifierProvider); final serverNotifier = ref.read(serversProvider);
final spi = serverNotifier.servers[serverId]; final spi = serverNotifier.servers[serverId];
if (spi == null) { if (spi == null) {
throw StateError('Server $serverId not found'); throw StateError('Server $serverId not found');
@@ -160,7 +160,7 @@ class ServerNotifier extends _$ServerNotifier {
id: sessionId, id: sessionId,
spi: spi, spi: spi,
startTimeMs: time1.millisecondsSinceEpoch, startTimeMs: time1.millisecondsSinceEpoch,
disconnect: () => ref.read(serversNotifierProvider.notifier).closeOneServer(spi.id), disconnect: () => ref.read(serversProvider.notifier).closeOneServer(spi.id),
status: TermSessionStatus.connecting, status: TermSessionStatus.connecting,
); );
TermSessionManager.setActive(sessionId, hasTerminal: false); TermSessionManager.setActive(sessionId, hasTerminal: false);

View File

@@ -6,156 +6,103 @@ part of 'single.dart';
// RiverpodGenerator // 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<ServerState> {
late final String serverId;
ServerState build(String serverId);
}
/// See also [ServerNotifier].
@ProviderFor(ServerNotifier) @ProviderFor(ServerNotifier)
const serverNotifierProvider = ServerNotifierFamily(); const serverProvider = ServerNotifierFamily._();
/// See also [ServerNotifier]. final class ServerNotifierProvider
class ServerNotifierFamily extends Family<ServerState> { extends $NotifierProvider<ServerNotifier, ServerState> {
/// See also [ServerNotifier]. const ServerNotifierProvider._({
const ServerNotifierFamily(); required ServerNotifierFamily super.from,
required String super.argument,
}) : super(
retry: null,
name: r'serverProvider',
isAutoDispose: false,
dependencies: null,
$allTransitiveDependencies: null,
);
/// See also [ServerNotifier]. @override
ServerNotifierProvider call(String serverId) { String debugGetCreateSourceHash() => _$serverNotifierHash();
return ServerNotifierProvider(serverId);
@override
String toString() {
return r'serverProvider'
''
'($argument)';
} }
@$internal
@override @override
ServerNotifierProvider getProviderOverride( ServerNotifier create() => ServerNotifier();
covariant ServerNotifierProvider provider,
) {
return call(provider.serverId);
}
static const Iterable<ProviderOrFamily>? _dependencies = null; /// {@macro riverpod.override_with_value}
Override overrideWithValue(ServerState value) {
@override return $ProviderOverride(
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
@override
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
_allTransitiveDependencies;
@override
String? get name => r'serverNotifierProvider';
}
/// See also [ServerNotifier].
class ServerNotifierProvider
extends NotifierProviderImpl<ServerNotifier, ServerState> {
/// 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(
origin: this, origin: this,
override: ServerNotifierProvider._internal( providerOverride: $SyncValueProvider<ServerState>(value),
() => create()..serverId = serverId,
from: from,
name: null,
dependencies: null,
allTransitiveDependencies: null,
debugGetCreateSourceHash: null,
serverId: serverId,
),
); );
} }
@override
NotifierProviderElement<ServerNotifier, ServerState> createElement() {
return _ServerNotifierProviderElement(this);
}
@override @override
bool operator ==(Object other) { bool operator ==(Object other) {
return other is ServerNotifierProvider && other.serverId == serverId; return other is ServerNotifierProvider && other.argument == argument;
} }
@override @override
int get hashCode { int get hashCode {
var hash = _SystemHash.combine(0, runtimeType.hashCode); return argument.hashCode;
hash = _SystemHash.combine(hash, serverId.hashCode);
return _SystemHash.finish(hash);
} }
} }
@Deprecated('Will be removed in 3.0. Use Ref instead') String _$serverNotifierHash() => r'd9724fbe6d132f2e2ea4dfa5af73aeab168e1c57';
// ignore: unused_element
mixin ServerNotifierRef on NotifierProviderRef<ServerState> {
/// The parameter `serverId` of this provider.
String get serverId;
}
class _ServerNotifierProviderElement final class ServerNotifierFamily extends $Family
extends NotifierProviderElement<ServerNotifier, ServerState> with
with ServerNotifierRef { $ClassFamilyOverride<
_ServerNotifierProviderElement(super.provider); 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 @override
String get serverId => (origin as ServerNotifierProvider).serverId; String toString() => r'serverProvider';
} }
// ignore_for_file: type=lint abstract class _$ServerNotifier extends $Notifier<ServerState> {
// 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 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<ServerState, ServerState>;
final element =
ref.element
as $ClassProviderElement<
AnyNotifier<ServerState, ServerState>,
ServerState,
Object?,
Object?
>;
element.handleValue(ref, created);
}
}

View File

@@ -6,20 +6,58 @@ part of 'sftp.dart';
// RiverpodGenerator // 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<SftpNotifier, SftpState> {
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<SftpState>(value),
);
}
}
String _$sftpNotifierHash() => r'f8412a4bd1f2bc5919ec31a3eba1c27e9a578f41'; String _$sftpNotifierHash() => r'f8412a4bd1f2bc5919ec31a3eba1c27e9a578f41';
/// See also [SftpNotifier]. abstract class _$SftpNotifier extends $Notifier<SftpState> {
@ProviderFor(SftpNotifier) SftpState build();
final sftpNotifierProvider = NotifierProvider<SftpNotifier, SftpState>.internal( @$mustCallSuper
SftpNotifier.new, @override
name: r'sftpNotifierProvider', void runBuild() {
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') final created = build();
? null final ref = this.ref as $Ref<SftpState, SftpState>;
: _$sftpNotifierHash, final element =
dependencies: null, ref.element
allTransitiveDependencies: null, as $ClassProviderElement<
); AnyNotifier<SftpState, SftpState>,
SftpState,
typedef _$SftpNotifier = Notifier<SftpState>; Object?,
// ignore_for_file: type=lint Object?
// 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 >;
element.handleValue(ref, created);
}
}

View File

@@ -6,21 +6,58 @@ part of 'snippet.dart';
// RiverpodGenerator // 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<SnippetNotifier, SnippetState> {
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<SnippetState>(value),
);
}
}
String _$snippetNotifierHash() => r'8285c7edf905a4aaa41cd8b65b0a6755c8b97fc9'; String _$snippetNotifierHash() => r'8285c7edf905a4aaa41cd8b65b0a6755c8b97fc9';
/// See also [SnippetNotifier]. abstract class _$SnippetNotifier extends $Notifier<SnippetState> {
@ProviderFor(SnippetNotifier) SnippetState build();
final snippetNotifierProvider = @$mustCallSuper
NotifierProvider<SnippetNotifier, SnippetState>.internal( @override
SnippetNotifier.new, void runBuild() {
name: r'snippetNotifierProvider', final created = build();
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') final ref = this.ref as $Ref<SnippetState, SnippetState>;
? null final element =
: _$snippetNotifierHash, ref.element
dependencies: null, as $ClassProviderElement<
allTransitiveDependencies: null, AnyNotifier<SnippetState, SnippetState>,
); SnippetState,
Object?,
typedef _$SnippetNotifier = Notifier<SnippetState>; Object?
// 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 element.handleValue(ref, created);
}
}

View File

@@ -25,7 +25,7 @@ class SystemdNotifier extends _$SystemdNotifier {
@override @override
SystemdState build(Spi spi) { SystemdState build(Spi spi) {
final si = ref.read(serverNotifierProvider(spi.id)); final si = ref.read(serverProvider(spi.id));
_si = si; _si = si;
// Async initialization // Async initialization
Future.microtask(() => getUnits()); Future.microtask(() => getUnits());

View File

@@ -6,158 +6,103 @@ part of 'systemd.dart';
// RiverpodGenerator // 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<SystemdState> {
late final Spi spi;
SystemdState build(Spi spi);
}
/// See also [SystemdNotifier].
@ProviderFor(SystemdNotifier) @ProviderFor(SystemdNotifier)
const systemdNotifierProvider = SystemdNotifierFamily(); const systemdProvider = SystemdNotifierFamily._();
/// See also [SystemdNotifier]. final class SystemdNotifierProvider
class SystemdNotifierFamily extends Family<SystemdState> { extends $NotifierProvider<SystemdNotifier, SystemdState> {
/// See also [SystemdNotifier]. const SystemdNotifierProvider._({
const SystemdNotifierFamily(); required SystemdNotifierFamily super.from,
required Spi super.argument,
}) : super(
retry: null,
name: r'systemdProvider',
isAutoDispose: true,
dependencies: null,
$allTransitiveDependencies: null,
);
/// See also [SystemdNotifier]. @override
SystemdNotifierProvider call(Spi spi) { String debugGetCreateSourceHash() => _$systemdNotifierHash();
return SystemdNotifierProvider(spi);
@override
String toString() {
return r'systemdProvider'
''
'($argument)';
} }
@$internal
@override @override
SystemdNotifierProvider getProviderOverride( SystemdNotifier create() => SystemdNotifier();
covariant SystemdNotifierProvider provider,
) {
return call(provider.spi);
}
static const Iterable<ProviderOrFamily>? _dependencies = null; /// {@macro riverpod.override_with_value}
Override overrideWithValue(SystemdState value) {
@override return $ProviderOverride(
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
@override
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
_allTransitiveDependencies;
@override
String? get name => r'systemdNotifierProvider';
}
/// See also [SystemdNotifier].
class SystemdNotifierProvider
extends AutoDisposeNotifierProviderImpl<SystemdNotifier, SystemdState> {
/// 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(
origin: this, origin: this,
override: SystemdNotifierProvider._internal( providerOverride: $SyncValueProvider<SystemdState>(value),
() => create()..spi = spi,
from: from,
name: null,
dependencies: null,
allTransitiveDependencies: null,
debugGetCreateSourceHash: null,
spi: spi,
),
); );
} }
@override
AutoDisposeNotifierProviderElement<SystemdNotifier, SystemdState>
createElement() {
return _SystemdNotifierProviderElement(this);
}
@override @override
bool operator ==(Object other) { bool operator ==(Object other) {
return other is SystemdNotifierProvider && other.spi == spi; return other is SystemdNotifierProvider && other.argument == argument;
} }
@override @override
int get hashCode { int get hashCode {
var hash = _SystemHash.combine(0, runtimeType.hashCode); return argument.hashCode;
hash = _SystemHash.combine(hash, spi.hashCode);
return _SystemHash.finish(hash);
} }
} }
@Deprecated('Will be removed in 3.0. Use Ref instead') String _$systemdNotifierHash() => r'98466bd176518545be49cae52f8dbe12af3a88a6';
// ignore: unused_element
mixin SystemdNotifierRef on AutoDisposeNotifierProviderRef<SystemdState> {
/// The parameter `spi` of this provider.
Spi get spi;
}
class _SystemdNotifierProviderElement final class SystemdNotifierFamily extends $Family
extends AutoDisposeNotifierProviderElement<SystemdNotifier, SystemdState> with
with SystemdNotifierRef { $ClassFamilyOverride<
_SystemdNotifierProviderElement(super.provider); 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 @override
Spi get spi => (origin as SystemdNotifierProvider).spi; String toString() => r'systemdProvider';
} }
// ignore_for_file: type=lint abstract class _$SystemdNotifier extends $Notifier<SystemdState> {
// 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 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<SystemdState, SystemdState>;
final element =
ref.element
as $ClassProviderElement<
AnyNotifier<SystemdState, SystemdState>,
SystemdState,
Object?,
Object?
>;
element.handleValue(ref, created);
}
}

View File

@@ -6,21 +6,58 @@ part of 'virtual_keyboard.dart';
// RiverpodGenerator // 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<VirtKeyboard, VirtKeyState> {
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<VirtKeyState>(value),
);
}
}
String _$virtKeyboardHash() => r'1327d412bfb0dd261f3b555f353a8852b4f753e5'; String _$virtKeyboardHash() => r'1327d412bfb0dd261f3b555f353a8852b4f753e5';
/// See also [VirtKeyboard]. abstract class _$VirtKeyboard extends $Notifier<VirtKeyState> {
@ProviderFor(VirtKeyboard) VirtKeyState build();
final virtKeyboardProvider = @$mustCallSuper
AutoDisposeNotifierProvider<VirtKeyboard, VirtKeyState>.internal( @override
VirtKeyboard.new, void runBuild() {
name: r'virtKeyboardProvider', final created = build();
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') final ref = this.ref as $Ref<VirtKeyState, VirtKeyState>;
? null final element =
: _$virtKeyboardHash, ref.element
dependencies: null, as $ClassProviderElement<
allTransitiveDependencies: null, AnyNotifier<VirtKeyState, VirtKeyState>,
); VirtKeyState,
Object?,
typedef _$VirtKeyboard = AutoDisposeNotifier<VirtKeyState>; Object?
// 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 element.handleValue(ref, created);
}
}

View File

@@ -60,7 +60,7 @@ final class _BackupPageState extends ConsumerState<BackupPage> with AutomaticKee
], ],
[CenterGreyTitle(libL10n.import), _buildBulkImportServers, _buildImportSnippet], [CenterGreyTitle(libL10n.import), _buildBulkImportServers, _buildImportSnippet],
], ],
); );
} }
Widget get _buildBakPwd { Widget get _buildBakPwd {
@@ -400,7 +400,7 @@ final class _BackupPageState extends ConsumerState<BackupPage> with AutomaticKee
child: SingleChildScrollView(child: Text(libL10n.askContinue('${libL10n.import} [$snippetNames]'))), child: SingleChildScrollView(child: Text(libL10n.askContinue('${libL10n.import} [$snippetNames]'))),
actions: Btn.ok( actions: Btn.ok(
onTap: () { onTap: () {
final notifier = ref.read(snippetNotifierProvider.notifier); final notifier = ref.read(snippetProvider.notifier);
for (final snippet in snippets) { for (final snippet in snippets) {
notifier.add(snippet); notifier.add(snippet);
} }

View File

@@ -43,8 +43,8 @@ class _ContainerPageState extends ConsumerState<ContainerPage> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
final serverState = ref.read(serverNotifierProvider(widget.args.spi.id)); final serverState = ref.read(serverProvider(widget.args.spi.id));
_provider = containerNotifierProvider( _provider = containerProvider(
serverState.client, serverState.client,
widget.args.spi.user, widget.args.spi.user,
widget.args.spi.id, widget.args.spi.id,

View File

@@ -1,4 +1,5 @@
import 'package:fl_lib/fl_lib.dart'; import 'package:fl_lib/fl_lib.dart';
import 'package:flutter/foundation.dart' show kReleaseMode;
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:responsive_framework/responsive_framework.dart'; import 'package:responsive_framework/responsive_framework.dart';
@@ -31,15 +32,19 @@ class _HomePageState extends ConsumerState<HomePage>
bool _shouldAuth = false; bool _shouldAuth = false;
DateTime? _pausedTime; DateTime? _pausedTime;
late final _notifier = ref.read(serversNotifierProvider.notifier); late final _notifier = ref.read(serversProvider.notifier);
late final _provider = ref.read(serversNotifierProvider); late final _provider = ref.read(serversProvider);
late List<AppTab> _tabs = Stores.setting.homeTabs.fetch(); late List<AppTab> _tabs = Stores.setting.homeTabs.fetch();
@override @override
void dispose() { void dispose() {
super.dispose(); super.dispose();
WidgetsBinding.instance.removeObserver(this); 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(); _pageController.dispose();
WakelockPlus.disable(); WakelockPlus.disable();

View File

@@ -131,7 +131,7 @@ class _PingPageState extends ConsumerState<PingPage> with AutomaticKeepAliveClie
return; return;
} }
if (ref.read(serversNotifierProvider).serverOrder.isEmpty) { if (ref.read(serversProvider).serverOrder.isEmpty) {
context.showSnackBar(l10n.pingNoServer); context.showSnackBar(l10n.pingNoServer);
return; return;
} }
@@ -143,8 +143,8 @@ class _PingPageState extends ConsumerState<PingPage> with AutomaticKeepAliveClie
} }
await Future.wait( await Future.wait(
ref.read(serversNotifierProvider).servers.values.map((spi) async { ref.read(serversProvider).servers.values.map((spi) async {
final serverState = ref.read(serverNotifierProvider(spi.id)); final serverState = ref.read(serverProvider(spi.id));
if (serverState.client == null) { if (serverState.client == null) {
return; return;
} }

View File

@@ -40,7 +40,7 @@ class _PrivateKeyEditPageState extends ConsumerState<PrivateKeyEditPage> {
final _loading = ValueNotifier<Widget?>(null); final _loading = ValueNotifier<Widget?>(null);
late final _notifier = ref.read(privateKeyNotifierProvider.notifier); late final _notifier = ref.read(privateKeyProvider.notifier);
PrivateKeyInfo? get pki => widget.args?.pki; PrivateKeyInfo? get pki => widget.args?.pki;

View File

@@ -32,7 +32,7 @@ class _PrivateKeyListState extends ConsumerState<PrivateKeysListPage> with After
} }
Widget _buildBody() { Widget _buildBody() {
final privateKeyState = ref.watch(privateKeyNotifierProvider); final privateKeyState = ref.watch(privateKeyProvider);
final pkis = privateKeyState.keys; final pkis = privateKeyState.keys;
if (pkis.isEmpty) { if (pkis.isEmpty) {

View File

@@ -37,7 +37,7 @@ class _ProcessPageState extends ConsumerState<ProcessPage> {
ProcSortMode _procSortMode = ProcSortMode.cpu; ProcSortMode _procSortMode = ProcSortMode.cpu;
List<ProcSortMode> _sortModes = List.from(ProcSortMode.values); List<ProcSortMode> _sortModes = List.from(ProcSortMode.values);
late final _provider = serverNotifierProvider(widget.args.spi.id); late final _provider = serverProvider(widget.args.spi.id);
@override @override
void dispose() { void dispose() {

View File

@@ -33,7 +33,7 @@ final class _PvePageState extends ConsumerState<PvePage> {
late MediaQueryData _media; late MediaQueryData _media;
Timer? _timer; Timer? _timer;
late final _provider = pveNotifierProvider(widget.args.spi); late final _provider = pveProvider(widget.args.spi);
late final _notifier = ref.read(_provider.notifier); late final _notifier = ref.read(_provider.notifier);
@override @override

View File

@@ -86,7 +86,7 @@ class _ServerDetailPageState extends ConsumerState<ServerDetailPage> with Single
@override @override
Widget build(BuildContext context) { 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) { if (serverState.client == null) {
return Scaffold( return Scaffold(
appBar: CustomAppBar(), appBar: CustomAppBar(),

View File

@@ -63,14 +63,18 @@ extension _Actions on _ServerEditPageState {
if (shouldProceed == true) { if (shouldProceed == true) {
final username = usernameController.text.isNotEmpty ? usernameController.text : defaultUsername; final username = usernameController.text.isNotEmpty ? usernameController.text : defaultUsername;
final keyId = keyIdController.text.isNotEmpty ? keyIdController.text : null; final keyId = keyIdController.text.isNotEmpty ? keyIdController.text : null;
final servers = discoveredServers.map((result) => Spi( final servers = discoveredServers
name: result.ip, .map(
ip: result.ip, (result) => Spi(
port: result.port, name: result.ip,
user: username, ip: result.ip,
keyId: keyId, port: result.port,
pwd: _passwordController.text.isEmpty ? null : _passwordController.text, user: username,
)).toList(); keyId: keyId,
pwd: _passwordController.text.isEmpty ? null : _passwordController.text,
),
)
.toList();
await _batchImportServers(servers); await _batchImportServers(servers);
} }
@@ -93,8 +97,9 @@ extension _Actions on _ServerEditPageState {
} }
} }
context.showSnackBar('${libL10n.success}: $imported ${l10n.servers}'); context.showSnackBar('${libL10n.success}: $imported ${l10n.servers}');
if (mounted) Navigator.of(context).pop(true); if (mounted) context.pop(true);
} }
void _onTapSSHImport() async { void _onTapSSHImport() async {
try { try {
final servers = await SSHConfig.parseConfig(); final servers = await SSHConfig.parseConfig();
@@ -114,8 +119,7 @@ extension _Actions on _ServerEditPageState {
void _handleImportSSHCfgPermissionIssue(Object e, StackTrace s) async { void _handleImportSSHCfgPermissionIssue(Object e, StackTrace s) async {
dprint('Error importing SSH config: $e'); dprint('Error importing SSH config: $e');
// Check if it's a permission error and offer file picker as fallback // Check if it's a permission error and offer file picker as fallback
if (e is PathAccessException || if (e is PathAccessException || e.toString().contains('Operation not permitted')) {
e.toString().contains('Operation not permitted')) {
final useFilePicker = await context.showRoundDialog<bool>( final useFilePicker = await context.showRoundDialog<bool>(
title: l10n.sshConfigImport, title: l10n.sshConfigImport,
child: Column( child: Column(
@@ -157,15 +161,10 @@ extension _Actions on _ServerEditPageState {
children: [ children: [
Text(l10n.sshConfigFoundServers('${summary.total}')), Text(l10n.sshConfigFoundServers('${summary.total}')),
if (summary.hasDuplicates) if (summary.hasDuplicates)
Text( Text(l10n.sshConfigDuplicatesSkipped('${summary.duplicates}'), style: UIs.textGrey),
l10n.sshConfigDuplicatesSkipped('${summary.duplicates}'),
style: UIs.textGrey,
),
Text(l10n.sshConfigServersToImport('${summary.toImport}')), Text(l10n.sshConfigServersToImport('${summary.toImport}')),
const SizedBox(height: 16), const SizedBox(height: 16),
...resolved.map( ...resolved.map((s) => Text('${s.name} (${s.user}@${s.ip}:${s.port})')),
(s) => Text('${s.name} (${s.user}@${s.ip}:${s.port})'),
),
], ],
), ),
), ),
@@ -174,7 +173,7 @@ extension _Actions on _ServerEditPageState {
if (shouldImport == true) { if (shouldImport == true) {
for (final server in resolved) { for (final server in resolved) {
ref.read(serversNotifierProvider.notifier).addServer(server); ref.read(serversProvider.notifier).addServer(server);
} }
context.showSnackBar(l10n.sshConfigImported('${resolved.length}')); context.showSnackBar(l10n.sshConfigImported('${resolved.length}'));
} }
@@ -203,10 +202,7 @@ extension _Actions on _ServerEditPageState {
} }
void _onTapCustomItem() async { void _onTapCustomItem() async {
final res = await KvEditor.route.go( final res = await KvEditor.route.go(context, KvEditorArgs(data: _customCmds.value));
context,
KvEditorArgs(data: _customCmds.value),
);
if (res == null) return; if (res == null) return;
_customCmds.value = res; _customCmds.value = res;
} }
@@ -257,17 +253,10 @@ extension _Actions on _ServerEditPageState {
scriptDir: _scriptDirCtrl.text.selfNotEmptyOrNull, scriptDir: _scriptDirCtrl.text.selfNotEmptyOrNull,
); );
final wolEmpty = final wolEmpty = _wolMacCtrl.text.isEmpty && _wolIpCtrl.text.isEmpty && _wolPwdCtrl.text.isEmpty;
_wolMacCtrl.text.isEmpty &&
_wolIpCtrl.text.isEmpty &&
_wolPwdCtrl.text.isEmpty;
final wol = wolEmpty final wol = wolEmpty
? null ? null
: WakeOnLanCfg( : WakeOnLanCfg(mac: _wolMacCtrl.text, ip: _wolIpCtrl.text, pwd: _wolPwdCtrl.text.selfNotEmptyOrNull);
mac: _wolMacCtrl.text,
ip: _wolIpCtrl.text,
pwd: _wolPwdCtrl.text.selfNotEmptyOrNull,
);
if (wol != null) { if (wol != null) {
final wolValidation = wol.validate(); final wolValidation = wol.validate();
if (!wolValidation.$2) { if (!wolValidation.$2) {
@@ -277,19 +266,13 @@ extension _Actions on _ServerEditPageState {
} }
final spi = Spi( final spi = Spi(
name: _nameController.text.isEmpty name: _nameController.text.isEmpty ? _ipController.text : _nameController.text,
? _ipController.text
: _nameController.text,
ip: _ipController.text, ip: _ipController.text,
port: int.parse(_portController.text), port: int.parse(_portController.text),
user: _usernameController.text, user: _usernameController.text,
pwd: _passwordController.text.selfNotEmptyOrNull, pwd: _passwordController.text.selfNotEmptyOrNull,
keyId: _keyIdx.value != null keyId: _keyIdx.value != null
? ref ? ref.read(privateKeyProvider).keys.elementAt(_keyIdx.value!).id
.read(privateKeyNotifierProvider)
.keys
.elementAt(_keyIdx.value!)
.id
: null, : null,
tags: _tags.value.isEmpty ? null : _tags.value.toList(), tags: _tags.value.isEmpty ? null : _tags.value.toList(),
alterUrl: _altUrlController.text.selfNotEmptyOrNull, alterUrl: _altUrlController.text.selfNotEmptyOrNull,
@@ -300,9 +283,7 @@ extension _Actions on _ServerEditPageState {
envs: _env.value.isEmpty ? null : _env.value, envs: _env.value.isEmpty ? null : _env.value,
id: widget.args?.spi.id ?? ShortId.generate(), id: widget.args?.spi.id ?? ShortId.generate(),
customSystemType: _systemType.value, customSystemType: _systemType.value,
disabledCmdTypes: _disabledCmdTypes.value.isEmpty disabledCmdTypes: _disabledCmdTypes.value.isEmpty ? null : _disabledCmdTypes.value.toList(),
? null
: _disabledCmdTypes.value.toList(),
); );
if (this.spi == null) { if (this.spi == null) {
@@ -311,9 +292,9 @@ extension _Actions on _ServerEditPageState {
context.showSnackBar('${l10n.sameIdServerExist}: ${spi.id}'); context.showSnackBar('${l10n.sameIdServerExist}: ${spi.id}');
return; return;
} }
ref.read(serversNotifierProvider.notifier).addServer(spi); ref.read(serversProvider.notifier).addServer(spi);
} else { } else {
ref.read(serversNotifierProvider.notifier).updateServer(this.spi!, spi); ref.read(serversProvider.notifier).updateServer(this.spi!, spi);
} }
context.pop(); context.pop();
@@ -369,7 +350,7 @@ extension _Utils on _ServerEditPageState {
// Import without asking again since user already gave permission // Import without asking again since user already gave permission
for (final server in resolved) { for (final server in resolved) {
ref.read(serversNotifierProvider.notifier).addServer(server); ref.read(serversProvider.notifier).addServer(server);
} }
context.showSnackBar(l10n.sshConfigImported('${resolved.length}')); context.showSnackBar(l10n.sshConfigImported('${resolved.length}'));
} }
@@ -432,10 +413,7 @@ extension _Utils on _ServerEditPageState {
if (spi.keyId == null) { if (spi.keyId == null) {
_passwordController.text = spi.pwd ?? ''; _passwordController.text = spi.pwd ?? '';
} else { } else {
_keyIdx.value = ref _keyIdx.value = ref.read(privateKeyProvider).keys.indexWhere((e) => e.id == spi.keyId);
.read(privateKeyNotifierProvider)
.keys
.indexWhere((e) => e.id == spi.keyId);
} }
/// List in dart is passed by pointer, so you need to copy it here /// List in dart is passed by pointer, so you need to copy it here

View File

@@ -185,7 +185,7 @@ class _ServerEditPageState extends ConsumerState<ServerEditPage> with AfterLayou
hint: 'root', hint: 'root',
suggestion: false, suggestion: false,
), ),
TagTile(tags: _tags, allTags: ref.watch(serversNotifierProvider).tags).cardx, TagTile(tags: _tags, allTags: ref.watch(serversProvider).tags).cardx,
ListTile( ListTile(
title: Text(l10n.autoConnect), title: Text(l10n.autoConnect),
trailing: _autoConnect.listenVal( trailing: _autoConnect.listenVal(

View File

@@ -42,7 +42,7 @@ extension _Widgets on _ServerEditPageState {
Widget _buildKeyAuth() { Widget _buildKeyAuth() {
const padding = EdgeInsets.only(left: 13, right: 13, bottom: 7); 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 pkis = privateKeyState.keys;
final choice = _keyIdx.listenVal((val) { final choice = _keyIdx.listenVal((val) {
@@ -350,7 +350,7 @@ extension _Widgets on _ServerEditPageState {
Widget _buildJumpServer() { Widget _buildJumpServer() {
const padding = EdgeInsets.only(left: 13, right: 13, bottom: 7); const padding = EdgeInsets.only(left: 13, right: 13, bottom: 7);
final srvs = ref final srvs = ref
.watch(serversNotifierProvider) .watch(serversProvider)
.servers .servers
.values .values
.where((e) => e.jumpId == null) .where((e) => e.jumpId == null)
@@ -462,7 +462,7 @@ extension _Widgets on _ServerEditPageState {
actions: Btn.ok( actions: Btn.ok(
onTap: () async { onTap: () async {
context.pop(); context.pop();
ref.read(serversNotifierProvider.notifier).delServer(spi!.id); ref.read(serversProvider.notifier).delServer(spi!.id);
context.pop(true); context.pop(true);
}, },
red: true, red: true,

View File

@@ -30,16 +30,16 @@ extension on _ServerPageState {
const Icon(Icons.refresh, size: 21, color: Colors.grey), const Icon(Icons.refresh, size: 21, color: Colors.grey),
() { () {
TryLimiter.reset(s.spi.id); TryLimiter.reset(s.spi.id);
ref.read(serversNotifierProvider.notifier).refresh(spi: s.spi); ref.read(serversProvider.notifier).refresh(spi: s.spi);
}, },
), ),
ServerConn.disconnected => ( ServerConn.disconnected => (
const Icon(MingCute.link_3_line, size: 19, color: Colors.grey), 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 => ( ServerConn.finished => (
const Icon(MingCute.unlink_2_line, size: 17, color: Colors.grey), 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) { Widget _buildNet(ServerStatus ss, String id) {
final cardNoti = _getCardNoti(id); final cardNoti = _getCardNoti(id);
final type = cardNoti.value.net ?? Stores.setting.netViewType.fetch(); 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); final (a, b) = type.build(ss, dev: device);
return AnimatedSwitcher( return AnimatedSwitcher(
duration: const Duration(milliseconds: 377), duration: const Duration(milliseconds: 377),

View File

@@ -26,7 +26,7 @@ extension on _ServerPageState {
} }
Widget _buildLandscapeBody() { Widget _buildLandscapeBody() {
final serverState = ref.watch(serversNotifierProvider); final serverState = ref.watch(serversProvider);
final order = serverState.serverOrder; final order = serverState.serverOrder;
if (order.isEmpty) { if (order.isEmpty) {
@@ -37,7 +37,7 @@ extension on _ServerPageState {
itemCount: order.length, itemCount: order.length,
itemBuilder: (_, idx) { itemBuilder: (_, idx) {
final id = order[idx]; final id = order[idx];
final srv = ref.watch(serverNotifierProvider(id)); final srv = ref.watch(serverProvider(id));
final title = _buildServerCardTitle(srv); final title = _buildServerCardTitle(srv);
final List<Widget> children = [title, _buildNormalCard(srv.status, srv.spi)]; final List<Widget> children = [title, _buildNormalCard(srv.status, srv.spi)];

View File

@@ -74,7 +74,7 @@ class _ServerPageState extends ConsumerState<ServerPage>
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_tags = ValueNotifier(ref.read(serversNotifierProvider).tags); _tags = ValueNotifier(ref.read(serversProvider).tags);
_startAvoidJitterTimer(); _startAvoidJitterTimer();
} }
@@ -89,7 +89,7 @@ class _ServerPageState extends ConsumerState<ServerPage>
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);
// Listen to provider changes and update the ValueNotifier // Listen to provider changes and update the ValueNotifier
ref.listen(serversNotifierProvider, (previous, next) { ref.listen(serversProvider, (previous, next) {
_tags.value = next.tags; _tags.value = next.tags;
}); });
return OrientationBuilder( return OrientationBuilder(
@@ -133,7 +133,7 @@ class _ServerPageState extends ConsumerState<ServerPage>
Widget _buildPortrait() { Widget _buildPortrait() {
// final isMobile = ResponsiveBreakpoints.of(context).isMobile; // final isMobile = ResponsiveBreakpoints.of(context).isMobile;
final serverState = ref.watch(serversNotifierProvider); final serverState = ref.watch(serversProvider);
return _tag.listenVal((val) { return _tag.listenVal((val) {
final filtered = _filterServers(serverState.serverOrder); final filtered = _filterServers(serverState.serverOrder);
final child = _buildScaffold(_buildBodySmall(filtered: filtered)); final child = _buildScaffold(_buildBodySmall(filtered: filtered));
@@ -183,7 +183,7 @@ class _ServerPageState extends ConsumerState<ServerPage>
// Last item is just spacing // Last item is just spacing
if (index == lens) return SizedBox(height: 77); if (index == lens) return SizedBox(height: 77);
final individualState = ref.watch(serverNotifierProvider(serversInThisColumn[index])); final individualState = ref.watch(serverProvider(serversInThisColumn[index]));
return _buildEachServerCard(individualState); return _buildEachServerCard(individualState);
}, },
@@ -339,8 +339,8 @@ class _ServerPageState extends ConsumerState<ServerPage>
@override @override
Future<void> afterFirstLayout(BuildContext context) async { Future<void> afterFirstLayout(BuildContext context) async {
ref.read(serversNotifierProvider.notifier).refresh(); ref.read(serversProvider.notifier).refresh();
ref.read(serversNotifierProvider.notifier).startAutoRefresh(); ref.read(serversProvider.notifier).startAutoRefresh();
} }
static const _kCardHeightMin = 23.0; static const _kCardHeightMin = 23.0;

View File

@@ -98,7 +98,7 @@ extension _Utils on _ServerPageState {
final tag = _tag.value; final tag = _tag.value;
if (tag == TagSwitcher.kDefaultTag) return order; if (tag == TagSwitcher.kDefaultTag) return order;
return order.where((e) { 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; if (tags == null) return false;
return tags.contains(tag); return tags.contains(tag);
}).toList(); }).toList();

View File

@@ -63,7 +63,7 @@ extension _Server on _AppSettingsPageState {
onTap: () async { onTap: () async {
final keys = Stores.server.keys(); final keys = Stores.server.keys();
final names = Map.fromEntries( 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<String>( final deleteKeys = await context.showPickDialog<String>(
clearable: true, clearable: true,

View File

@@ -42,7 +42,7 @@ class _ServerOrderPageState extends ConsumerState<ServerOrderPage> {
} }
Widget _buildBody() { Widget _buildBody() {
final serverState = ref.watch(serversNotifierProvider); final serverState = ref.watch(serversProvider);
final order = serverState.serverOrder; final order = serverState.serverOrder;
if (order.isEmpty) { if (order.isEmpty) {
@@ -77,7 +77,7 @@ class _ServerOrderPageState extends ConsumerState<ServerOrderPage> {
} }
Widget _buildCardTile(int index) { Widget _buildCardTile(int index) {
final serverState = ref.watch(serversNotifierProvider); final serverState = ref.watch(serversProvider);
final order = serverState.serverOrder; final order = serverState.serverOrder;
final id = order[index]; final id = order[index];
final spi = serverState.servers[id]; final spi = serverState.servers[id];

View File

@@ -62,7 +62,7 @@ class _SnippetEditPageState extends ConsumerState<SnippetEditPage> with AfterLay
child: Text(libL10n.askContinue('${libL10n.delete} ${l10n.snippet}(${snippet.name})')), child: Text(libL10n.askContinue('${libL10n.delete} ${l10n.snippet}(${snippet.name})')),
actions: Btn.ok( actions: Btn.ok(
onTap: () { onTap: () {
ref.read(snippetNotifierProvider.notifier).del(snippet); ref.read(snippetProvider.notifier).del(snippet);
context.pop(); context.pop();
context.pop(); context.pop();
}, },
@@ -96,7 +96,7 @@ class _SnippetEditPageState extends ConsumerState<SnippetEditPage> with AfterLay
autoRunOn: _autoRunOn.value.isEmpty ? null : _autoRunOn.value, autoRunOn: _autoRunOn.value.isEmpty ? null : _autoRunOn.value,
); );
final oldSnippet = widget.args?.snippet; final oldSnippet = widget.args?.snippet;
final notifier = ref.read(snippetNotifierProvider.notifier); final notifier = ref.read(snippetProvider.notifier);
if (oldSnippet != null) { if (oldSnippet != null) {
notifier.update(oldSnippet, snippet); notifier.update(oldSnippet, snippet);
} else { } else {
@@ -130,7 +130,7 @@ class _SnippetEditPageState extends ConsumerState<SnippetEditPage> with AfterLay
), ),
Consumer( Consumer(
builder: (_, ref, _) { 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; return TagTile(tags: _tags, allTags: tags).cardx;
}, },
), ),
@@ -157,7 +157,7 @@ class _SnippetEditPageState extends ConsumerState<SnippetEditPage> with AfterLay
builder: (vals) { builder: (vals) {
final subtitle = vals.isEmpty final subtitle = vals.isEmpty
? null ? 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( return ListTile(
leading: const Padding( leading: const Padding(
padding: EdgeInsets.only(left: 5), padding: EdgeInsets.only(left: 5),
@@ -170,11 +170,11 @@ class _SnippetEditPageState extends ConsumerState<SnippetEditPage> with AfterLay
: Text(subtitle, maxLines: 1, style: UIs.textGrey, overflow: TextOverflow.ellipsis), : Text(subtitle, maxLines: 1, style: UIs.textGrey, overflow: TextOverflow.ellipsis),
onTap: () async { onTap: () async {
// Create a filtered copy for the dialog, don't modify the original // 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( final serverIds = await context.showPickDialog(
title: l10n.autoRun, title: l10n.autoRun,
items: ref.read(serversNotifierProvider).serverOrder, items: ref.read(serversProvider).serverOrder,
display: (e) => ref.read(serversNotifierProvider).servers[e]?.name ?? e, display: (e) => ref.read(serversProvider).servers[e]?.name ?? e,
initial: validServerIds, initial: validServerIds,
clearable: true, clearable: true,
); );

View File

@@ -36,7 +36,7 @@ class _SnippetListPageState extends ConsumerState<SnippetListPage> with Automati
Widget _buildBody() { Widget _buildBody() {
// final isMobile = ResponsiveBreakpoints.of(context).isMobile; // final isMobile = ResponsiveBreakpoints.of(context).isMobile;
final snippetState = ref.watch(snippetNotifierProvider); final snippetState = ref.watch(snippetProvider);
final snippets = snippetState.snippets; final snippets = snippetState.snippets;
return _tag.listenVal((tag) { return _tag.listenVal((tag) {
@@ -56,7 +56,7 @@ class _SnippetListPageState extends ConsumerState<SnippetListPage> with Automati
} }
Widget _buildScaffold(List<Snippet> snippets, String tag) { Widget _buildScaffold(List<Snippet> snippets, String tag) {
final snippetState = ref.watch(snippetNotifierProvider); final snippetState = ref.watch(snippetProvider);
return Scaffold( return Scaffold(
appBar: TagSwitcher( appBar: TagSwitcher(
tags: snippetState.tags.vn, tags: snippetState.tags.vn,

View File

@@ -66,7 +66,7 @@ extension _Init on SSHPageState {
// Mark status connected for notifications / live activities // Mark status connected for notifications / live activities
TermSessionManager.updateStatus(_sessionId, TermSessionStatus.connected); 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) { for (final snippet in snippets) {
if (snippet.autoRunOn?.contains(widget.args.spi.id) == true) { if (snippet.autoRunOn?.contains(widget.args.spi.id) == true) {
snippet.runInTerm(_terminal, widget.args.spi); snippet.runInTerm(_terminal, widget.args.spi);

View File

@@ -118,7 +118,7 @@ class SSHPageState extends ConsumerState<SSHPage>
_setupDiscontinuityTimer(); _setupDiscontinuityTimer();
// Initialize client from provider // 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; _client = serverState.client;
if (++_sshConnCount == 1) { if (++_sshConnCount == 1) {

View File

@@ -52,7 +52,7 @@ extension _VirtKey on SSHPageState {
} }
break; break;
case VirtualKeyFunc.snippet: case VirtualKeyFunc.snippet:
final snippetState = ref.read(snippetNotifierProvider); final snippetState = ref.read(snippetProvider);
final snippets = await context.showPickWithTagDialog<Snippet>( final snippets = await context.showPickWithTagDialog<Snippet>(
title: l10n.snippet, title: l10n.snippet,
tags: snippetState.tags.vn, tags: snippetState.tags.vn,

View File

@@ -249,7 +249,7 @@ class _AddPage extends ConsumerWidget {
const viewPadding = 7.0; const viewPadding = 7.0;
final viewWidth = context.windowSize.width - 2 * viewPadding; final viewWidth = context.windowSize.width - 2 * viewPadding;
final serverState = ref.watch(serversNotifierProvider); final serverState = ref.watch(serversProvider);
final itemCount = serverState.servers.length; final itemCount = serverState.servers.length;
const itemPadding = 1.0; const itemPadding = 1.0;
const itemWidth = 150.0; const itemWidth = 150.0;

View File

@@ -359,7 +359,7 @@ extension _OnTapFile on _LocalFilePageState {
final spi = await context.showPickSingleDialog<Spi>( final spi = await context.showPickSingleDialog<Spi>(
title: libL10n.select, title: libL10n.select,
items: ref.read(serversNotifierProvider).servers.values.toList(), items: ref.read(serversProvider).servers.values.toList(),
display: (e) => e.name, display: (e) => e.name,
); );
if (spi == null) return; if (spi == null) return;
@@ -370,7 +370,7 @@ extension _OnTapFile on _LocalFilePageState {
return; 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); context.showSnackBar(l10n.added2List);
} }
} }

View File

@@ -50,7 +50,7 @@ class _SftpPageState extends ConsumerState<SftpPage> with AfterLayoutMixin {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
final serverState = ref.read(serverNotifierProvider(widget.args.spi.id)); final serverState = ref.read(serverProvider(widget.args.spi.id));
_client = serverState.client!; _client = serverState.client!;
_status = SftpBrowserStatus(_client); _status = SftpBrowserStatus(_client);
} }
@@ -290,7 +290,7 @@ extension _Actions on _SftpPageState {
final localPath = _getLocalPath(remotePath); final localPath = _getLocalPath(remotePath);
final completer = Completer(); final completer = Completer();
final req = SftpReq(widget.args.spi, remotePath, localPath, SftpReqType.download); 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); final (suc, err) = await context.showLoadingDialog(fn: () => completer.future);
if (suc == null || err != null) return; if (suc == null || err != null) return;
@@ -300,7 +300,7 @@ extension _Actions on _SftpPageState {
path: localPath, path: localPath,
onSave: (_) { onSave: (_) {
ref ref
.read(sftpNotifierProvider.notifier) .read(sftpProvider.notifier)
.add(SftpReq(req.spi, remotePath, localPath, SftpReqType.upload)); .add(SftpReq(req.spi, remotePath, localPath, SftpReqType.upload));
context.showSnackBar(l10n.added2List); context.showSnackBar(l10n.added2List);
}, },
@@ -323,7 +323,7 @@ extension _Actions on _SftpPageState {
final remotePath = _getRemotePath(name); final remotePath = _getRemotePath(name);
ref ref
.read(sftpNotifierProvider.notifier) .read(sftpProvider.notifier)
.add(SftpReq(widget.args.spi, remotePath, _getLocalPath(remotePath), SftpReqType.download)); .add(SftpReq(widget.args.spi, remotePath, _getLocalPath(remotePath), SftpReqType.download));
context.pop(); context.pop();
@@ -653,7 +653,7 @@ extension _Actions on _SftpPageState {
final remotePath = '$remoteDir/$fileName'; final remotePath = '$remoteDir/$fileName';
Loggers.app.info('SFTP upload local: $path, remote: $remotePath'); Loggers.app.info('SFTP upload local: $path, remote: $remotePath');
ref ref
.read(sftpNotifierProvider.notifier) .read(sftpProvider.notifier)
.add(SftpReq(widget.args.spi, remotePath, path, SftpReqType.upload)); .add(SftpReq(widget.args.spi, remotePath, path, SftpReqType.upload));
}, },
icon: const Icon(Icons.upload_file), icon: const Icon(Icons.upload_file),

View File

@@ -25,7 +25,7 @@ class _SftpMissionPageState extends ConsumerState<SftpMissionPage> {
} }
Widget _buildBody() { Widget _buildBody() {
final status = ref.watch(sftpNotifierProvider.select((pro) => pro.requests)); final status = ref.watch(sftpProvider.select((pro) => pro.requests));
if (status.isEmpty) { if (status.isEmpty) {
return Center(child: Text(libL10n.empty)); return Center(child: Text(libL10n.empty));
} }
@@ -143,7 +143,7 @@ class _SftpMissionPageState extends ConsumerState<SftpMissionPage> {
child: Text(libL10n.askContinue('${libL10n.delete} ${l10n.mission}($name)')), child: Text(libL10n.askContinue('${libL10n.delete} ${l10n.mission}($name)')),
actions: Btn.ok( actions: Btn.ok(
onTap: () { onTap: () {
ref.read(sftpNotifierProvider.notifier).cancel(id); ref.read(sftpProvider.notifier).cancel(id);
context.pop(); context.pop();
}, },
).toList, ).toList,

View File

@@ -19,7 +19,7 @@ final class SystemdPage extends ConsumerStatefulWidget {
} }
final class _SystemdPageState extends ConsumerState<SystemdPage> { final class _SystemdPageState extends ConsumerState<SystemdPage> {
late final _pro = systemdNotifierProvider(widget.args.spi); late final _pro = systemdProvider(widget.args.spi);
late final _notifier = ref.read(_pro.notifier); late final _notifier = ref.read(_pro.notifier);

View File

@@ -121,7 +121,7 @@ void _onTapMoreBtns(ServerFuncBtn value, Spi spi, BuildContext context, WidgetRe
break; break;
case ServerFuncBtn.snippet: case ServerFuncBtn.snippet:
final snippetState = ref.read(snippetNotifierProvider); final snippetState = ref.read(snippetProvider);
if (snippetState.snippets.isEmpty) { if (snippetState.snippets.isEmpty) {
context.showSnackBar(libL10n.empty); context.showSnackBar(libL10n.empty);
return; return;
@@ -273,7 +273,7 @@ void _gotoSSH(Spi spi, BuildContext context) async {
} }
bool _checkClient(BuildContext context, String id, WidgetRef ref) { bool _checkClient(BuildContext context, String id, WidgetRef ref) {
final serverState = ref.read(serverNotifierProvider(id)); final serverState = ref.read(serverProvider(id));
if (serverState.client == null) { if (serverState.client == null) {
context.showSnackBar(l10n.waitConnection); context.showSnackBar(l10n.waitConnection);
return false; return false;

View File

@@ -653,7 +653,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "Server Box"; PRODUCT_NAME = "Server Box";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = hj_macmini_for_serverbox; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = serverbox_lkmm;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
}; };
name = Release; name = Release;

View File

@@ -17,6 +17,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "7.6.0" 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: analyzer_plugin:
dependency: transitive dependency: transitive
description: description:
@@ -117,10 +125,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: build name: build
sha256: "51dc711996cbf609b90cbe5b335bbce83143875a9d58e4b5c6d3c4f684d3dda7" sha256: "7d95cbbb1526ab5ae977df9b4cc660963b9b27f6d1075c0b34653868911385e4"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.5.4" version: "3.0.0"
build_config: build_config:
dependency: transitive dependency: transitive
description: description:
@@ -141,26 +149,26 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: build_resolvers name: build_resolvers
sha256: ee4257b3f20c0c90e72ed2b57ad637f694ccba48839a821e87db762548c22a62 sha256: "38c9c339333a09b090a638849a4c56e70a404c6bdd3b511493addfbc113b60c2"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.5.4" version: "3.0.0"
build_runner: build_runner:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: build_runner name: build_runner
sha256: "382a4d649addbfb7ba71a3631df0ec6a45d5ab9b098638144faf27f02778eb53" sha256: b971d4a1c789eba7be3e6fe6ce5e5b50fd3719e3cb485b3fad6d04358304351d
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.5.4" version: "2.6.0"
build_runner_core: build_runner_core:
dependency: transitive dependency: transitive
description: description:
name: build_runner_core name: build_runner_core
sha256: "85fbbb1036d576d966332a3f5ce83f2ce66a40bea1a94ad2d5fc29a19a0d3792" sha256: c04e612ca801cd0928ccdb891c263a2b1391cb27940a5ea5afcf9ba894de5d62
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "9.1.2" version: "9.2.0"
built_collection: built_collection:
dependency: transitive dependency: transitive
description: description:
@@ -343,10 +351,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: custom_lint_core name: custom_lint_core
sha256: "31110af3dde9d29fb10828ca33f1dce24d2798477b167675543ce3d208dee8be" sha256: cc4684d22ca05bf0a4a51127e19a8aea576b42079ed2bc9e956f11aaebe35dd1
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.5" version: "0.8.0"
custom_lint_visitor: custom_lint_visitor:
dependency: transitive dependency: transitive
description: description:
@@ -496,11 +504,9 @@ packages:
fl_lib: fl_lib:
dependency: "direct main" dependency: "direct main"
description: description:
path: "." path: "../fl_lib"
ref: "v1.0.349" relative: true
resolved-ref: "77971814f0d7624c9473d4f6ed796c0166d0828b" source: path
url: "https://github.com/lppcg/fl_lib"
source: git
version: "0.0.1" version: "0.0.1"
flutter: flutter:
dependency: "direct main" dependency: "direct main"
@@ -511,10 +517,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_displaymode name: flutter_displaymode
sha256: "42c5e9abd13d28ed74f701b60529d7f8416947e58256e6659c5550db719c57ef" sha256: ecd44b1e902b0073b42ff5b55bf283f38e088270724cdbb7f7065ccf54aa60a8
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.6.0" version: "0.7.0"
flutter_gbk2utf8: flutter_gbk2utf8:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -588,10 +594,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_riverpod name: flutter_riverpod
sha256: "9532ee6db4a943a1ed8383072a2e3eeda041db5657cdf6d2acecf3c21ecbe7e1" sha256: "71a420767ae786f9402e4efb74e1119fa95b53e6a3781ab8ab21c121ac1349c6"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.6.1" version: "3.0.1"
flutter_secure_storage: flutter_secure_storage:
dependency: transitive dependency: transitive
description: description:
@@ -640,6 +646,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.1.2" 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: flutter_svg:
dependency: transitive dependency: transitive
description: description:
@@ -662,10 +676,10 @@ packages:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: freezed name: freezed
sha256: "2d399f823b8849663744d2a9ddcce01c49268fb4170d0442a655bf6a2f47be22" sha256: "13065f10e135263a4f5a4391b79a8efc5fb8106f8dd555a9e49b750b45393d77"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.1.0" version: "3.2.3"
freezed_annotation: freezed_annotation:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -743,10 +757,10 @@ packages:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: hive_ce_generator name: hive_ce_generator
sha256: "609678c10ebee7503505a0007050af40a0a4f498b1fb7def3220df341e573a89" sha256: a169feeff2da9cc2c417ce5ae9bcebf7c8a95d7a700492b276909016ad70a786
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.9.2" version: "1.9.3"
html: html:
dependency: transitive dependency: transitive
description: description:
@@ -871,10 +885,10 @@ packages:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: json_serializable name: json_serializable
sha256: c50ef5fc083d5b5e12eef489503ba3bf5ccc899e487d691584699b4bdefeea8c sha256: "33a040668b31b320aafa4822b7b1e177e163fc3c1e835c6750319d4ab23aa6fe"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.9.5" version: "6.11.1"
leak_tracker: leak_tracker:
dependency: transitive dependency: transitive
description: description:
@@ -1003,6 +1017,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.0" 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: multi_split_view:
dependency: transitive dependency: transitive
description: description:
@@ -1248,10 +1270,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: re_editor name: re_editor
sha256: "17e430f0591dd361992ec2dd6f69191c1853fa46e05432e095310a8f82ee820e" sha256: dd4e6ca7350a8fa0cda4e425b82a0c3c010f0f6b3f618c74223e05b8129ab629
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.0" version: "0.8.0"
re_highlight: re_highlight:
dependency: transitive dependency: transitive
description: description:
@@ -1272,34 +1294,34 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: riverpod name: riverpod
sha256: "59062512288d3056b2321804332a13ffdd1bf16df70dcc8e506e411280a72959" sha256: b21446f04474040479b19004c5b729605cde221bbd14cf16ad0db8804dce4810
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.6.1" version: "3.0.1"
riverpod_analyzer_utils: riverpod_analyzer_utils:
dependency: transitive dependency: transitive
description: description:
name: riverpod_analyzer_utils name: riverpod_analyzer_utils
sha256: "03a17170088c63aab6c54c44456f5ab78876a1ddb6032ffde1662ddab4959611" sha256: a0f68adb078b790faa3c655110a017f9a7b7b079a57bbd40f540e80dce5fcd29
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.5.10" version: "1.0.0-dev.7"
riverpod_annotation: riverpod_annotation:
dependency: "direct main" dependency: "direct main"
description: description:
name: riverpod_annotation name: riverpod_annotation
sha256: e14b0bf45b71326654e2705d462f21b958f987087be850afd60578fcd502d1b8 sha256: d8154e04008b98015ee3e0514a5d929e3d15605790d28bcd74e63e2d415632a1
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.6.1" version: "3.0.1"
riverpod_generator: riverpod_generator:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: riverpod_generator name: riverpod_generator
sha256: "44a0992d54473eb199ede00e2260bd3c262a86560e3c6f6374503d86d0580e36" sha256: af92fa4051568071f7e12bd44b8b4f3adc7470e3676bd5ac953582a9cce4a1c0
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.6.5" version: "3.0.1"
screen_retriever: screen_retriever:
dependency: transitive dependency: transitive
description: description:
@@ -1352,10 +1374,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: share_plus name: share_plus
sha256: d7dc0630a923883c6328ca31b89aa682bacbf2f8304162d29f7c6aaff03a27a1 sha256: "3424e9d5c22fd7f7590254ba09465febd6f8827c8b19a44350de4ac31d92d3a6"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "11.1.0" version: "12.0.0"
share_plus_platform_interface: share_plus_platform_interface:
dependency: transitive dependency: transitive
description: description:
@@ -1461,10 +1483,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: source_gen name: source_gen
sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b" sha256: "7b19d6ba131c6eb98bfcbf8d56c1a7002eba438af2e7ae6f8398b2b0f4f381e3"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.0" version: "3.1.0"
source_helper: source_helper:
dependency: transitive dependency: transitive
description: description:

View File

@@ -19,9 +19,9 @@ dependencies:
easy_isolate: ^1.3.0 easy_isolate: ^1.3.0
extended_image: ^10.0.0 extended_image: ^10.0.0
file_picker: ^10.1.9 file_picker: ^10.1.9
flutter_riverpod: ^2.6.1 flutter_riverpod: ^3.0.1
flutter_highlight: ^0.7.0 flutter_highlight: ^0.7.0
flutter_displaymode: ^0.6.0 flutter_displaymode: ^0.7.0
fl_chart: ^1.0.0 fl_chart: ^1.0.0
freezed_annotation: ^3.0.0 freezed_annotation: ^3.0.0
highlight: ^0.7.0 highlight: ^0.7.0
@@ -29,8 +29,8 @@ dependencies:
intl: ^0.20.2 intl: ^0.20.2
json_annotation: ^4.9.0 json_annotation: ^4.9.0
responsive_framework: ^1.5.1 responsive_framework: ^1.5.1
re_editor: ^0.7.0 re_editor: ^0.8.0
riverpod_annotation: ^2.6.1 riverpod_annotation: ^3.0.1
shared_preferences: ^2.1.1 shared_preferences: ^2.1.1
wakelock_plus: ^1.2.4 wakelock_plus: ^1.2.4
wake_on_lan: ^4.1.1+3 wake_on_lan: ^4.1.1+3
@@ -74,8 +74,8 @@ dependency_overrides:
# path: ../dartssh2 # path: ../dartssh2
# xterm: # xterm:
# path: ../xterm.dart # path: ../xterm.dart
# fl_lib: fl_lib:
# path: ../fl_lib path: ../fl_lib
# fl_build: # fl_build:
# path: ../fl_build # path: ../fl_build
gtk: # TODO: remove it after fixed in upstream gtk: # TODO: remove it after fixed in upstream
@@ -91,7 +91,7 @@ dev_dependencies:
flutter_lints: ^6.0.0 flutter_lints: ^6.0.0
json_serializable: ^6.8.0 json_serializable: ^6.8.0
freezed: ^3.0.0 freezed: ^3.0.0
riverpod_generator: ^2.6.1 riverpod_generator: ^3.0.1
test: ^1.24.0 test: ^1.24.0
flutter_test: flutter_test:
sdk: flutter sdk: flutter