mirror of
				https://github.com/hackku21/nearby_connections.git
				synced 2025-06-13 12:53:50 +00:00 
			
		
		
		
	completed dart portion, except sendPayload
This commit is contained in:
		
							parent
							
								
									31c5e0c165
								
							
						
					
					
						commit
						fc6f7a55c6
					
				| @ -1,10 +1,20 @@ | |||||||
| import 'dart:async'; | import 'dart:async'; | ||||||
| 
 | 
 | ||||||
|  | import 'package:flutter/foundation.dart'; | ||||||
| import 'package:flutter/services.dart'; | import 'package:flutter/services.dart'; | ||||||
| 
 | 
 | ||||||
| enum STRATEGY { P2P_CLUSTER, P2P_STAR, P2P_POINT_TO_POINT } | enum STRATEGY { P2P_CLUSTER, P2P_STAR, P2P_POINT_TO_POINT } | ||||||
| enum Status { CONNECTED, REJECTED, ERROR } | enum Status { CONNECTED, REJECTED, ERROR } | ||||||
| 
 | 
 | ||||||
|  | typedef void OnConnctionInitiated( | ||||||
|  |     String endpointId, ConnectionInfo connectionInfo); | ||||||
|  | typedef void OnConnectionResult(String endpointId, Status status); | ||||||
|  | typedef void OnDisconnected(String endpointId); | ||||||
|  | 
 | ||||||
|  | typedef void OnEndpointFound( | ||||||
|  |     String endpointId, String endpointName, String serviceId); | ||||||
|  | typedef void OnEndpointLost(String endpointId); | ||||||
|  | 
 | ||||||
