Files
MWClash/lib/manager/vpn_manager.dart
chen08209 116e3c8ba5 Fix windows some issues
Optimize overwrite handle

Optimize access control page

Optimize some details
2025-12-10 15:04:21 +08:00

57 lines
1.5 KiB
Dart

import 'package:fl_clash/common/common.dart';
import 'package:fl_clash/enum/enum.dart';
import 'package:fl_clash/models/models.dart';
import 'package:fl_clash/providers/state.dart';
import 'package:fl_clash/state.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
class VpnManager extends ConsumerStatefulWidget {
final Widget child;
const VpnManager({super.key, required this.child});
@override
ConsumerState<VpnManager> createState() => _VpnContainerState();
}
class _VpnContainerState extends ConsumerState<VpnManager> {
@override
void initState() {
super.initState();
ref.listenManual(vpnStateProvider, (prev, next) {
if (prev != next) {
showTip(next);
}
});
}
void showTip(VpnState state) {
throttler.call(
FunctionTag.vpnTip,
() {
if (!ref.read(isStartProvider) || state == globalState.lastVpnState) {
return;
}
globalState.showNotifier(
appLocalizations.vpnConfigChangeDetected,
actionState: MessageActionState(
actionText: appLocalizations.restart,
action: () async {
await globalState.handleStop();
await globalState.appController.updateStatus(true);
},
),
);
},
duration: const Duration(seconds: 6),
fire: true,
);
}
@override
Widget build(BuildContext context) {
return widget.child;
}
}