import 'package:fl_clash/common/app_localizations.dart'; import 'package:fl_clash/controller.dart'; import 'package:fl_clash/core/controller.dart'; import 'package:fl_clash/plugins/app.dart'; import 'package:fl_clash/plugins/tile.dart'; import 'package:fl_clash/providers/providers.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; class TileManager extends ConsumerStatefulWidget { final Widget child; const TileManager({super.key, required this.child}); @override ConsumerState createState() => _TileContainerState(); } class _TileContainerState extends ConsumerState with TileListener { @override Widget build(BuildContext context) { return widget.child; } bool get isStart => ref.read(isStartProvider); @override Future onStart() async { if (isStart && coreController.isCompleted) { return; } appController.updateStatus(true); app?.tip(appLocalizations.startVpn); super.onStart(); } @override Future onStop() async { if (!isStart) { return; } appController.updateStatus(false); app?.tip(appLocalizations.stopVpn); super.onStop(); } @override void initState() { super.initState(); tile?.addListener(this); } @override void dispose() { tile?.removeListener(this); super.dispose(); } }