reset direct dns when region change
This commit is contained in:
@@ -84,8 +84,11 @@ class RegionPrefTile extends HookConsumerWidget {
|
||||
);
|
||||
if (selectedRegion != null) {
|
||||
// await ref.read(Preferences.region.notifier).update(selectedRegion);
|
||||
|
||||
await ref.watch(ConfigOptions.region.notifier).update(selectedRegion);
|
||||
|
||||
await ref.watch(ConfigOptions.directDnsAddress.notifier).reset();
|
||||
|
||||
// await ref.read(configOptionNotifierProvider.notifier).build();
|
||||
// await ref.watch(ConfigOptions.resolveDestination.notifier).update(!ref.watch(ConfigOptions.resolveDestination.notifier).raw());
|
||||
//for reload config
|
||||
|
||||
@@ -71,6 +71,7 @@ abstract class ConfigOptions {
|
||||
static final directDnsAddress = PreferencesNotifier.create<String, String>(
|
||||
"direct-dns-address",
|
||||
"1.1.1.1",
|
||||
defaultValueFunction: (ref) => ref.read(region) == Region.cn ? "223.5.5.5" : "1.1.1.1",
|
||||
validator: (value) => value.isNotBlank,
|
||||
);
|
||||
|
||||
|
||||
@@ -146,6 +146,7 @@ class ConfigOptionsPage extends HookConsumerWidget {
|
||||
choices: Region.values,
|
||||
title: t.settings.general.region,
|
||||
presentChoice: (value) => value.present(t),
|
||||
onChanged: (val) => ref.watch(ConfigOptions.directDnsAddress.notifier).reset(),
|
||||
),
|
||||
SwitchListTile(
|
||||
title: Text(experimental(t.config.blockAds)),
|
||||
|
||||
@@ -61,6 +61,7 @@ class ChoicePreferenceWidget<T> extends StatelessWidget {
|
||||
required this.title,
|
||||
required this.presentChoice,
|
||||
this.validateInput,
|
||||
this.onChanged,
|
||||
});
|
||||
|
||||
final T selected;
|
||||
@@ -70,7 +71,7 @@ class ChoicePreferenceWidget<T> extends StatelessWidget {
|
||||
final String title;
|
||||
final String Function(T value) presentChoice;
|
||||
final bool Function(String value)? validateInput;
|
||||
|
||||
final ValueChanged<T>? onChanged;
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ListTile(
|
||||
@@ -88,7 +89,9 @@ class ChoicePreferenceWidget<T> extends StatelessWidget {
|
||||
if (selection == null) {
|
||||
return;
|
||||
}
|
||||
await preferences.update(selection);
|
||||
final out = await preferences.update(selection);
|
||||
onChanged?.call(selection);
|
||||
return out;
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@@ -124,6 +124,7 @@ class IntroPage extends HookConsumerWidget with PresLogger {
|
||||
'Timezone Region: ${regionLocale.region} Locale: ${regionLocale.locale}',
|
||||
);
|
||||
await ref.read(ConfigOptions.region.notifier).update(regionLocale.region);
|
||||
await ref.watch(ConfigOptions.directDnsAddress.notifier).reset();
|
||||
await ref.read(localePreferencesProvider.notifier).changeLocale(regionLocale.locale);
|
||||
return;
|
||||
} catch (e) {
|
||||
|
||||
Reference in New Issue
Block a user