diff --git a/lib/controller.dart b/lib/controller.dart index c84da66..907b583 100644 --- a/lib/controller.dart +++ b/lib/controller.dart @@ -123,12 +123,18 @@ class AppController { ); } + applyProfile() { + globalState.applyProfile( + appState: appState, + config: config, + clashConfig: clashConfig, + ); + } + changeProfile(String? value) async { if (value == config.currentProfileId) return; config.currentProfileId = value; - await updateClashConfig(isPatch: false); - await updateGroups(); - changeProxy(); + await applyProfile(); appState.delayMap = {}; saveConfigPreferences(); } @@ -142,10 +148,7 @@ class AppController { ) .isBeforeNow(); if (isNotNeedUpdate == false) continue; - final result = await profile.update(); - if (result.type == ResultType.error) continue; - await updateGroups(); - changeProxy(); + await profile.update(); } } diff --git a/lib/state.dart b/lib/state.dart index 62fcf01..f3364f0 100644 --- a/lib/state.dart +++ b/lib/state.dart @@ -5,7 +5,6 @@ import 'dart:io'; import 'package:animations/animations.dart'; import 'package:fl_clash/clash/clash.dart'; import 'package:fl_clash/enum/enum.dart'; -import 'package:fl_clash/models/clash_config.dart'; import 'package:fl_clash/plugins/app.dart'; import 'package:fl_clash/widgets/scaffold.dart'; import 'package:flutter/material.dart'; @@ -88,6 +87,24 @@ class GlobalState { updateCurrentDelayDebounce!([proxyName]); } + applyProfile({ + required AppState appState, + required Config config, + required ClashConfig clashConfig, + }) async { + await updateClashConfig( + clashConfig: clashConfig, + config: config, + isPatch: false, + ); + await updateGroups(appState); + changeProxy( + appState: appState, + config: config, + clashConfig: clashConfig, + ); + } + init({ required AppState appState, required Config config, @@ -101,18 +118,12 @@ class GlobalState { ); } if (!appState.isInit) return; - await updateClashConfig( - clashConfig: clashConfig, - config: config, - isPatch: false, - ); - updateGroups(appState); - updateCoreVersionInfo(appState); - changeProxy( + await applyProfile( appState: appState, config: config, clashConfig: clashConfig, ); + updateCoreVersionInfo(appState); } changeProxy({ @@ -167,7 +178,7 @@ class GlobalState { } Future updateGroups(AppState appState) async { - appState.groups = await clashCore.getProxiesGroups(); + appState.groups = await clashCore.getProxiesGroups(); } showMessage({ diff --git a/pubspec.lock b/pubspec.lock index 1c467a6..1056bc0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -279,10 +279,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "592dc01a18961a51c24ae5d963b724b2b7fa4a95c100fe8eb6ca8a5a4732cadf" + sha256: "8cf40eebf5dec866a6d1956ad7b4f7016e6c0cc69847ab946833b7d43743809f" url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.18" + version: "2.0.19" flutter_test: dependency: "direct dev" description: flutter @@ -957,10 +957,10 @@ packages: dependency: "direct main" description: name: win32_registry - sha256: "10589e0d7f4e053f2c61023a31c9ce01146656a70b7b7f0828c0b46d7da2a9bb" + sha256: "41fd8a189940d8696b1b810efb9abcf60827b6cbfab90b0c43e8439e3a39d85a" url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.3" + version: "1.1.2" window_manager: dependency: "direct main" description: @@ -997,10 +997,10 @@ packages: dependency: transitive description: name: yaml_edit - sha256: c566f4f804215d84a7a2c377667f546c6033d5b34b4f9e60dfb09d17c4e97826 + sha256: e9c1a3543d2da0db3e90270dbb1e4eebc985ee5e3ffe468d83224472b2194a5f url: "https://pub.flutter-io.cn" source: hosted - version: "2.2.0" + version: "2.2.1" sdks: dart: ">=3.3.0 <4.0.0" flutter: ">=3.19.0"