Compare commits

..

1 Commits

Author SHA1 Message Date
chen08209
851935ed92 Support override script
Support proxies search

Support svg display

Optimize config persistence

Add some scenes auto close connections

Update core

Optimize more details
2025-06-06 19:09:36 +08:00
8 changed files with 22 additions and 50 deletions

View File

@@ -1,19 +1,3 @@
## v0.8.85
- Support override script
- Support proxies search
- Support svg display
- Optimize config persistence
- Add some scenes auto close connections
- Update core
- Optimize more details
## v0.8.84
- Fix windows service verify issues

View File

@@ -200,24 +200,6 @@ class Tun with _$Tun {
}
}
extension TunExt on Tun {
Tun getRealTun(RouteMode routeMode) {
final mRouteAddress = routeMode == RouteMode.bypassPrivate
? defaultBypassPrivateRouteAddress
: routeAddress;
return switch (system.isDesktop) {
true => copyWith(
autoRoute: true,
routeAddress: [],
),
false => copyWith(
autoRoute: mRouteAddress.isEmpty ? true : false,
routeAddress: mRouteAddress,
),
};
}
}
@freezed
class FallbackFilter with _$FallbackFilter {
const factory FallbackFilter({

View File

@@ -94,7 +94,7 @@ final coreStateProvider = AutoDisposeProvider<CoreState>.internal(
@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
typedef CoreStateRef = AutoDisposeProviderRef<CoreState>;
String _$updateParamsHash() => r'012df72ab0e769a51c573f4692031506d7b1f1b4';
String _$updateParamsHash() => r'79fd7a5a8650fabac3a2ca7ce903c1d9eb363ed2';
/// See also [updateParams].
@ProviderFor(updateParams)

View File

@@ -105,15 +105,10 @@ CoreState coreState(Ref ref) {
@riverpod
UpdateParams updateParams(Ref ref) {
final routeMode = ref.watch(
networkSettingProvider.select(
(state) => state.routeMode,
),
);
return ref.watch(
patchClashConfigProvider.select(
(state) => UpdateParams(
tun: state.tun.getRealTun(routeMode),
tun: state.tun,
allowLan: state.allowLan,
findProcessMode: state.findProcessMode,
mode: state.mode,

View File

@@ -315,9 +315,19 @@ class GlobalState {
final profileId = profile.id;
final configMap = await getProfileConfig(profileId);
final rawConfig = await handleEvaluate(configMap);
final realPatchConfig = patchConfig.copyWith(
tun: patchConfig.tun.getRealTun(config.networkProps.routeMode),
);
final routeAddress =
config.networkProps.routeMode == RouteMode.bypassPrivate
? defaultBypassPrivateRouteAddress
: patchConfig.tun.routeAddress;
final realPatchConfig = !system.isDesktop
? patchConfig.copyWith.tun(
autoRoute: routeAddress.isEmpty ? true : false,
routeAddress: routeAddress,
)
: patchConfig.copyWith.tun(
autoRoute: true,
routeAddress: [],
);
rawConfig["external-controller"] = realPatchConfig.externalController.value;
rawConfig["external-ui"] = "";
rawConfig["interface-name"] = "";

View File

@@ -1,3 +1,4 @@
import 'package:fl_clash/clash/clash.dart';
import 'package:fl_clash/common/common.dart';
import 'package:fl_clash/enum/enum.dart';
import 'package:fl_clash/models/models.dart';
@@ -26,7 +27,7 @@ class _OverrideProfileViewState extends State<OverrideProfileView> {
_initState(WidgetRef ref) {
WidgetsBinding.instance.addPostFrameCallback((_) {
Future.delayed(Duration(milliseconds: 300), () async {
final rawConfig = await globalState.getProfileConfig(widget.profileId);
final rawConfig = await clashCore.getConfig(widget.profileId);
final snippet = ClashConfigSnippet.fromJson(rawConfig);
final overrideData = ref.read(
getProfileOverrideDataProvider(widget.profileId),
@@ -597,7 +598,7 @@ class RuleContent extends ConsumerWidget {
tag: CacheTag.rules,
itemBuilder: (context, index) {
final rule = rules[index];
return ReorderableDelayedDragStartListener(
return ReorderableDragStartListener(
key: ObjectKey(rule),
index: index,
child: _buildItem(

View File

@@ -288,7 +288,7 @@ class ListInputPage extends StatelessWidget {
final e = items[index];
return _InputItem(
key: ValueKey(e),
ReorderableDelayedDragStartListener(
ReorderableDragStartListener(
index: index,
child: CommonCard(
child: ListItem(
@@ -440,7 +440,7 @@ class MapInputPage extends StatelessWidget {
final e = items[index];
return _InputItem(
key: ValueKey(e.key),
ReorderableDelayedDragStartListener(
ReorderableDragStartListener(
index: index,
child: CommonCard(
child: ListItem(
@@ -613,7 +613,7 @@ class _InputItem extends StatelessWidget {
color: Colors.transparent,
child: Container(
padding: EdgeInsets.symmetric(horizontal: 16),
margin: EdgeInsets.symmetric(vertical: 8),
margin: EdgeInsets.symmetric(vertical: 4),
child: child,
),
);

View File

@@ -1,7 +1,7 @@
name: fl_clash
description: A multi-platform proxy client based on ClashMeta, simple and easy to use, open-source and ad-free.
publish_to: 'none'
version: 0.8.86+202506121
version: 0.8.85+202506063
environment:
sdk: '>=3.1.0 <4.0.0'