Fix android vpn close issues
Add requests page Fix checkUpdate dark mode style error Fix quickStart error open app Add memory proxies tab index Support hidden group Optimize logs
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:fl_clash/common/common.dart';
|
||||
import 'package:fl_clash/enum/enum.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'connection.dart';
|
||||
import 'ffi.dart';
|
||||
import 'log.dart';
|
||||
import 'navigation.dart';
|
||||
@@ -29,6 +32,7 @@ class AppState with ChangeNotifier {
|
||||
bool _isCompatible;
|
||||
List<Group> _groups;
|
||||
double _viewWidth;
|
||||
List<Connection> _requests;
|
||||
|
||||
AppState({
|
||||
required Mode mode,
|
||||
@@ -42,6 +46,7 @@ class AppState with ChangeNotifier {
|
||||
_viewWidth = 0,
|
||||
_selectedMap = selectedMap,
|
||||
_sortNum = 0,
|
||||
_requests = [],
|
||||
_mode = mode,
|
||||
_delayMap = {},
|
||||
_groups = [],
|
||||
@@ -157,6 +162,24 @@ class AppState with ChangeNotifier {
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
List<Connection> get requests => _requests;
|
||||
|
||||
set requests(List<Connection> value) {
|
||||
if (_requests != value) {
|
||||
_requests = value;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
|
||||
addRequest(Connection value) {
|
||||
_requests.add(value);
|
||||
final maxLength = Platform.isAndroid ? 1000 : 60;
|
||||
if (_requests.length > maxLength) {
|
||||
_requests = _requests.sublist(_requests.length - maxLength);
|
||||
}
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
List<Log> get logs => _logs;
|
||||
|
||||
set logs(List<Log> value) {
|
||||
@@ -168,8 +191,10 @@ class AppState with ChangeNotifier {
|
||||
|
||||
addLog(Log log) {
|
||||
_logs.add(log);
|
||||
if (_logs.length > 60) {
|
||||
_logs = _logs.sublist(_logs.length - 60);
|
||||
if (!Platform.isAndroid) {
|
||||
if (_logs.length > 60) {
|
||||
_logs = _logs.sublist(_logs.length - 60);
|
||||
}
|
||||
}
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
@@ -113,39 +113,29 @@ class ClashConfig extends ChangeNotifier {
|
||||
LogLevel _logLevel;
|
||||
String _externalController;
|
||||
Mode _mode;
|
||||
FindProcessMode _findProcessMode;
|
||||
bool _unifiedDelay;
|
||||
bool _tcpConcurrent;
|
||||
Tun _tun;
|
||||
Dns _dns;
|
||||
List<String> _rules;
|
||||
|
||||
ClashConfig({
|
||||
int? mixedPort,
|
||||
Mode? mode,
|
||||
bool? allowLan,
|
||||
bool? ipv6,
|
||||
LogLevel? logLevel,
|
||||
String? externalController,
|
||||
String? geodataLoader,
|
||||
bool? unifiedDelay,
|
||||
Tun? tun,
|
||||
Dns? dns,
|
||||
bool? tcpConcurrent,
|
||||
List<String>? rules,
|
||||
}) : _mixedPort = mixedPort ?? 7890,
|
||||
_mode = mode ?? Mode.rule,
|
||||
_ipv6 = ipv6 ?? false,
|
||||
_allowLan = allowLan ?? false,
|
||||
_tcpConcurrent = tcpConcurrent ?? false,
|
||||
_logLevel = logLevel ?? LogLevel.info,
|
||||
_tun = tun ?? const Tun(),
|
||||
_unifiedDelay = unifiedDelay ?? false,
|
||||
_geodataLoader = geodataLoader ?? geodataLoaderMemconservative,
|
||||
_externalController = externalController ?? '',
|
||||
_dns = dns ?? Dns(),
|
||||
_rules = rules ?? [];
|
||||
ClashConfig()
|
||||
: _mixedPort = 7890,
|
||||
_mode = Mode.rule,
|
||||
_ipv6 = false,
|
||||
_findProcessMode = FindProcessMode.off,
|
||||
_allowLan = false,
|
||||
_tcpConcurrent = false,
|
||||
_logLevel = LogLevel.info,
|
||||
_tun = const Tun(),
|
||||
_unifiedDelay = false,
|
||||
_geodataLoader = geodataLoaderMemconservative,
|
||||
_externalController = '',
|
||||
_dns = Dns(),
|
||||
_rules = [];
|
||||
|
||||
@JsonKey(name: "mixed-port")
|
||||
@JsonKey(name: "mixed-port", defaultValue: 7890)
|
||||
int get mixedPort => _mixedPort;
|
||||
|
||||
set mixedPort(int value) {
|
||||
@@ -155,6 +145,7 @@ class ClashConfig extends ChangeNotifier {
|
||||
}
|
||||
}
|
||||
|
||||
@JsonKey(defaultValue: Mode.rule)
|
||||
Mode get mode => _mode;
|
||||
|
||||
set mode(Mode value) {
|
||||
@@ -164,6 +155,16 @@ class ClashConfig extends ChangeNotifier {
|
||||
}
|
||||
}
|
||||
|
||||
@JsonKey(name: "find-process-mode", defaultValue: FindProcessMode.off)
|
||||
FindProcessMode get findProcessMode => _findProcessMode;
|
||||
|
||||
set findProcessMode(FindProcessMode value) {
|
||||
if (_findProcessMode != value) {
|
||||
_findProcessMode = value;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
|
||||
@JsonKey(name: "allow-lan")
|
||||
bool get allowLan => _allowLan;
|
||||
|
||||
@@ -174,7 +175,7 @@ class ClashConfig extends ChangeNotifier {
|
||||
}
|
||||
}
|
||||
|
||||
@JsonKey(name: "log-level")
|
||||
@JsonKey(name: "log-level", defaultValue: LogLevel.info)
|
||||
LogLevel get logLevel => _logLevel;
|
||||
|
||||
set logLevel(LogLevel value) {
|
||||
@@ -282,17 +283,6 @@ class ClashConfig extends ChangeNotifier {
|
||||
return _$ClashConfigFromJson(json);
|
||||
}
|
||||
|
||||
ClashConfig copyWith({Tun? tun}) {
|
||||
return ClashConfig(
|
||||
mixedPort: mixedPort,
|
||||
mode: mode,
|
||||
logLevel: logLevel,
|
||||
tun: tun ?? this.tun,
|
||||
dns: dns,
|
||||
allowLan: allowLan,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'ClashConfig{_mixedPort: $_mixedPort, _allowLan: $_allowLan, _mode: $_mode, _logLevel: $_logLevel, _tun: $_tun, _dns: $_dns, _rules: $_rules}';
|
||||
|
||||
@@ -32,8 +32,7 @@ class Props with _$Props {
|
||||
bool? systemProxy,
|
||||
}) = _Props;
|
||||
|
||||
factory Props.fromJson(Map<String, Object?> json) =>
|
||||
_$PropsFromJson(json);
|
||||
factory Props.fromJson(Map<String, Object?> json) => _$PropsFromJson(json);
|
||||
}
|
||||
|
||||
@JsonSerializable()
|
||||
@@ -151,6 +150,15 @@ class Config extends ChangeNotifier {
|
||||
}
|
||||
}
|
||||
|
||||
String? get currentGroupName => currentProfile?.currentGroupName;
|
||||
|
||||
updateCurrentGroupName(String groupName) {
|
||||
if (currentProfile?.currentGroupName != groupName) {
|
||||
currentProfile?.currentGroupName = groupName;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
|
||||
SelectedMap get currentSelectedMap {
|
||||
return currentProfile?.selectedMap ?? {};
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ class Metadata with _$Metadata {
|
||||
required String destinationIP,
|
||||
required String destinationPort,
|
||||
required String host,
|
||||
required String process,
|
||||
required String remoteDestination,
|
||||
}) = _Metadata;
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import 'package:fl_clash/enum/enum.dart';
|
||||
import 'package:fl_clash/models/clash_config.dart';
|
||||
import 'package:fl_clash/models/connection.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
part 'generated/ffi.g.dart';
|
||||
@@ -66,16 +67,25 @@ class Now with _$Now {
|
||||
@freezed
|
||||
class Process with _$Process {
|
||||
const factory Process({
|
||||
required int uid,
|
||||
required String network,
|
||||
required String source,
|
||||
required String target,
|
||||
required int id,
|
||||
required Metadata metadata,
|
||||
}) = _Process;
|
||||
|
||||
factory Process.fromJson(Map<String, Object?> json) =>
|
||||
_$ProcessFromJson(json);
|
||||
}
|
||||
|
||||
@freezed
|
||||
class ProcessMapItem with _$ProcessMapItem {
|
||||
const factory ProcessMapItem({
|
||||
required int id,
|
||||
String? value,
|
||||
}) = _ProcessMapItem;
|
||||
|
||||
factory ProcessMapItem.fromJson(Map<String, Object?> json) =>
|
||||
_$ProcessMapItemFromJson(json);
|
||||
}
|
||||
|
||||
@freezed
|
||||
class ExternalProvider with _$ExternalProvider {
|
||||
const factory ExternalProvider({
|
||||
|
||||
@@ -35,30 +35,29 @@ Map<String, dynamic> _$DnsToJson(Dns instance) => <String, dynamic>{
|
||||
'fake-ip-filter': instance.fakeIpFilter,
|
||||
};
|
||||
|
||||
ClashConfig _$ClashConfigFromJson(Map<String, dynamic> json) => ClashConfig(
|
||||
mixedPort: (json['mixed-port'] as num?)?.toInt(),
|
||||
mode: $enumDecodeNullable(_$ModeEnumMap, json['mode']),
|
||||
allowLan: json['allow-lan'] as bool?,
|
||||
ipv6: json['ipv6'] as bool? ?? false,
|
||||
logLevel: $enumDecodeNullable(_$LogLevelEnumMap, json['log-level']),
|
||||
externalController: json['external-controller'] as String? ?? '',
|
||||
geodataLoader: json['geodata-loader'] as String? ?? 'memconservative',
|
||||
unifiedDelay: json['unified-delay'] as bool? ?? false,
|
||||
tun: json['tun'] == null
|
||||
? null
|
||||
: Tun.fromJson(json['tun'] as Map<String, dynamic>),
|
||||
dns: json['dns'] == null
|
||||
? null
|
||||
: Dns.fromJson(json['dns'] as Map<String, dynamic>),
|
||||
tcpConcurrent: json['tcp-concurrent'] as bool? ?? false,
|
||||
rules:
|
||||
(json['rules'] as List<dynamic>?)?.map((e) => e as String).toList(),
|
||||
);
|
||||
ClashConfig _$ClashConfigFromJson(Map<String, dynamic> json) => ClashConfig()
|
||||
..mixedPort = (json['mixed-port'] as num?)?.toInt() ?? 7890
|
||||
..mode = $enumDecodeNullable(_$ModeEnumMap, json['mode']) ?? Mode.rule
|
||||
..findProcessMode = $enumDecodeNullable(
|
||||
_$FindProcessModeEnumMap, json['find-process-mode']) ??
|
||||
FindProcessMode.off
|
||||
..allowLan = json['allow-lan'] as bool
|
||||
..logLevel =
|
||||
$enumDecodeNullable(_$LogLevelEnumMap, json['log-level']) ?? LogLevel.info
|
||||
..externalController = json['external-controller'] as String? ?? ''
|
||||
..ipv6 = json['ipv6'] as bool? ?? false
|
||||
..geodataLoader = json['geodata-loader'] as String? ?? 'memconservative'
|
||||
..unifiedDelay = json['unified-delay'] as bool? ?? false
|
||||
..tcpConcurrent = json['tcp-concurrent'] as bool? ?? false
|
||||
..tun = Tun.fromJson(json['tun'] as Map<String, dynamic>)
|
||||
..dns = Dns.fromJson(json['dns'] as Map<String, dynamic>)
|
||||
..rules = (json['rules'] as List<dynamic>).map((e) => e as String).toList();
|
||||
|
||||
Map<String, dynamic> _$ClashConfigToJson(ClashConfig instance) =>
|
||||
<String, dynamic>{
|
||||
'mixed-port': instance.mixedPort,
|
||||
'mode': _$ModeEnumMap[instance.mode]!,
|
||||
'find-process-mode': _$FindProcessModeEnumMap[instance.findProcessMode]!,
|
||||
'allow-lan': instance.allowLan,
|
||||
'log-level': _$LogLevelEnumMap[instance.logLevel]!,
|
||||
'external-controller': instance.externalController,
|
||||
@@ -77,6 +76,11 @@ const _$ModeEnumMap = {
|
||||
Mode.direct: 'direct',
|
||||
};
|
||||
|
||||
const _$FindProcessModeEnumMap = {
|
||||
FindProcessMode.always: 'always',
|
||||
FindProcessMode.off: 'off',
|
||||
};
|
||||
|
||||
const _$LogLevelEnumMap = {
|
||||
LogLevel.debug: 'debug',
|
||||
LogLevel.info: 'info',
|
||||
|
||||
@@ -27,6 +27,7 @@ mixin _$Metadata {
|
||||
String get destinationIP => throw _privateConstructorUsedError;
|
||||
String get destinationPort => throw _privateConstructorUsedError;
|
||||
String get host => throw _privateConstructorUsedError;
|
||||
String get process => throw _privateConstructorUsedError;
|
||||
String get remoteDestination => throw _privateConstructorUsedError;
|
||||
|
||||
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
||||
@@ -48,6 +49,7 @@ abstract class $MetadataCopyWith<$Res> {
|
||||
String destinationIP,
|
||||
String destinationPort,
|
||||
String host,
|
||||
String process,
|
||||
String remoteDestination});
|
||||
}
|
||||
|
||||
@@ -71,6 +73,7 @@ class _$MetadataCopyWithImpl<$Res, $Val extends Metadata>
|
||||
Object? destinationIP = null,
|
||||
Object? destinationPort = null,
|
||||
Object? host = null,
|
||||
Object? process = null,
|
||||
Object? remoteDestination = null,
|
||||
}) {
|
||||
return _then(_value.copyWith(
|
||||
@@ -102,6 +105,10 @@ class _$MetadataCopyWithImpl<$Res, $Val extends Metadata>
|
||||
? _value.host
|
||||
: host // ignore: cast_nullable_to_non_nullable
|
||||
as String,
|
||||
process: null == process
|
||||
? _value.process
|
||||
: process // ignore: cast_nullable_to_non_nullable
|
||||
as String,
|
||||
remoteDestination: null == remoteDestination
|
||||
? _value.remoteDestination
|
||||
: remoteDestination // ignore: cast_nullable_to_non_nullable
|
||||
@@ -126,6 +133,7 @@ abstract class _$$MetadataImplCopyWith<$Res>
|
||||
String destinationIP,
|
||||
String destinationPort,
|
||||
String host,
|
||||
String process,
|
||||
String remoteDestination});
|
||||
}
|
||||
|
||||
@@ -147,6 +155,7 @@ class __$$MetadataImplCopyWithImpl<$Res>
|
||||
Object? destinationIP = null,
|
||||
Object? destinationPort = null,
|
||||
Object? host = null,
|
||||
Object? process = null,
|
||||
Object? remoteDestination = null,
|
||||
}) {
|
||||
return _then(_$MetadataImpl(
|
||||
@@ -178,6 +187,10 @@ class __$$MetadataImplCopyWithImpl<$Res>
|
||||
? _value.host
|
||||
: host // ignore: cast_nullable_to_non_nullable
|
||||
as String,
|
||||
process: null == process
|
||||
? _value.process
|
||||
: process // ignore: cast_nullable_to_non_nullable
|
||||
as String,
|
||||
remoteDestination: null == remoteDestination
|
||||
? _value.remoteDestination
|
||||
: remoteDestination // ignore: cast_nullable_to_non_nullable
|
||||
@@ -197,6 +210,7 @@ class _$MetadataImpl implements _Metadata {
|
||||
required this.destinationIP,
|
||||
required this.destinationPort,
|
||||
required this.host,
|
||||
required this.process,
|
||||
required this.remoteDestination});
|
||||
|
||||
factory _$MetadataImpl.fromJson(Map<String, dynamic> json) =>
|
||||
@@ -217,11 +231,13 @@ class _$MetadataImpl implements _Metadata {
|
||||
@override
|
||||
final String host;
|
||||
@override
|
||||
final String process;
|
||||
@override
|
||||
final String remoteDestination;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'Metadata(uid: $uid, network: $network, sourceIP: $sourceIP, sourcePort: $sourcePort, destinationIP: $destinationIP, destinationPort: $destinationPort, host: $host, remoteDestination: $remoteDestination)';
|
||||
return 'Metadata(uid: $uid, network: $network, sourceIP: $sourceIP, sourcePort: $sourcePort, destinationIP: $destinationIP, destinationPort: $destinationPort, host: $host, process: $process, remoteDestination: $remoteDestination)';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -240,14 +256,24 @@ class _$MetadataImpl implements _Metadata {
|
||||
(identical(other.destinationPort, destinationPort) ||
|
||||
other.destinationPort == destinationPort) &&
|
||||
(identical(other.host, host) || other.host == host) &&
|
||||
(identical(other.process, process) || other.process == process) &&
|
||||
(identical(other.remoteDestination, remoteDestination) ||
|
||||
other.remoteDestination == remoteDestination));
|
||||
}
|
||||
|
||||
@JsonKey(ignore: true)
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType, uid, network, sourceIP,
|
||||
sourcePort, destinationIP, destinationPort, host, remoteDestination);
|
||||
int get hashCode => Object.hash(
|
||||
runtimeType,
|
||||
uid,
|
||||
network,
|
||||
sourceIP,
|
||||
sourcePort,
|
||||
destinationIP,
|
||||
destinationPort,
|
||||
host,
|
||||
process,
|
||||
remoteDestination);
|
||||
|
||||
@JsonKey(ignore: true)
|
||||
@override
|
||||
@@ -272,6 +298,7 @@ abstract class _Metadata implements Metadata {
|
||||
required final String destinationIP,
|
||||
required final String destinationPort,
|
||||
required final String host,
|
||||
required final String process,
|
||||
required final String remoteDestination}) = _$MetadataImpl;
|
||||
|
||||
factory _Metadata.fromJson(Map<String, dynamic> json) =
|
||||
@@ -292,6 +319,8 @@ abstract class _Metadata implements Metadata {
|
||||
@override
|
||||
String get host;
|
||||
@override
|
||||
String get process;
|
||||
@override
|
||||
String get remoteDestination;
|
||||
@override
|
||||
@JsonKey(ignore: true)
|
||||
|
||||
@@ -15,6 +15,7 @@ _$MetadataImpl _$$MetadataImplFromJson(Map<String, dynamic> json) =>
|
||||
destinationIP: json['destinationIP'] as String,
|
||||
destinationPort: json['destinationPort'] as String,
|
||||
host: json['host'] as String,
|
||||
process: json['process'] as String,
|
||||
remoteDestination: json['remoteDestination'] as String,
|
||||
);
|
||||
|
||||
@@ -27,6 +28,7 @@ Map<String, dynamic> _$$MetadataImplToJson(_$MetadataImpl instance) =>
|
||||
'destinationIP': instance.destinationIP,
|
||||
'destinationPort': instance.destinationPort,
|
||||
'host': instance.host,
|
||||
'process': instance.process,
|
||||
'remoteDestination': instance.remoteDestination,
|
||||
};
|
||||
|
||||
|
||||
@@ -848,10 +848,8 @@ Process _$ProcessFromJson(Map<String, dynamic> json) {
|
||||
|
||||
/// @nodoc
|
||||
mixin _$Process {
|
||||
int get uid => throw _privateConstructorUsedError;
|
||||
String get network => throw _privateConstructorUsedError;
|
||||
String get source => throw _privateConstructorUsedError;
|
||||
String get target => throw _privateConstructorUsedError;
|
||||
int get id => throw _privateConstructorUsedError;
|
||||
Metadata get metadata => throw _privateConstructorUsedError;
|
||||
|
||||
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
||||
@JsonKey(ignore: true)
|
||||
@@ -863,7 +861,9 @@ abstract class $ProcessCopyWith<$Res> {
|
||||
factory $ProcessCopyWith(Process value, $Res Function(Process) then) =
|
||||
_$ProcessCopyWithImpl<$Res, Process>;
|
||||
@useResult
|
||||
$Res call({int uid, String network, String source, String target});
|
||||
$Res call({int id, Metadata metadata});
|
||||
|
||||
$MetadataCopyWith<$Res> get metadata;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
@@ -879,30 +879,28 @@ class _$ProcessCopyWithImpl<$Res, $Val extends Process>
|
||||
@pragma('vm:prefer-inline')
|
||||
@override
|
||||
$Res call({
|
||||
Object? uid = null,
|
||||
Object? network = null,
|
||||
Object? source = null,
|
||||
Object? target = null,
|
||||
Object? id = null,
|
||||
Object? metadata = null,
|
||||
}) {
|
||||
return _then(_value.copyWith(
|
||||
uid: null == uid
|
||||
? _value.uid
|
||||
: uid // ignore: cast_nullable_to_non_nullable
|
||||
id: null == id
|
||||
? _value.id
|
||||
: id // ignore: cast_nullable_to_non_nullable
|
||||
as int,
|
||||
network: null == network
|
||||
? _value.network
|
||||
: network // ignore: cast_nullable_to_non_nullable
|
||||
as String,
|
||||
source: null == source
|
||||
? _value.source
|
||||
: source // ignore: cast_nullable_to_non_nullable
|
||||
as String,
|
||||
target: null == target
|
||||
? _value.target
|
||||
: target // ignore: cast_nullable_to_non_nullable
|
||||
as String,
|
||||
metadata: null == metadata
|
||||
? _value.metadata
|
||||
: metadata // ignore: cast_nullable_to_non_nullable
|
||||
as Metadata,
|
||||
) as $Val);
|
||||
}
|
||||
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
$MetadataCopyWith<$Res> get metadata {
|
||||
return $MetadataCopyWith<$Res>(_value.metadata, (value) {
|
||||
return _then(_value.copyWith(metadata: value) as $Val);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
@@ -912,7 +910,10 @@ abstract class _$$ProcessImplCopyWith<$Res> implements $ProcessCopyWith<$Res> {
|
||||
__$$ProcessImplCopyWithImpl<$Res>;
|
||||
@override
|
||||
@useResult
|
||||
$Res call({int uid, String network, String source, String target});
|
||||
$Res call({int id, Metadata metadata});
|
||||
|
||||
@override
|
||||
$MetadataCopyWith<$Res> get metadata;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
@@ -926,28 +927,18 @@ class __$$ProcessImplCopyWithImpl<$Res>
|
||||
@pragma('vm:prefer-inline')
|
||||
@override
|
||||
$Res call({
|
||||
Object? uid = null,
|
||||
Object? network = null,
|
||||
Object? source = null,
|
||||
Object? target = null,
|
||||
Object? id = null,
|
||||
Object? metadata = null,
|
||||
}) {
|
||||
return _then(_$ProcessImpl(
|
||||
uid: null == uid
|
||||
? _value.uid
|
||||
: uid // ignore: cast_nullable_to_non_nullable
|
||||
id: null == id
|
||||
? _value.id
|
||||
: id // ignore: cast_nullable_to_non_nullable
|
||||
as int,
|
||||
network: null == network
|
||||
? _value.network
|
||||
: network // ignore: cast_nullable_to_non_nullable
|
||||
as String,
|
||||
source: null == source
|
||||
? _value.source
|
||||
: source // ignore: cast_nullable_to_non_nullable
|
||||
as String,
|
||||
target: null == target
|
||||
? _value.target
|
||||
: target // ignore: cast_nullable_to_non_nullable
|
||||
as String,
|
||||
metadata: null == metadata
|
||||
? _value.metadata
|
||||
: metadata // ignore: cast_nullable_to_non_nullable
|
||||
as Metadata,
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -955,27 +946,19 @@ class __$$ProcessImplCopyWithImpl<$Res>
|
||||
/// @nodoc
|
||||
@JsonSerializable()
|
||||
class _$ProcessImpl implements _Process {
|
||||
const _$ProcessImpl(
|
||||
{required this.uid,
|
||||
required this.network,
|
||||
required this.source,
|
||||
required this.target});
|
||||
const _$ProcessImpl({required this.id, required this.metadata});
|
||||
|
||||
factory _$ProcessImpl.fromJson(Map<String, dynamic> json) =>
|
||||
_$$ProcessImplFromJson(json);
|
||||
|
||||
@override
|
||||
final int uid;
|
||||
final int id;
|
||||
@override
|
||||
final String network;
|
||||
@override
|
||||
final String source;
|
||||
@override
|
||||
final String target;
|
||||
final Metadata metadata;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'Process(uid: $uid, network: $network, source: $source, target: $target)';
|
||||
return 'Process(id: $id, metadata: $metadata)';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -983,15 +966,14 @@ class _$ProcessImpl implements _Process {
|
||||
return identical(this, other) ||
|
||||
(other.runtimeType == runtimeType &&
|
||||
other is _$ProcessImpl &&
|
||||
(identical(other.uid, uid) || other.uid == uid) &&
|
||||
(identical(other.network, network) || other.network == network) &&
|
||||
(identical(other.source, source) || other.source == source) &&
|
||||
(identical(other.target, target) || other.target == target));
|
||||
(identical(other.id, id) || other.id == id) &&
|
||||
(identical(other.metadata, metadata) ||
|
||||
other.metadata == metadata));
|
||||
}
|
||||
|
||||
@JsonKey(ignore: true)
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType, uid, network, source, target);
|
||||
int get hashCode => Object.hash(runtimeType, id, metadata);
|
||||
|
||||
@JsonKey(ignore: true)
|
||||
@override
|
||||
@@ -1009,27 +991,175 @@ class _$ProcessImpl implements _Process {
|
||||
|
||||
abstract class _Process implements Process {
|
||||
const factory _Process(
|
||||
{required final int uid,
|
||||
required final String network,
|
||||
required final String source,
|
||||
required final String target}) = _$ProcessImpl;
|
||||
{required final int id,
|
||||
required final Metadata metadata}) = _$ProcessImpl;
|
||||
|
||||
factory _Process.fromJson(Map<String, dynamic> json) = _$ProcessImpl.fromJson;
|
||||
|
||||
@override
|
||||
int get uid;
|
||||
int get id;
|
||||
@override
|
||||
String get network;
|
||||
@override
|
||||
String get source;
|
||||
@override
|
||||
String get target;
|
||||
Metadata get metadata;
|
||||
@override
|
||||
@JsonKey(ignore: true)
|
||||
_$$ProcessImplCopyWith<_$ProcessImpl> get copyWith =>
|
||||
throw _privateConstructorUsedError;
|
||||
}
|
||||
|
||||
ProcessMapItem _$ProcessMapItemFromJson(Map<String, dynamic> json) {
|
||||
return _ProcessMapItem.fromJson(json);
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
mixin _$ProcessMapItem {
|
||||
int get id => throw _privateConstructorUsedError;
|
||||
String? get value => throw _privateConstructorUsedError;
|
||||
|
||||
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
||||
@JsonKey(ignore: true)
|
||||
$ProcessMapItemCopyWith<ProcessMapItem> get copyWith =>
|
||||
throw _privateConstructorUsedError;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class $ProcessMapItemCopyWith<$Res> {
|
||||
factory $ProcessMapItemCopyWith(
|
||||
ProcessMapItem value, $Res Function(ProcessMapItem) then) =
|
||||
_$ProcessMapItemCopyWithImpl<$Res, ProcessMapItem>;
|
||||
@useResult
|
||||
$Res call({int id, String? value});
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class _$ProcessMapItemCopyWithImpl<$Res, $Val extends ProcessMapItem>
|
||||
implements $ProcessMapItemCopyWith<$Res> {
|
||||
_$ProcessMapItemCopyWithImpl(this._value, this._then);
|
||||
|
||||
// ignore: unused_field
|
||||
final $Val _value;
|
||||
// ignore: unused_field
|
||||
final $Res Function($Val) _then;
|
||||
|
||||
@pragma('vm:prefer-inline')
|
||||
@override
|
||||
$Res call({
|
||||
Object? id = null,
|
||||
Object? value = freezed,
|
||||
}) {
|
||||
return _then(_value.copyWith(
|
||||
id: null == id
|
||||
? _value.id
|
||||
: id // ignore: cast_nullable_to_non_nullable
|
||||
as int,
|
||||
value: freezed == value
|
||||
? _value.value
|
||||
: value // ignore: cast_nullable_to_non_nullable
|
||||
as String?,
|
||||
) as $Val);
|
||||
}
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class _$$ProcessMapItemImplCopyWith<$Res>
|
||||
implements $ProcessMapItemCopyWith<$Res> {
|
||||
factory _$$ProcessMapItemImplCopyWith(_$ProcessMapItemImpl value,
|
||||
$Res Function(_$ProcessMapItemImpl) then) =
|
||||
__$$ProcessMapItemImplCopyWithImpl<$Res>;
|
||||
@override
|
||||
@useResult
|
||||
$Res call({int id, String? value});
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class __$$ProcessMapItemImplCopyWithImpl<$Res>
|
||||
extends _$ProcessMapItemCopyWithImpl<$Res, _$ProcessMapItemImpl>
|
||||
implements _$$ProcessMapItemImplCopyWith<$Res> {
|
||||
__$$ProcessMapItemImplCopyWithImpl(
|
||||
_$ProcessMapItemImpl _value, $Res Function(_$ProcessMapItemImpl) _then)
|
||||
: super(_value, _then);
|
||||
|
||||
@pragma('vm:prefer-inline')
|
||||
@override
|
||||
$Res call({
|
||||
Object? id = null,
|
||||
Object? value = freezed,
|
||||
}) {
|
||||
return _then(_$ProcessMapItemImpl(
|
||||
id: null == id
|
||||
? _value.id
|
||||
: id // ignore: cast_nullable_to_non_nullable
|
||||
as int,
|
||||
value: freezed == value
|
||||
? _value.value
|
||||
: value // ignore: cast_nullable_to_non_nullable
|
||||
as String?,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
@JsonSerializable()
|
||||
class _$ProcessMapItemImpl implements _ProcessMapItem {
|
||||
const _$ProcessMapItemImpl({required this.id, this.value});
|
||||
|
||||
factory _$ProcessMapItemImpl.fromJson(Map<String, dynamic> json) =>
|
||||
_$$ProcessMapItemImplFromJson(json);
|
||||
|
||||
@override
|
||||
final int id;
|
||||
@override
|
||||
final String? value;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'ProcessMapItem(id: $id, value: $value)';
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) ||
|
||||
(other.runtimeType == runtimeType &&
|
||||
other is _$ProcessMapItemImpl &&
|
||||
(identical(other.id, id) || other.id == id) &&
|
||||
(identical(other.value, value) || other.value == value));
|
||||
}
|
||||
|
||||
@JsonKey(ignore: true)
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType, id, value);
|
||||
|
||||
@JsonKey(ignore: true)
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
_$$ProcessMapItemImplCopyWith<_$ProcessMapItemImpl> get copyWith =>
|
||||
__$$ProcessMapItemImplCopyWithImpl<_$ProcessMapItemImpl>(
|
||||
this, _$identity);
|
||||
|
||||
@override
|
||||
Map<String, dynamic> toJson() {
|
||||
return _$$ProcessMapItemImplToJson(
|
||||
this,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
abstract class _ProcessMapItem implements ProcessMapItem {
|
||||
const factory _ProcessMapItem({required final int id, final String? value}) =
|
||||
_$ProcessMapItemImpl;
|
||||
|
||||
factory _ProcessMapItem.fromJson(Map<String, dynamic> json) =
|
||||
_$ProcessMapItemImpl.fromJson;
|
||||
|
||||
@override
|
||||
int get id;
|
||||
@override
|
||||
String? get value;
|
||||
@override
|
||||
@JsonKey(ignore: true)
|
||||
_$$ProcessMapItemImplCopyWith<_$ProcessMapItemImpl> get copyWith =>
|
||||
throw _privateConstructorUsedError;
|
||||
}
|
||||
|
||||
ExternalProvider _$ExternalProviderFromJson(Map<String, dynamic> json) {
|
||||
return _ExternalProvider.fromJson(json);
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@ const _$MessageTypeEnumMap = {
|
||||
MessageType.delay: 'delay',
|
||||
MessageType.process: 'process',
|
||||
MessageType.now: 'now',
|
||||
MessageType.request: 'request',
|
||||
};
|
||||
|
||||
_$DelayImpl _$$DelayImplFromJson(Map<String, dynamic> json) => _$DelayImpl(
|
||||
@@ -81,18 +82,27 @@ Map<String, dynamic> _$$NowImplToJson(_$NowImpl instance) => <String, dynamic>{
|
||||
|
||||
_$ProcessImpl _$$ProcessImplFromJson(Map<String, dynamic> json) =>
|
||||
_$ProcessImpl(
|
||||
uid: (json['uid'] as num).toInt(),
|
||||
network: json['network'] as String,
|
||||
source: json['source'] as String,
|
||||
target: json['target'] as String,
|
||||
id: (json['id'] as num).toInt(),
|
||||
metadata: Metadata.fromJson(json['metadata'] as Map<String, dynamic>),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$$ProcessImplToJson(_$ProcessImpl instance) =>
|
||||
<String, dynamic>{
|
||||
'uid': instance.uid,
|
||||
'network': instance.network,
|
||||
'source': instance.source,
|
||||
'target': instance.target,
|
||||
'id': instance.id,
|
||||
'metadata': instance.metadata,
|
||||
};
|
||||
|
||||
_$ProcessMapItemImpl _$$ProcessMapItemImplFromJson(Map<String, dynamic> json) =>
|
||||
_$ProcessMapItemImpl(
|
||||
id: (json['id'] as num).toInt(),
|
||||
value: json['value'] as String?,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$$ProcessMapItemImplToJson(
|
||||
_$ProcessMapItemImpl instance) =>
|
||||
<String, dynamic>{
|
||||
'id': instance.id,
|
||||
'value': instance.value,
|
||||
};
|
||||
|
||||
_$ExternalProviderImpl _$$ExternalProviderImplFromJson(
|
||||
|
||||
@@ -24,10 +24,10 @@ Profile _$ProfileFromJson(Map<String, dynamic> json) => Profile(
|
||||
id: json['id'] as String?,
|
||||
label: json['label'] as String?,
|
||||
url: json['url'] as String?,
|
||||
currentGroupName: json['currentGroupName'] as String?,
|
||||
userInfo: json['userInfo'] == null
|
||||
? null
|
||||
: UserInfo.fromJson(json['userInfo'] as Map<String, dynamic>),
|
||||
proxyName: json['proxyName'] as String?,
|
||||
lastUpdateDate: json['lastUpdateDate'] == null
|
||||
? null
|
||||
: DateTime.parse(json['lastUpdateDate'] as String),
|
||||
@@ -43,7 +43,7 @@ Profile _$ProfileFromJson(Map<String, dynamic> json) => Profile(
|
||||
Map<String, dynamic> _$ProfileToJson(Profile instance) => <String, dynamic>{
|
||||
'id': instance.id,
|
||||
'label': instance.label,
|
||||
'proxyName': instance.proxyName,
|
||||
'currentGroupName': instance.currentGroupName,
|
||||
'url': instance.url,
|
||||
'lastUpdateDate': instance.lastUpdateDate?.toIso8601String(),
|
||||
'autoUpdateDuration': instance.autoUpdateDuration.inMicroseconds,
|
||||
|
||||
@@ -1583,6 +1583,7 @@ abstract class _ProxiesCardSelectorState implements ProxiesCardSelectorState {
|
||||
/// @nodoc
|
||||
mixin _$ProxiesSelectorState {
|
||||
List<String> get groupNames => throw _privateConstructorUsedError;
|
||||
String? get currentGroupName => throw _privateConstructorUsedError;
|
||||
|
||||
@JsonKey(ignore: true)
|
||||
$ProxiesSelectorStateCopyWith<ProxiesSelectorState> get copyWith =>
|
||||
@@ -1595,7 +1596,7 @@ abstract class $ProxiesSelectorStateCopyWith<$Res> {
|
||||
$Res Function(ProxiesSelectorState) then) =
|
||||
_$ProxiesSelectorStateCopyWithImpl<$Res, ProxiesSelectorState>;
|
||||
@useResult
|
||||
$Res call({List<String> groupNames});
|
||||
$Res call({List<String> groupNames, String? currentGroupName});
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
@@ -1613,12 +1614,17 @@ class _$ProxiesSelectorStateCopyWithImpl<$Res,
|
||||
@override
|
||||
$Res call({
|
||||
Object? groupNames = null,
|
||||
Object? currentGroupName = freezed,
|
||||
}) {
|
||||
return _then(_value.copyWith(
|
||||
groupNames: null == groupNames
|
||||
? _value.groupNames
|
||||
: groupNames // ignore: cast_nullable_to_non_nullable
|
||||
as List<String>,
|
||||
currentGroupName: freezed == currentGroupName
|
||||
? _value.currentGroupName
|
||||
: currentGroupName // ignore: cast_nullable_to_non_nullable
|
||||
as String?,
|
||||
) as $Val);
|
||||
}
|
||||
}
|
||||
@@ -1631,7 +1637,7 @@ abstract class _$$ProxiesSelectorStateImplCopyWith<$Res>
|
||||
__$$ProxiesSelectorStateImplCopyWithImpl<$Res>;
|
||||
@override
|
||||
@useResult
|
||||
$Res call({List<String> groupNames});
|
||||
$Res call({List<String> groupNames, String? currentGroupName});
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
@@ -1646,12 +1652,17 @@ class __$$ProxiesSelectorStateImplCopyWithImpl<$Res>
|
||||
@override
|
||||
$Res call({
|
||||
Object? groupNames = null,
|
||||
Object? currentGroupName = freezed,
|
||||
}) {
|
||||
return _then(_$ProxiesSelectorStateImpl(
|
||||
groupNames: null == groupNames
|
||||
? _value._groupNames
|
||||
: groupNames // ignore: cast_nullable_to_non_nullable
|
||||
as List<String>,
|
||||
currentGroupName: freezed == currentGroupName
|
||||
? _value.currentGroupName
|
||||
: currentGroupName // ignore: cast_nullable_to_non_nullable
|
||||
as String?,
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -1659,7 +1670,8 @@ class __$$ProxiesSelectorStateImplCopyWithImpl<$Res>
|
||||
/// @nodoc
|
||||
|
||||
class _$ProxiesSelectorStateImpl implements _ProxiesSelectorState {
|
||||
const _$ProxiesSelectorStateImpl({required final List<String> groupNames})
|
||||
const _$ProxiesSelectorStateImpl(
|
||||
{required final List<String> groupNames, required this.currentGroupName})
|
||||
: _groupNames = groupNames;
|
||||
|
||||
final List<String> _groupNames;
|
||||
@@ -1670,9 +1682,12 @@ class _$ProxiesSelectorStateImpl implements _ProxiesSelectorState {
|
||||
return EqualUnmodifiableListView(_groupNames);
|
||||
}
|
||||
|
||||
@override
|
||||
final String? currentGroupName;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'ProxiesSelectorState(groupNames: $groupNames)';
|
||||
return 'ProxiesSelectorState(groupNames: $groupNames, currentGroupName: $currentGroupName)';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -1681,12 +1696,14 @@ class _$ProxiesSelectorStateImpl implements _ProxiesSelectorState {
|
||||
(other.runtimeType == runtimeType &&
|
||||
other is _$ProxiesSelectorStateImpl &&
|
||||
const DeepCollectionEquality()
|
||||
.equals(other._groupNames, _groupNames));
|
||||
.equals(other._groupNames, _groupNames) &&
|
||||
(identical(other.currentGroupName, currentGroupName) ||
|
||||
other.currentGroupName == currentGroupName));
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(
|
||||
runtimeType, const DeepCollectionEquality().hash(_groupNames));
|
||||
int get hashCode => Object.hash(runtimeType,
|
||||
const DeepCollectionEquality().hash(_groupNames), currentGroupName);
|
||||
|
||||
@JsonKey(ignore: true)
|
||||
@override
|
||||
@@ -1699,11 +1716,14 @@ class _$ProxiesSelectorStateImpl implements _ProxiesSelectorState {
|
||||
|
||||
abstract class _ProxiesSelectorState implements ProxiesSelectorState {
|
||||
const factory _ProxiesSelectorState(
|
||||
{required final List<String> groupNames}) = _$ProxiesSelectorStateImpl;
|
||||
{required final List<String> groupNames,
|
||||
required final String? currentGroupName}) = _$ProxiesSelectorStateImpl;
|
||||
|
||||
@override
|
||||
List<String> get groupNames;
|
||||
@override
|
||||
String? get currentGroupName;
|
||||
@override
|
||||
@JsonKey(ignore: true)
|
||||
_$$ProxiesSelectorStateImplCopyWith<_$ProxiesSelectorStateImpl>
|
||||
get copyWith => throw _privateConstructorUsedError;
|
||||
|
||||
@@ -62,7 +62,7 @@ class UserInfo {
|
||||
class Profile {
|
||||
String id;
|
||||
String? label;
|
||||
String? proxyName;
|
||||
String? currentGroupName;
|
||||
String? url;
|
||||
DateTime? lastUpdateDate;
|
||||
Duration autoUpdateDuration;
|
||||
@@ -74,8 +74,8 @@ class Profile {
|
||||
String? id,
|
||||
this.label,
|
||||
this.url,
|
||||
this.currentGroupName,
|
||||
this.userInfo,
|
||||
this.proxyName,
|
||||
this.lastUpdateDate,
|
||||
SelectedMap? selectedMap,
|
||||
Duration? autoUpdateDuration,
|
||||
@@ -134,6 +134,7 @@ class Profile {
|
||||
return _$ProfileFromJson(json);
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) =>
|
||||
identical(this, other) ||
|
||||
@@ -141,34 +142,31 @@ class Profile {
|
||||
runtimeType == other.runtimeType &&
|
||||
id == other.id &&
|
||||
label == other.label &&
|
||||
proxyName == other.proxyName &&
|
||||
currentGroupName == other.currentGroupName &&
|
||||
url == other.url &&
|
||||
lastUpdateDate == other.lastUpdateDate &&
|
||||
autoUpdateDuration == other.autoUpdateDuration &&
|
||||
userInfo == other.userInfo &&
|
||||
autoUpdate == other.autoUpdate;
|
||||
autoUpdate == other.autoUpdate &&
|
||||
selectedMap == other.selectedMap;
|
||||
|
||||
@override
|
||||
int get hashCode =>
|
||||
id.hashCode ^
|
||||
label.hashCode ^
|
||||
proxyName.hashCode ^
|
||||
currentGroupName.hashCode ^
|
||||
url.hashCode ^
|
||||
lastUpdateDate.hashCode ^
|
||||
autoUpdateDuration.hashCode ^
|
||||
userInfo.hashCode ^
|
||||
autoUpdate.hashCode;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'Profile{id: $id, label: $label, proxyName: $proxyName, url: $url, lastUpdateDate: $lastUpdateDate, autoUpdateDuration: $autoUpdateDuration, userInfo: $userInfo, autoUpdate: $autoUpdate}';
|
||||
}
|
||||
autoUpdate.hashCode ^
|
||||
selectedMap.hashCode;
|
||||
|
||||
Profile copyWith({
|
||||
String? label,
|
||||
String? url,
|
||||
UserInfo? userInfo,
|
||||
String? groupName,
|
||||
String? currentGroupName,
|
||||
String? proxyName,
|
||||
DateTime? lastUpdateDate,
|
||||
Duration? autoUpdateDuration,
|
||||
@@ -179,7 +177,7 @@ class Profile {
|
||||
id: id,
|
||||
label: label ?? this.label,
|
||||
url: url ?? this.url,
|
||||
proxyName: proxyName ?? this.proxyName,
|
||||
currentGroupName: currentGroupName ?? this.currentGroupName,
|
||||
userInfo: userInfo ?? this.userInfo,
|
||||
selectedMap: selectedMap ?? this.selectedMap,
|
||||
lastUpdateDate: lastUpdateDate ?? this.lastUpdateDate,
|
||||
|
||||
@@ -94,6 +94,7 @@ class ProxiesCardSelectorState with _$ProxiesCardSelectorState {
|
||||
class ProxiesSelectorState with _$ProxiesSelectorState {
|
||||
const factory ProxiesSelectorState({
|
||||
required List<String> groupNames,
|
||||
required String? currentGroupName,
|
||||
}) = _ProxiesSelectorState;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user