| class Nearby { | class Nearby { | ||||||
|   //for maintaining only 1 instance of this class |   //for maintaining only 1 instance of this class | ||||||
|   static Nearby _instance; |   static Nearby _instance; | ||||||
| @ -32,15 +42,50 @@ class Nearby { | |||||||
|           String authenticationToken = args['authenticationToken']; |           String authenticationToken = args['authenticationToken']; | ||||||
|           bool isIncomingConnection = args['isIncomingConnection']; |           bool isIncomingConnection = args['isIncomingConnection']; | ||||||
| 
 | 
 | ||||||
|  |           _advertConnectionInitiated?.call( | ||||||
|  |               endpointId, | ||||||
|  |               ConnectionInfo( | ||||||
|  |                   endpointName, authenticationToken, isIncomingConnection)); | ||||||
|  | 
 | ||||||
|           return null; |           return null; | ||||||
|         case "ad.onConnectionResult": |         case "ad.onConnectionResult": | ||||||
|           String endpointId = args['endpointId']; |           String endpointId = args['endpointId']; | ||||||
|           Status statusCode = Status.values[args['statusCode']]; |           Status statusCode = Status.values[args['statusCode']]; | ||||||
| 
 | 
 | ||||||
|  |           _advertConnectionResult?.call(endpointId, statusCode); | ||||||
|  | 
 | ||||||
|           return null; |           return null; | ||||||
|         case "ad.onDisconnected": |         case "ad.onDisconnected": | ||||||
|           String endpointId = args['endpointId']; |           String endpointId = args['endpointId']; | ||||||
| 
 | 
 | ||||||
|  |           _advertDisconnected?.call(endpointId); | ||||||
|  | 
 | ||||||
|  |           return null; | ||||||
|  | 
 | ||||||
|  |         case "dis.onConnectionInitiated": | ||||||
|  |           String endpointId = args['endpointId']; | ||||||
|  |           String endpointName = args['endpointName']; | ||||||
|  |           String authenticationToken = args['authenticationToken']; | ||||||
|  |           bool isIncomingConnection = args['isIncomingConnection']; | ||||||
|  | 
 | ||||||
|  |           _discoverConnectionInitiated?.call( | ||||||
|  |               endpointId, | ||||||
|  |               ConnectionInfo( | ||||||
|  |                   endpointName, authenticationToken, isIncomingConnection)); | ||||||
|  | 
 | ||||||
|  |           return null; | ||||||
|  |         case "dis.onConnectionResult": | ||||||
|  |           String endpointId = args['endpointId']; | ||||||
|  |           Status statusCode = Status.values[args['statusCode']]; | ||||||
|  | 
 | ||||||
|  |           _discoverConnectionResult?.call(endpointId, statusCode); | ||||||
|  | 
 | ||||||
|  |           return null; | ||||||
|  |         case "dis.onDisconnected": | ||||||
|  |           String endpointId = args['endpointId']; | ||||||
|  | 
 | ||||||
|  |           _discoverDisconnected?.call(endpointId); | ||||||
|  | 
 | ||||||
|           return null; |           return null; | ||||||
| 
 | 
 | ||||||
|         case "dis.onEndpointFound": |         case "dis.onEndpointFound": | ||||||
| @ -48,10 +93,14 @@ class Nearby { | |||||||
|           String endpointName = args['endpointName']; |           String endpointName = args['endpointName']; | ||||||
|           String serviceId = args['serviceId']; |           String serviceId = args['serviceId']; | ||||||
| 
 | 
 | ||||||
|  |           _onEndpointFound?.call(endpointId, endpointName, serviceId); | ||||||
|  | 
 | ||||||
|           return null; |           return null; | ||||||
|         case "dis.onEndpointLost": |         case "dis.onEndpointLost": | ||||||
|           String endpointId = args['endpointId']; |           String endpointId = args['endpointId']; | ||||||
| 
 | 
 | ||||||
|  |           _onEndpointLost?.call(endpointId); | ||||||
|  | 
 | ||||||
|           return null; |           return null; | ||||||
|         default: |         default: | ||||||
|           return null; |           return null; | ||||||
| @ -59,6 +108,13 @@ class Nearby { | |||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   OnConnctionInitiated _advertConnectionInitiated, _discoverConnectionInitiated; | ||||||
|  |   OnConnectionResult _advertConnectionResult, _discoverConnectionResult; | ||||||
|  |   OnDisconnected _advertDisconnected, _discoverDisconnected; | ||||||
|  | 
 | ||||||
|  |   OnEndpointFound _onEndpointFound; | ||||||
|  |   OnEndpointLost _onEndpointLost; | ||||||
|  | 
 | ||||||
|   static const MethodChannel _channel = |   static const MethodChannel _channel = | ||||||
|       const MethodChannel('nearby_connections'); |       const MethodChannel('nearby_connections'); | ||||||
| 
 | 
 | ||||||
| @ -72,13 +128,19 @@ class Nearby { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   Future<bool> startAdvertising(String userNickName, STRATEGY strategy, |   Future<bool> startAdvertising( | ||||||
|       {void onConnctionInitiated( |     String userNickName, | ||||||
|           String endpointId, ConnectionInfo connectionInfo), |     STRATEGY strategy, { | ||||||
|       void onConnectionResult(String endpointId, Status status), |     @required OnConnctionInitiated onConnectionInitiated, | ||||||
|       void onDisconnected(String endpointId)}) async { |     @required OnConnectionResult onConnectionResult, | ||||||
|  |     @required OnDisconnected onDisconnected, | ||||||
|  |   }) async { | ||||||
|     assert(userNickName != null && strategy != null); |     assert(userNickName != null && strategy != null); | ||||||
| 
 | 
 | ||||||
|  |     this._advertConnectionInitiated = onConnectionInitiated; | ||||||
|  |     this._advertConnectionResult = onConnectionResult; | ||||||
|  |     this._advertDisconnected = onDisconnected; | ||||||
|  | 
 | ||||||
|     return await _channel.invokeMethod('startAdvertising', <String, dynamic>{ |     return await _channel.invokeMethod('startAdvertising', <String, dynamic>{ | ||||||
|       'userNickName': userNickName, |       'userNickName': userNickName, | ||||||
|       'strategy': strategy.index |       'strategy': strategy.index | ||||||
| @ -91,10 +153,10 @@ class Nearby { | |||||||
| 
 | 
 | ||||||
|   Future<bool> startDiscovery( |   Future<bool> startDiscovery( | ||||||
|     String userNickName, |     String userNickName, | ||||||
|       STRATEGY strategy, |     STRATEGY strategy, { | ||||||
|       void onEndpointFound( |     OnEndpointFound onEndpointFound, | ||||||
|           String endpointId, String endpointName, String serviceId), |     OnEndpointLost onEndpointLost, | ||||||
|       void onEndpointLost(String endpointId)) async { |   }) async { | ||||||
|     assert(userNickName != null && strategy != null); |     assert(userNickName != null && strategy != null); | ||||||
| 
 | 
 | ||||||
|     return await _channel.invokeMethod('startDiscovery', <String, dynamic>{ |     return await _channel.invokeMethod('startDiscovery', <String, dynamic>{ | ||||||
| @ -106,6 +168,53 @@ class Nearby { | |||||||
|   Future<void> stopDiscovery() async { |   Future<void> stopDiscovery() async { | ||||||
|     await _channel.invokeMethod('stopDiscovery'); |     await _channel.invokeMethod('stopDiscovery'); | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   Future<void> stopAllEndpoints() async { | ||||||
|  |     await _channel.invokeMethod('stopAllEndpoints'); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Future<void> disconnectFromEndpoint(String endpointId) async { | ||||||
|  |     await _channel.invokeMethod( | ||||||
|  |         'disconnectFromEndpoint', <String, dynamic>{'endpointId': endpointId}); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Future<bool> requestConnection( | ||||||
|  |     String userNickName, | ||||||
|  |     String endpointId, { | ||||||
|  |     @required OnConnctionInitiated onConnectionInitiated, | ||||||
|  |     @required OnConnectionResult onConnectionResult, | ||||||
|  |     @required OnDisconnected onDisconnected, | ||||||
|  |   }) async { | ||||||
|  |     this._discoverConnectionInitiated = onConnectionInitiated; | ||||||
|  |     this._discoverConnectionResult = onConnectionResult; | ||||||
|  |     this._discoverDisconnected = onDisconnected; | ||||||
|  | 
 | ||||||
|  |     return await _channel.invokeMethod( | ||||||
|  |       'requestConnection', | ||||||
|  |       <String, dynamic>{ | ||||||
|  |         'userNickName': userNickName, | ||||||
|  |         'endpointId': endpointId, | ||||||
|  |       }, | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Future<bool> acceptConnection(String endpointId) async { | ||||||
|  |     return await _channel.invokeMethod( | ||||||
|  |       'acceptConnection', | ||||||
|  |       <String, dynamic>{ | ||||||
|  |         'endpointId': endpointId, | ||||||
|  |       }, | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Future<bool> rejectConnection(String endpointId) async { | ||||||
|  |     return await _channel.invokeMethod( | ||||||
|  |       'acceptConnection', | ||||||
|  |       <String, dynamic>{ | ||||||
|  |         'endpointId': endpointId, | ||||||
|  |       }, | ||||||
|  |     ); | ||||||
|  |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| abstract class ConnectionLifecycleCallback { | abstract class ConnectionLifecycleCallback { | ||||||
| @ -121,9 +230,9 @@ abstract class EndpointDiscoveryCallback { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| class ConnectionInfo { | class ConnectionInfo { | ||||||
|   String endPointName, authenticationToken; |   String endpointName, authenticationToken; | ||||||
|   bool isIncomingConnection; |   bool isIncomingConnection; | ||||||
| 
 | 
 | ||||||
|   ConnectionInfo( |   ConnectionInfo( | ||||||
|       this.endPointName, this.authenticationToken, this.isIncomingConnection); |       this.endpointName, this.authenticationToken, this.isIncomingConnection); | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user