dotintent / FlutterBleLib

Bluetooth Low Energy library for Flutter with support for simulating peripherals
Apache License 2.0
535 stars 197 forks source link

didUpdateState(state: unsupported) #526

Open xelons opened 3 years ago

xelons commented 3 years ago

Using the provided example, when I tap on a device, go to the device details page and tap return button to go back to device list like 3 times it craches, without doing anything on the details screen, it crashes and then scan does not work anymore. Here is the verbose code:

2020-09-17 02:30:31.552391-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:31.552286  D   new DevicesList.<ac>:    Build row for 0
2020-09-17 02:30:31.820087-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:31.819982  D   DeviceDetailsViewState.dispose:  Dispose DeviceListScreenState
2020-09-17 02:30:31.821039-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:31.821020  D   DeviceDetailsViewState._onPause:     onPause
2020-09-17 02:30:35.542003-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:35.541794  D   DevicesList._createTapListener.<ac>:     clicked device: bledevice
2020-09-17 02:30:35.543681-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:35.543563  D   DeviceListScreenState._onResume.<ac>:    navigate to details
2020-09-17 02:30:35.544924-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:35.544806  D   DeviceListScreenState._onPause:  onPause
2020-09-17 02:30:35.546139-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:35.546019  D   DevicesBloc.dispose:     cancel _devicePickerSubscription
[RxBLEKit|DEBG|07:30:35.547]: CentralManager(10784072000) stopScan()
2020-09-17 02:30:35.583295-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:35.583108  D   DeviceDetailsViewState.didChangeDependencies:    didChangeDependencies
2020-09-17 02:30:35.589045-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:35.588976  D   DeviceDetailsViewState._onResume:    onResume
2020-09-17 02:30:35.592725-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:35.592698  D   DeviceDetailsBloc.init:  init bloc
2020-09-17 02:30:35.635844-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:35.635747  D   new DevicesList.<ac>:    Build row for 0
2020-09-17 02:30:36.620250-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:36.620097  D   DeviceDetailsViewState._onResume.<ac>:   navigate to details
2020-09-17 02:30:36.620947-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:36.620881  D   DeviceDetailsViewState._onPause:     onPause
2020-09-17 02:30:36.622944-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:36.622879  D   DeviceDetailsViewState._onResume.<ac>:   back from details
2020-09-17 02:30:36.623767-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:36.623706  D   DeviceListScreenState._onResume.<ac>:    back from details
2020-09-17 02:30:36.624802-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:36.624743  D   new DeviceDetailsBloc.<ac>:  Disconnected!
2020-09-17 02:30:36.646034-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:36.645889  D   DeviceListScreenState.build:     build DeviceListScreenState
2020-09-17 02:30:36.646649-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:36.646572  D   DeviceListScreenState._onResume:     onResume
2020-09-17 02:30:36.647169-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:36.647110  D   DevicesBloc.init:    Init devices bloc
2020-09-17 02:30:36.648307-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:36.648244  D   DevicesBloc.init:     listen to _devicePickerController.stream
[RxBLEKit|DEBG|07:30:36.652]: CentralManager(10783968432) didUpdateState(state: unsupported)
2020-09-17 02:30:36.653239-0500 Runner[33775:11825229] [CoreBluetooth] XPC connection invalid
2020-09-17 02:30:36.656683-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:36.656568  D   new DevicesList.<ac>:    Build row for 0
2020-09-17 02:30:36.676708-0500 Runner[33775:11824498] flutter: set log level to verbose
2020-09-17 02:30:36.975271-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:36.975164  D   DeviceDetailsViewState.dispose:  Dispose DeviceListScreenState
2020-09-17 02:30:36.976898-0500 Runner[33775:11824498] flutter: 2020-09-17T02:30:36.976847  D   DeviceDetailsViewState._onPause:     onPause
2020-09-17 02:31:16.672181-0500 Runner[33775:11824498] flutter: 2020-09-17T02:31:16.672052  D   DevicesBloc.refresh:     refresh started
2020-09-17 02:31:16.677945-0500 Runner[33775:11824498] flutter: 2020-09-17T02:31:16.677878  D   DevicesBloc._startScan:  Ble client created
2020-09-17 02:31:16.685923-0500 Runner[33775:11824498] [VERBOSE-2:ui_dart_state.cc(166)] Unhandled Exception: BleError (Error code: 100, ATT error code: null, iOS error code: null, Android error code: null, reason: null, internal message: null, device ID: null, service UUID: null, characteristic UUID: null, descriptor UUID: null)
#0      ScanningMixin._prepareScanEventsStream.<anonymous closure> (package:flutter_ble_lib/src/bridge/scanning_mixin.dart:10:26)
#1      _invokeErrorHandler (dart:async/async_error.dart:16:24)
#2      _HandleErrorStream._handleError (dart:async/stream_pipe.dart:282:9)
#3      _ForwardingStreamSubscription._handleError (dart:async/stream_pipe.dart:161:13)
#4      _rootRunBinary (dart:async/zone.dart:1214:47)
#5      _CustomZone.runBinary (dart:async/zone.dart:1107:19)
#6      _CustomZone.runBinaryGuarded (dart:async/zone.dart:1013:7)
#7      _BufferingStreamSubscription._sendError.sendError (dart:async/stream_impl.dart:376:15)
#8      _BufferingStreamSubscription._sendError (dart:async/stream_impl.dart:394:16)
#9      _DelayedError.perform (dart:async/stream_impl.dart:622:14)
#10     _StreamImplEvents.handleNext (dart:async/stream_impl.dart:730:11)
#11     _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:687:7)
#12     _rootRun (dart:async/zone.dart:1182:47)
#13     _CustomZone.run (dart:async/zone.dart:1093:19)
#14     _CustomZone.runGuarded (dart:async/zone.dart:997:7)
#15     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1037:23)
#16     _rootRun (dart:async/zone.dart:1190:13)
#17     _CustomZone.run (dart:async/zone.dart:1093:19)
#18     _CustomZone.runGuarded (dart:async/zone.dart:997:7)
#19     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1037:23)
#20     _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
#21     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
2020-09-17 02:32:27.475653-0500 Runner[33775:11824498] flutter: 2020-09-17T02:32:27.475501  D   DevicesBloc.refresh:     refresh started
2020-09-17 02:32:27.482632-0500 Runner[33775:11824498] flutter: 2020-09-17T02:32:27.482518  D   DevicesBloc._startScan:  Ble client created
2020-09-17 02:32:32.745131-0500 Runner[33775:11824498] flutter: 2020-09-17T02:32:32.744972  D   DevicesBloc.refresh:     refresh started
2020-09-17 02:32:32.751928-0500 Runner[33775:11824498] flutter: 2020-09-17T02:32:32.751792  D   DevicesBloc._startScan:  Ble client created
2020-09-17 02:32:34.679309-0500 Runner[33775:11824498] flutter: 2020-09-17T02:32:34.679152  D   DevicesBloc.refresh:     refresh started
2020-09-17 02:32:34.687440-0500 Runner[33775:11824498] flutter: 2020-09-17T02:32:34.687285  D   DevicesBloc._startScan:  Ble client created
mikolak commented 3 years ago

Thanks for reporting it! Example needs a proper rewrite - it seems BLE client is created every time the scan screen is entered.