2022-01-25 18:13:11 +08:00
|
|
|
import 'dart:typed_data';
|
2022-01-26 12:48:16 +08:00
|
|
|
import 'dart:js' as js;
|
2022-02-05 04:29:10 +08:00
|
|
|
|
2022-02-28 18:29:25 +08:00
|
|
|
import '../common.dart';
|
2022-02-03 00:53:59 +08:00
|
|
|
import 'dart:html';
|
|
|
|
import 'dart:async';
|
|
|
|
|
2022-02-03 17:19:25 +08:00
|
|
|
final List<StreamSubscription<MouseEvent>> mouseListeners = [];
|
2022-02-05 04:29:10 +08:00
|
|
|
final List<StreamSubscription<KeyboardEvent>> keyListeners = [];
|
2022-02-03 17:19:25 +08:00
|
|
|
int lastMouseDownButtons = 0;
|
2022-02-05 04:29:10 +08:00
|
|
|
bool mouseIn = false;
|
2022-01-25 18:13:11 +08:00
|
|
|
|
2022-01-26 12:48:16 +08:00
|
|
|
class PlatformFFI {
|
2022-01-25 18:13:11 +08:00
|
|
|
static void clearRgbaFrame() {}
|
|
|
|
|
2022-03-27 23:08:43 +08:00
|
|
|
static Uint8List? getRgba() {
|
2022-01-29 15:55:00 +08:00
|
|
|
return js.context.callMethod('getRgba');
|
2022-01-25 18:13:11 +08:00
|
|
|
}
|
|
|
|
|
2022-01-26 12:48:16 +08:00
|
|
|
static String getByName(String name, [String arg = '']) {
|
|
|
|
return js.context.callMethod('getByName', [name, arg]);
|
2022-01-25 18:13:11 +08:00
|
|
|
}
|
|
|
|
|
2022-01-26 12:48:16 +08:00
|
|
|
static void setByName(String name, [String value = '']) {
|
|
|
|
js.context.callMethod('setByName', [name, value]);
|
2022-01-25 18:13:11 +08:00
|
|
|
}
|
|
|
|
|
2022-01-26 12:48:16 +08:00
|
|
|
static Future<Null> init() async {
|
|
|
|
isWeb = true;
|
2022-01-31 16:22:05 +08:00
|
|
|
isDesktop = !js.context.callMethod('isMobile');
|
2022-01-26 19:00:23 +08:00
|
|
|
js.context.callMethod('init');
|
2022-03-24 20:57:30 +08:00
|
|
|
version = getByName('version');
|
2022-01-25 18:13:11 +08:00
|
|
|
}
|
2022-02-03 00:53:59 +08:00
|
|
|
|
2022-04-25 18:25:25 +08:00
|
|
|
static void startDesktopWebListener() {
|
2022-02-05 04:29:10 +08:00
|
|
|
mouseIn = true;
|
2022-02-03 17:19:25 +08:00
|
|
|
mouseListeners.add(
|
|
|
|
window.document.onContextMenu.listen((evt) => evt.preventDefault()));
|
2022-02-03 00:53:59 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void stopDesktopWebListener() {
|
2022-02-05 04:29:10 +08:00
|
|
|
mouseIn = true;
|
2022-02-03 17:19:25 +08:00
|
|
|
mouseListeners.forEach((l) {
|
2022-02-03 00:53:59 +08:00
|
|
|
l.cancel();
|
|
|
|
});
|
2022-02-03 17:19:25 +08:00
|
|
|
mouseListeners.clear();
|
2022-02-05 04:29:10 +08:00
|
|
|
keyListeners.forEach((l) {
|
|
|
|
l.cancel();
|
|
|
|
});
|
|
|
|
keyListeners.clear();
|
2022-02-03 00:53:59 +08:00
|
|
|
}
|
2022-02-10 02:07:53 +08:00
|
|
|
|
|
|
|
static void setMethodCallHandler(FMethod callback) {}
|
|
|
|
|
2022-04-25 18:25:25 +08:00
|
|
|
static Future<bool> invokeMethod(String method, [dynamic arguments]) async {
|
2022-02-10 02:07:53 +08:00
|
|
|
return true;
|
|
|
|
}
|
2022-02-03 00:53:59 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
final localeName = window.navigator.language;
|