newStateDevice property

Stream<BLEDevice?> get newStateDevice

Implementation

Stream<BLEDevice?> get newStateDevice async* {
  // 1. MethodChannel로 초기값 get
  final List deviceInfo =
      await _methodChannel.invokeMethod('device_new_state');

  String name = deviceInfo[0];
  String address = deviceInfo[1];
  BondState bondState = BondState.getObj(deviceInfo[2]);
  bool isConnected = deviceInfo[3];
  BLEDevice device = BLEDevice(
      name: name,
      address: address,
      bondState: bondState,
      isConnected: isConnected);

  logger.d("$name $address $bondState $isConnected");

  yield device;

  // 2. 스트림
  Stream<BLEDevice> stream = _deviceNewStateEventChannel
      .receiveBroadcastStream()
      .map((newStateDevice) {
    if (newStateDevice != null) {
      String name = newStateDevice[0];
      String address = newStateDevice[1];
      BondState bondState = BondState.getObj(newStateDevice[2]);
      bool isConnected = newStateDevice[3];
      BLEDevice device = BLEDevice(
          name: name,
          address: address,
          bondState: bondState,
          isConnected: isConnected);
      return device;
    } else {
      return BLEDevice(name: "", address: "", bondState: BondState.none);
    }
  });

  yield* stream;
}