diff --git a/example/lib/main.dart b/example/lib/main.dart index b54c5c4..254cd73 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -1,3 +1,5 @@ +import 'dart:math'; + import 'package:flutter/material.dart'; import 'dart:async'; @@ -31,6 +33,9 @@ class Body extends StatefulWidget { } class _MyBodyState extends State { + final String userName = Random().nextInt(1000).toString(); + final Strategy strategy = Strategy.P2P_STAR; + @override Widget build(BuildContext context) { // TODO: implement build @@ -55,19 +60,54 @@ class _MyBodyState extends State { await Nearby().askPermission(); }, ), + Text("UserName: " + userName), RaisedButton( child: Text("Start Advertising"), onPressed: () async { try { bool a = await Nearby().startAdvertising( - "pkmn", - STRATEGY.P2P_STAR, + userName, + strategy, + onConnectionInitiated: (id, info) { + showModalBottomSheet( + context: context, + builder: (builder) { + return Center( + child: Column( + children: [ + Text("id: " + id), + Text("Token: " + info.authenticationToken), + Text("Name" + info.endpointName), + Text("Incoming: " + + info.isIncomingConnection.toString()), + RaisedButton( + child: Text("Accept Connection"), + onPressed: () { + Nearby().acceptConnection(id); + }, + ), + RaisedButton( + child: Text("Reject Connection"), + onPressed: () { + Nearby().rejectConnection(id); + }, + ), + ], + ), + ); + }, + ); + }, + onConnectionResult: (id, status) { + showSnackbar(status); + }, + onDisconnected: (id) { + showSnackbar(id); + }, ); - Scaffold.of(context) - .showSnackBar(SnackBar(content: Text(a.toString()))); + showSnackbar(a); } catch (exception) { - Scaffold.of(context).showSnackBar( - SnackBar(content: Text(exception.toString()))); + showSnackbar(exception); } }, ), @@ -77,9 +117,103 @@ class _MyBodyState extends State { await Nearby().stopAdvertising(); }, ), + RaisedButton( + child: Text("Start Discovery"), + onPressed: () async { + await Nearby().startDiscovery( + userName, + strategy, + onEndpointFound: (id, name, serviceId) { + showModalBottomSheet( + context: context, + builder: (builder) { + return Center( + child: Column( + children: [ + Text("id: " + id), + Text("Name: " + name), + Text("ServiceId: " + serviceId), + RaisedButton( + child: Text("Request Connection"), + onPressed: () { + Nearby().requestConnection( + userName, + id, + onConnectionInitiated: (id, info) { + showModalBottomSheet( + context: context, + builder: (builder) { + return Center( + child: Column( + children: [ + Text("id: " + id), + Text("Token: " + + info.authenticationToken), + Text("Name" + info.endpointName), + Text("Incoming: " + + info.isIncomingConnection + .toString()), + RaisedButton( + child: + Text("Accept Connection"), + onPressed: () { + Nearby().acceptConnection(id); + }, + ), + RaisedButton( + child: + Text("Reject Connection"), + onPressed: () { + Nearby().rejectConnection(id); + }, + ), + ], + ), + ); + }, + ); + }, + onConnectionResult: (id, status) { + showSnackbar(status); + }, + onDisconnected: (id) { + showSnackbar(id); + }, + ); + }, + ), + ], + ), + ); + }, + ); + }, + onEndpointLost: (id) { + showSnackbar(id); + }, + ); + }, + ), + RaisedButton( + child: Text("Stop Discovery"), + onPressed: () async { + await Nearby().stopDiscovery(); + }, + ), + RaisedButton( + child: Text("Stop All Endpoints"), + onPressed: () async { + await Nearby().stopAllEndpoints(); + }, + ), ], ), ); } -} + void showSnackbar(dynamic a) { + Scaffold.of(context).showSnackBar(SnackBar( + content: Text(a.toString()), + )); + } +} diff --git a/lib/nearby_connections.dart b/lib/nearby_connections.dart index 67d06e5..8750343 100644 --- a/lib/nearby_connections.dart +++ b/lib/nearby_connections.dart @@ -3,7 +3,7 @@ import 'dart:async'; import 'package:flutter/foundation.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 } typedef void OnConnctionInitiated( @@ -130,7 +130,7 @@ class Nearby { Future startAdvertising( String userNickName, - STRATEGY strategy, { + Strategy strategy, { @required OnConnctionInitiated onConnectionInitiated, @required OnConnectionResult onConnectionResult, @required OnDisconnected onDisconnected, @@ -153,9 +153,9 @@ class Nearby { Future startDiscovery( String userNickName, - STRATEGY strategy, { - OnEndpointFound onEndpointFound, - OnEndpointLost onEndpointLost, + Strategy strategy, { + @required OnEndpointFound onEndpointFound, + @required OnEndpointLost onEndpointLost, }) async { assert(userNickName != null && strategy != null);