Coder Social home page Coder Social logo

Comments (5)

brianegan avatar brianegan commented on July 23, 2024 3

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.

pauldemarco avatar pauldemarco commented on July 23, 2024

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.

pauldemarco avatar pauldemarco commented on July 23, 2024

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.

sandangel avatar sandangel commented on July 23, 2024

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.

wkornewald avatar wkornewald commented on July 23, 2024

@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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.