Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Async methods and error stack traces, to reduce crashing and help debugging #67

Open
wants to merge 27 commits into
base: master
Choose a base branch
from

Conversation

Erhannis
Copy link

As in woodemi/quick_blue#126 :
As it was, any of several different mistakes (such as not discovering services before trying to read a characteristic) would cause a PlatformException to be thrown in an unawaited Future, crashing the whole app. I've converted all such methods as I've found from void to async Future, enabling the user to await their completion or add a catchError. I also added a stack trace to a number of otherwise more opaque errors.

I split the async and trace changes into two commits, this time.
Also - I noticed a number of other places where async methods are called without either awaiting them nor handling errors. "If the future completes with an error, it was likely a mistake to not await it. That error will still occur and will be considered unhandled...." ( https://api.dart.dev/stable/2.15.1/dart-async/unawaited.html ) I wasn't sure in these cases whether the correct behavior was to await, or add an error handler, so I marked the ones I saw with a TODO comment. I didn't really search for them, though, so I expect there are still other examples.

@Erhannis
Copy link
Author

Oh - it should perhaps be noted that I only added the stack traces to the invokeMethod errors in QuickBlue for Android.

@NeariX67
Copy link

Appreciate the merge of my fork. However, please note that the serviceUUID-Filter is not implemented for Linux.

Credits for the fix of some crashes under windows: https://github.com/Yongle-Fu/flutter_blue_plus

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants