Files
MWClash/lib/plugins/tile.dart
chen08209 ed7868282a Add android separates the core process
Support core status check and force restart

Optimize proxies page and access page

Update flutter and pub dependencies

Update go version

Optimize more details
2025-09-23 15:23:58 +08:00

57 lines
1.2 KiB
Dart

import 'dart:async';
import 'package:fl_clash/common/constant.dart';
import 'package:fl_clash/common/system.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart';
abstract mixin class TileListener {
void onStart() {}
void onStop() {}
void onDetached() {}
}
class Tile {
final MethodChannel _channel = const MethodChannel('$packageName/tile');
Tile._() {
_channel.setMethodCallHandler(_methodCallHandler);
}
static final Tile instance = Tile._();
final ObserverList<TileListener> _listeners = ObserverList<TileListener>();
Future<void> _methodCallHandler(MethodCall call) async {
for (final TileListener listener in _listeners) {
switch (call.method) {
case 'start':
listener.onStart();
break;
case 'stop':
listener.onStop();
break;
case 'detached':
listener.onDetached();
break;
}
}
}
bool get hasListeners {
return _listeners.isNotEmpty;
}
void addListener(TileListener listener) {
_listeners.add(listener);
}
void removeListener(TileListener listener) {
_listeners.remove(listener);
}
}
final tile = system.isAndroid ? Tile.instance : null;