Files
MWClash/lib/manager/proxy_manager.dart
chen08209 4e679f776e Optimize performance
Update core

Optimize core stability

Fix linux tun authority check error

Fix some issues
2025-03-05 10:21:51 +08:00

47 lines
1.1 KiB
Dart

import 'package:fl_clash/common/proxy.dart';
import 'package:fl_clash/models/models.dart';
import 'package:fl_clash/providers/state.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
class ProxyManager extends ConsumerStatefulWidget {
final Widget child;
const ProxyManager({super.key, required this.child});
@override
ConsumerState createState() => _ProxyManagerState();
}
class _ProxyManagerState extends ConsumerState<ProxyManager> {
_updateProxy(ProxyState proxyState) async {
final isStart = proxyState.isStart;
final systemProxy = proxyState.systemProxy;
final port = proxyState.port;
if (isStart && systemProxy) {
proxy?.startProxy(port, proxyState.bassDomain);
} else {
proxy?.stopProxy();
}
}
@override
void initState() {
super.initState();
ref.listenManual(
proxyStateProvider,
(prev, next) {
if (prev != next) {
_updateProxy(next);
}
},
fireImmediately: true,
);
}
@override
Widget build(BuildContext context) {
return widget.child;
}
}