11import 'package:flutter/services.dart' ;
2+ import 'package:hello_flutter/ezyclient/ezy_clients.dart' ;
3+ import 'package:hello_flutter/ezyclient/ezy_logger.dart' ;
4+
5+ import 'ezy_client.dart' ;
26
37class EzyProxy {
4- static const MethodChannel _methodChannel = const MethodChannel ('com.tvd12.ezyfoxserver.client' );
8+ late MethodChannel _methodChannel;
9+
10+ static final EzyProxy _INSTANCE = EzyProxy ._();
11+
12+ EzyProxy ._() {
13+ this ._methodChannel = const MethodChannel ('com.tvd12.ezyfoxserver.client' );
14+ this ._methodChannel.setMethodCallHandler (this ._handleSocketEventDatas);
15+ }
516
6- EzyProxy ._();
17+ static EzyProxy getInstance () {
18+ return _INSTANCE ;
19+ }
20+
21+ Future <void > _handleSocketEventDatas (MethodCall call) async {
22+ // type inference will work here avoiding an explicit cast
23+ switch (call.method) {
24+ case "ezy.event" :
25+ _onSocketEvent (call.arguments);
26+ break ;
27+ case "ezy.data" :
28+ _onSocketData (call.arguments);
29+ break ;
30+ default :
31+ EzyLogger .warn ("there is no handler for method: ${call .method }, ignore it" );
32+ }
33+ }
34+
35+ void _onSocketEvent (Map arguments) {
36+ String clientName = arguments["clientName" ];
37+ String eventType = arguments["eventType" ];
38+ dynamic data = arguments["data" ];
39+ EzyClient client = _getClient (clientName);
40+ client.handleEvent (eventType, data);
41+ }
42+
43+ void _onSocketData (Map arguments) {
44+ String clientName = arguments["clientName" ];
45+ String command = arguments["command" ];
46+ dynamic data = arguments["data" ];
47+ EzyClient client = _getClient (clientName);
48+ client.handleData (command, data);
49+ }
750
851 static Future <T ?> run <T >(String method, Map params) {
9- return _methodChannel.invokeMethod (method, params);
52+ return EzyProxy .getInstance ()._methodChannel.invokeMethod (method, params);
53+ }
54+
55+ EzyClient _getClient (String clientName) {
56+ return EzyClients .getInstance ().getClient (clientName);
1057 }
1158}
0 commit comments