Comments (5)
Ah yah, I see the dilemma...
Sorry, I think my wording was a bit brief and I was unclear! My original thought wasn't to convert the Future to a Stream, as Futures deliver a Single Value (which is what you have in this case). Rather, my idea was to add a whenComplete(cancelConnection)
to the end of your Future chain that would ensure the methodChannel was closed automagically. This is essentially what we did for the scan
method.
However, given the connection must remain open while using the device, I'd keep returning a Future. In that case, the cancelConnection
might still be a bit confusing, because if you perform a cancelConnection
on your flutterBlue instance, you might not realize that an unrelated object is now useless.
What you could do instead is add a disconnect()
-type method to the BlueToothDevice
instead. Then the api would look like:
final device = await flutterBlue.connect(someDeviceId)
device.doSomeStuff();
device.disconnect();
Whatcha think?
from flutter_blue.
Although the context might be similar, this needs further consideration.
Neither iOS or Android time-out their connection requests (unless autoConnect = false on Android).
This means the user must keep a handle to a connectionSubscription for as long as they would like to be connected to the device, not necessarily meaning they are connected.
It may require an android edit, but at the moment I'm not seeing any reason why this wouldn't work.
from flutter_blue.
What to return from the Stream is up for debate, I figured a BluetoothDeviceState would make the most sense. With this, the listener can kick off discoverServices once the device has connected.
Any thoughts?
from flutter_blue.
With current API and flutter hot reload feature, sometimes I found that the reference to the connection often gets lost between hot reload. And if the auto reconnect function is turn on, there is no way to disconnect except shutting down the app. The API that @brianegan proposed looks easier to use for me.
from flutter_blue.
@pauldemarco Is there a reason why you set autoConnect
to true
? The problem is that this makes connect()
take a very long time (often more than 30s) and our device turns itself off before the connection can be established. With autoConnect
set to false
the connection is established almost instantly.
from flutter_blue.
Related Issues (20)
- upgrade your rxdart library to latest, its conflicting with other libraries because of older version HOT 1
- Gamepanel gp isn't null buy I still get a null pointer exception when I call speak()
- 🚨🚨🚨 [Public Service Announcement] flutter_blue_plus is the successor to this library 🚨🚨🚨
- Command execution not working?
- C:\Users\ABS\AppData\Local\Pub\Cache\hosted\pub.dev\flutter_blue_plus-1.15.2\android\src\main\java\com\boskokg\flutter_blue_plus\FlutterBluePlusPlugin.java uses or overrides a deprecated API.
- Help to resolve this error HOT 3
- ITMS-90863: Apple silicon Macs support issue HOT 3
- App crash when try readValue on android but on windows work fine
- 🚨🚨🚨 [Public Service Announcement] flutter_blue is deprecated❗Use flutter_blue_plus 🚨🚨🚨 HOT 1
- reading return value from
- 🚨🚨🚨 [Public Service Announcement] flutter_blue is deprecated❗Use flutter_blue_plus 🚨🚨🚨
- Could not resolve all files for configuration ':lib-transparency-api:protobufToolsLocator_protoc'. HOT 1
- 🚨🚨🚨 [Public Service Announcement] flutter_blue is deprecated❗Use flutter_blue_plus 🚨🚨🚨
- Execution failed for task ':flutter_blue:generateDebugProto'. HOT 1
- 🚨🚨🚨 [Public Service Announcement] flutter_blue is deprecated❗Use flutter_blue_plus 🚨🚨🚨
- How to connect the device that specifies the MAC address? For example, scan a QR code to get the MAC address of the device,
- 🚨🚨🚨 [Public Service Announcement] flutter_blue is deprecated❗Use flutter_blue_plus 🚨🚨🚨
- when i add package to my project flutter pub get not work
- 🚨🚨🚨 [Public Service Announcement] flutter_blue is deprecated❗Use flutter_blue_plus 🚨🚨🚨
- Zero services for ios
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from flutter_blue.