Skip to content

Commit f52bd60

Browse files
authored
Merge branch 'master' into android-agp-update
2 parents 8e1f496 + d07b4cd commit f52bd60

File tree

68 files changed

+2487
-1341
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+2487
-1341
lines changed

example/lib/main.dart

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,10 @@ void main() {
2424
logMessage: _bleLogger.addToLog,
2525
);
2626
final _serviceDiscoverer = BleDeviceInteractor(
27-
bleDiscoverServices: _ble.discoverServices,
28-
readCharacteristic: _ble.readCharacteristic,
29-
writeWithResponse: _ble.writeCharacteristicWithResponse,
30-
writeWithOutResponse: _ble.writeCharacteristicWithoutResponse,
31-
subscribeToCharacteristic: _ble.subscribeToCharacteristic,
27+
bleDiscoverServices: (deviceId) async {
28+
await _ble.discoverAllServices(deviceId);
29+
return _ble.getDiscoveredServices(deviceId);
30+
},
3231
logMessage: _bleLogger.addToLog,
3332
);
3433
runApp(

example/lib/src/ble/ble_device_interactor.dart

Lines changed: 4 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -4,107 +4,24 @@ import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
44

55
class BleDeviceInteractor {
66
BleDeviceInteractor({
7-
required Future<List<DiscoveredService>> Function(String deviceId)
8-
bleDiscoverServices,
9-
required Future<List<int>> Function(QualifiedCharacteristic characteristic)
10-
readCharacteristic,
11-
required Future<void> Function(QualifiedCharacteristic characteristic,
12-
{required List<int> value})
13-
writeWithResponse,
14-
required Future<void> Function(QualifiedCharacteristic characteristic,
15-
{required List<int> value})
16-
writeWithOutResponse,
7+
required Future<List<Service>> Function(String deviceId) bleDiscoverServices,
178
required void Function(String message) logMessage,
18-
required Stream<List<int>> Function(QualifiedCharacteristic characteristic)
19-
subscribeToCharacteristic,
209
}) : _bleDiscoverServices = bleDiscoverServices,
21-
_readCharacteristic = readCharacteristic,
22-
_writeWithResponse = writeWithResponse,
23-
_writeWithoutResponse = writeWithOutResponse,
24-
_subScribeToCharacteristic = subscribeToCharacteristic,
2510
_logMessage = logMessage;
2611

27-
final Future<List<DiscoveredService>> Function(String deviceId)
28-
_bleDiscoverServices;
29-
30-
final Future<List<int>> Function(QualifiedCharacteristic characteristic)
31-
_readCharacteristic;
32-
33-
final Future<void> Function(QualifiedCharacteristic characteristic,
34-
{required List<int> value}) _writeWithResponse;
35-
36-
final Future<void> Function(QualifiedCharacteristic characteristic,
37-
{required List<int> value}) _writeWithoutResponse;
38-
39-
final Stream<List<int>> Function(QualifiedCharacteristic characteristic)
40-
_subScribeToCharacteristic;
12+
final Future<List<Service>> Function(String deviceId) _bleDiscoverServices;
4113

4214
final void Function(String message) _logMessage;
4315

44-
Future<List<DiscoveredService>> discoverServices(String deviceId) async {
16+
Future<List<Service>> discoverServices(String deviceId) async {
4517
try {
4618
_logMessage('Start discovering services for: $deviceId');
4719
final result = await _bleDiscoverServices(deviceId);
4820
_logMessage('Discovering services finished');
4921
return result;
5022
} on Exception catch (e) {
51-
_logMessage('Error occured when discovering services: $e');
52-
rethrow;
53-
}
54-
}
55-
56-
Future<List<int>> readCharacteristic(
57-
QualifiedCharacteristic characteristic) async {
58-
try {
59-
final result = await _readCharacteristic(characteristic);
60-
61-
_logMessage('Read ${characteristic.characteristicId}: value = $result');
62-
return result;
63-
} on Exception catch (e, s) {
64-
_logMessage(
65-
'Error occured when reading ${characteristic.characteristicId} : $e',
66-
);
67-
// ignore: avoid_print
68-
print(s);
23+
_logMessage('Error occurred when discovering services: $e');
6924
rethrow;
7025
}
7126
}
72-
73-
Future<void> writeCharacterisiticWithResponse(
74-
QualifiedCharacteristic characteristic, List<int> value) async {
75-
try {
76-
_logMessage(
77-
'Write with response value : $value to ${characteristic.characteristicId}');
78-
await _writeWithResponse(characteristic, value: value);
79-
} on Exception catch (e, s) {
80-
_logMessage(
81-
'Error occured when writing ${characteristic.characteristicId} : $e',
82-
);
83-
// ignore: avoid_print
84-
print(s);
85-
rethrow;
86-
}
87-
}
88-
89-
Future<void> writeCharacterisiticWithoutResponse(
90-
QualifiedCharacteristic characteristic, List<int> value) async {
91-
try {
92-
await _writeWithoutResponse(characteristic, value: value);
93-
_logMessage(
94-
'Write without response value: $value to ${characteristic.characteristicId}');
95-
} on Exception catch (e, s) {
96-
_logMessage(
97-
'Error occured when writing ${characteristic.characteristicId} : $e',
98-
);
99-
// ignore: avoid_print
100-
print(s);
101-
rethrow;
102-
}
103-
}
104-
105-
Stream<List<int>> subScribeToCharacteristic(
106-
QualifiedCharacteristic characteristic) {
107-
_logMessage('Subscribing to: ${characteristic.characteristicId} ');
108-
return _subScribeToCharacteristic(characteristic);
109-
}
11027
}

example/lib/src/ui/device_detail/characteristic_interaction_dialog.dart

Lines changed: 16 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -10,51 +10,27 @@ class CharacteristicInteractionDialog extends StatelessWidget {
1010
required this.characteristic,
1111
Key? key,
1212
}) : super(key: key);
13-
final QualifiedCharacteristic characteristic;
13+
final Characteristic characteristic;
1414

1515
@override
1616
Widget build(BuildContext context) => Consumer<BleDeviceInteractor>(
17-
builder: (context, interactor, _) => _CharacteristicInteractionDialog(
18-
characteristic: characteristic,
19-
readCharacteristic: interactor.readCharacteristic,
20-
writeWithResponse: interactor.writeCharacterisiticWithResponse,
21-
writeWithoutResponse:
22-
interactor.writeCharacterisiticWithoutResponse,
23-
subscribeToCharacteristic: interactor.subScribeToCharacteristic,
24-
));
17+
builder: (context, interactor, _) => _CharacteristicInteractionDialog(characteristic: characteristic),
18+
);
2519
}
2620

