Add file editor Fix android service issues Optimize desktop background performance Optimize android main process performance Optimize delay test Optimize vpn protect
59 lines
1.1 KiB
Dart
59 lines
1.1 KiB
Dart
import 'dart:async';
|
|
import 'dart:io';
|
|
|
|
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('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 = Platform.isAndroid ? Tile.instance : null;
|