Skip to content

Commit

Permalink
improve example app null-safety
Browse files Browse the repository at this point in the history
  • Loading branch information
remonh87 authored and Remon Helmond committed Mar 24, 2021
1 parent cf78743 commit 541974c
Show file tree
Hide file tree
Showing 8 changed files with 33 additions and 38 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
## 3.0.0

* Breaking: Migration to null-safety.
* Improve example app by adding discover services, read, write and subscribe to characteristic.
* Improve example app by adding discover services, read, write and subscribe to characteristic.

## 2.7.3

Expand Down
2 changes: 1 addition & 1 deletion example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ void main() {
create: (_) => _monitor.state,
initialData: BleStatus.unknown,
),
StreamProvider<ConnectionStateUpdate?>(
StreamProvider<ConnectionStateUpdate>(
create: (_) => _connector.state,
initialData: const ConnectionStateUpdate(
deviceId: 'Unknown device',
Expand Down
43 changes: 19 additions & 24 deletions example/lib/src/ble/ble_device_connector.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'dart:async';
import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
import 'package:flutter_reactive_ble_example/src/ble/reactive_state.dart';

class BleDeviceConnector extends ReactiveState<ConnectionStateUpdate?> {
class BleDeviceConnector extends ReactiveState<ConnectionStateUpdate> {
BleDeviceConnector({
required FlutterReactiveBle ble,
required Function(String message) logMessage,
Expand All @@ -14,22 +14,19 @@ class BleDeviceConnector extends ReactiveState<ConnectionStateUpdate?> {
final void Function(String message) _logMessage;

@override
Stream<ConnectionStateUpdate?> get state =>
_deviceConnectionController.stream;
Stream<ConnectionStateUpdate> get state => _deviceConnectionController.stream;

final _deviceConnectionController =
StreamController<ConnectionStateUpdate?>();
final _deviceConnectionController = StreamController<ConnectionStateUpdate>();

// ignore: cancel_subscriptions
StreamSubscription<ConnectionStateUpdate?>? _connection;
late StreamSubscription<ConnectionStateUpdate> _connection;

Future<void> connect(String deviceId) async {
_logMessage('Start connecting to $deviceId');
await _connection?.cancel();
_connection = _ble.connectToDevice(id: deviceId).listen(
(update) {
_logMessage(
'ConnectionState for device $deviceId : ${update?.connectionState}');
'ConnectionState for device $deviceId : ${update.connectionState}');
_deviceConnectionController.add(update);
},
onError: (e) =>
Expand All @@ -38,22 +35,20 @@ class BleDeviceConnector extends ReactiveState<ConnectionStateUpdate?> {
}

Future<void> disconnect(String deviceId) async {
if (_connection != null) {
try {
_logMessage('disconnecting to device: $deviceId');
await _connection?.cancel();
} on Exception catch (e, _) {
_logMessage("Error disconnecting from a device: $e");
} finally {
// Since [_connection] subscription is terminated, the "disconnected" state cannot be received and propagated
_deviceConnectionController.add(
ConnectionStateUpdate(
deviceId: deviceId,
connectionState: DeviceConnectionState.disconnected,
failure: null,
),
);
}
try {
_logMessage('disconnecting to device: $deviceId');
await _connection.cancel();
} on Exception catch (e, _) {
_logMessage("Error disconnecting from a device: $e");
} finally {
// Since [_connection] subscription is terminated, the "disconnected" state cannot be received and propagated
_deviceConnectionController.add(
ConnectionStateUpdate(
deviceId: deviceId,
connectionState: DeviceConnectionState.disconnected,
failure: null,
),
);
}
}

Expand Down
6 changes: 3 additions & 3 deletions example/lib/src/ble/ble_device_interactor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class BleDeviceInteractor {
{required List<int> value})
writeWithOutResponse,
required void Function(String message) logMessage,
required Stream<List<int>?> Function(QualifiedCharacteristic characteristic)
required Stream<List<int>> Function(QualifiedCharacteristic characteristic)
subscribeToCharacteristic,
}) : _bleDiscoverServices = bleDiscoverServices,
_readCharacteristic = readCharacteristic,
Expand All @@ -36,7 +36,7 @@ class BleDeviceInteractor {
final Future<void> Function(QualifiedCharacteristic characteristic,
{required List<int> value}) _writeWithoutResponse;

final Stream<List<int>?> Function(QualifiedCharacteristic characteristic)
final Stream<List<int>> Function(QualifiedCharacteristic characteristic)
_subScribeToCharacteristic;

final void Function(String message) _logMessage;
Expand Down Expand Up @@ -99,7 +99,7 @@ class BleDeviceInteractor {
}
}

Stream<List<int>?> subScribeToCharacteristic(
Stream<List<int>> subScribeToCharacteristic(
QualifiedCharacteristic characteristic) {
_logMessage('Subscribing to: ${characteristic.characteristicId} ');
return _subScribeToCharacteristic(characteristic);
Expand Down
4 changes: 2 additions & 2 deletions example/lib/src/ble/ble_scanner.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
import 'package:flutter_reactive_ble_example/src/ble/reactive_state.dart';
import 'package:meta/meta.dart';

class BleScanner implements ReactiveState<BleScannerState?> {
class BleScanner implements ReactiveState<BleScannerState> {
BleScanner({
required FlutterReactiveBle ble,
required Function(String message) logMessage,
Expand All @@ -19,7 +19,7 @@ class BleScanner implements ReactiveState<BleScannerState?> {
final _devices = <DiscoveredDevice>[];

@override
Stream<BleScannerState?> get state => _stateStreamController.stream;
Stream<BleScannerState> get state => _stateStreamController.stream;

void startScan(List<Uuid> serviceIds) {
_logMessage('Start ble discovery');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class _CharacteristicInteractionDialog extends StatefulWidget {
QualifiedCharacteristic characteristic, List<int> value)
writeWithResponse;

final Stream<List<int>?> Function(QualifiedCharacteristic characteristic)
final Stream<List<int>> Function(QualifiedCharacteristic characteristic)
subscribeToCharacteristic;

final Future<void> Function(
Expand All @@ -61,7 +61,7 @@ class _CharacteristicInteractionDialogState
late String writeOutput;
late String subscribeOutput;
late TextEditingController textEditingController;
late StreamSubscription<List<int>?> subscribeStream;
late StreamSubscription<List<int>>? subscribeStream;

@override
void initState() {
Expand All @@ -74,7 +74,7 @@ class _CharacteristicInteractionDialogState

@override
void dispose() {
subscribeStream.cancel();
subscribeStream?.cancel();
super.dispose();
}

Expand Down
4 changes: 2 additions & 2 deletions example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ packages:
name: nested
url: "https://pub.dartlang.org"
source: hosted
version: "0.0.5-nullsafety.1"
version: "1.0.0"
node_interop:
dependency: transitive
description:
Expand Down Expand Up @@ -367,7 +367,7 @@ packages:
name: provider
url: "https://pub.dartlang.org"
source: hosted
version: "5.0.0-nullsafety.2"
version: "5.0.0"
pub_semver:
dependency: transitive
description:
Expand Down
4 changes: 2 additions & 2 deletions example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ dependencies:
sdk: flutter
flutter_reactive_ble:
path: ../
provider: ^5.0.0-nullsafety.2
functional_data: ^1.0.0-nullsafety.0
provider: ^5.0.0
functional_data: ^1.0.0
intl: ^0.17.0


Expand Down

0 comments on commit 541974c

Please sign in to comment.