2721
class _CharacteristicInteractionDialog extends StatefulWidget {
2822
const _CharacteristicInteractionDialog({
2923
required this.characteristic,
30-
required this.readCharacteristic,
31-
required this.writeWithResponse,
32-
required this.writeWithoutResponse,
33-
required this.subscribeToCharacteristic,
3424
Key? key,
3525
}) : super(key: key);
3626

37-
final QualifiedCharacteristic characteristic;
38-
final Future<List<int>> Function(QualifiedCharacteristic characteristic)
39-
readCharacteristic;
40-
final Future<void> Function(
41-
QualifiedCharacteristic characteristic, List<int> value)
42-
writeWithResponse;
43-
44-
final Stream<List<int>> Function(QualifiedCharacteristic characteristic)
45-
subscribeToCharacteristic;
46-
47-
final Future<void> Function(
48-
QualifiedCharacteristic characteristic, List<int> value)
49-
writeWithoutResponse;
27+
final Characteristic characteristic;
5028

5129
@override
52-
_CharacteristicInteractionDialogState createState() =>
53-
_CharacteristicInteractionDialogState();
30+
_CharacteristicInteractionDialogState createState() => _CharacteristicInteractionDialogState();
5431
}
5532

56-
class _CharacteristicInteractionDialogState
57-
extends State<_CharacteristicInteractionDialog> {
33+
class _CharacteristicInteractionDialogState extends State<_CharacteristicInteractionDialog> {
5834
late String readOutput;
5935
late String writeOutput;
6036
late String subscribeOutput;
@@ -72,13 +48,13 @@ class _CharacteristicInteractionDialogState
7248

7349
@override
7450
void dispose() {
51+
textEditingController.dispose();
7552
subscribeStream?.cancel();
7653
super.dispose();
7754
}
7855

7956
Future<void> subscribeCharacteristic() async {
80-
subscribeStream =
81-
widget.subscribeToCharacteristic(widget.characteristic).listen((event) {
57+
subscribeStream = widget.characteristic.subscribe().listen((event) {
8258
setState(() {
8359
subscribeOutput = event.toString();
8460
});
@@ -89,28 +65,23 @@ class _CharacteristicInteractionDialogState
8965
}
9066

9167
Future<void> readCharacteristic() async {
92-
final result = await widget.readCharacteristic(widget.characteristic);
68+
final result = await widget.characteristic.read();
9369
setState(() {
9470
readOutput = result.toString();
9571
});
9672
}
9773

98-
List<int> _parseInput() => textEditingController.text
99-
.split(',')
100-
.map(
101-
int.parse,
102-
)
103-
.toList();
74+
List<int> _parseInput() => textEditingController.text.split(',').map(int.parse).toList();
10475

10576
Future<void> writeCharacteristicWithResponse() async {
106-
await widget.writeWithResponse(widget.characteristic, _parseInput());
77+
await widget.characteristic.write(_parseInput());
10778
setState(() {
10879
writeOutput = 'Ok';
10980
});
11081
}
11182

11283
Future<void> writeCharacteristicWithoutResponse() async {
113-
await widget.writeWithoutResponse(widget.characteristic, _parseInput());
84+
await widget.characteristic.write(_parseInput(), withResponse: false);
11485
setState(() {
11586
writeOutput = 'Done';
11687
});
@@ -203,7 +174,7 @@ class _CharacteristicInteractionDialogState
203174
Padding(
204175
padding: const EdgeInsets.symmetric(vertical: 8.0),
205176
child: Text(
206-
widget.characteristic.characteristicId.toString(),
177+
widget.characteristic.id.toString(),
207178
),
208179
),
209180
divider,
@@ -218,8 +189,9 @@ class _CharacteristicInteractionDialogState
218189
child: Padding(
219190
padding: const EdgeInsets.only(top: 20.0),
220191
child: ElevatedButton(
221-
onPressed: () => Navigator.of(context).pop(),
222-
child: const Text('close')),
192+
onPressed: () => Navigator.of(context).pop(),
193+
child: const Text('close'),
194+
),
223195
),
224196
)
225197
],

0 commit comments

Comments
 (0)