| 
									
										
										
										
											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; |