Не удается поймать исключения из асинхронного / ожидающего? - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь поймать PlatformException, поднятый на FlutterBlue.instance.Я поместил попытку кроме блока в это ожидание, но в моем отладчике все еще возникает исключение.Что я делаю не так?

import 'package:flutter/services.dart';
import 'package:flutter_blue/flutter_blue.dart';

...

Stream<BluetoothState> _getBluetoothState() async* {
  bool isAvailable = false;
  try {
    // This always raises a PlatformException
    // in the vscode debugger
    isAvailable = await FlutterBlue.instance.isAvailable;
  } on PlatformException catch(e) {
    // This doesn't seem to ever catch anything
    debugPrint('$e');
  } catch(e) {
    // Doesn't catch my exception either.
    debugPrint('$e');
  }

  // Wrap the original stream that fails to handle this exception..
  if (isAvailable) {
    await for (BluetoothState state in FlutterBlue.instance.state) {
      yield state;
    }
  } else {
    yield BluetoothState.unavailable;
  }
}

ОБНОВЛЕНИЕ: На самом деле, я даже не уверен, что это связано с асинхронностью / ожиданием, я считаю, FlutterBlue.instance вызывает ошибку, и это не асинхронно.Это просто добытчик.Я новичок в дартсе, и это довольно сильно меня потеряло.

...