如何用flutter执行两个异步函数?

bxpogfeg  于 2023-06-07  发布在  Flutter
关注(0)|答案(2)|浏览(166)

我有两个功能在Flutter。第一个是belManager.writeCharacteristic,第二个是belManager.disonnect我想在belManager.writeCharacteristic完成后执行belManager.disonnect()。但是,由于某些原因,bleManager.disonenct()在belManager.writeCharacteristic完成之前被调用。这是代码:

switch (currentState) {
                    case BluetoothDeviceState.connected:
          await bleManager!.writeCharacteristic();
                      await bleManager.disconnect()
                      break;
                    case BluetoothDeviceState.disconnected:
                      print("please connect");
                      break;

先谢谢你的建议。

ffscu2ro

ffscu2ro1#

按照以下步骤操作,如果问题没有帮助,请使用更详细的代码更新问题:

  • 检查你的函数是否有async,没有它所有的等待都是无用的。
  • 在交换机中放置一个try/catch,这样如果它生成了一个异常,您可以很容易地找到它。
  • writeCharacteristic()之后调用.then()内部的disconnect()方法,这样你应该能够“强制”只在writeCharacteristic()完成时触发disconnect()方法。
  • 检查来自writeCharacheristic()的Future是否正常完成,并且它做了它应该做的事情。

如果这没有帮助,请在下面评论并更新您的问题,快乐编码!

gwbalxhn

gwbalxhn2#

你只需要将你的逻辑封装在Async函数中,这样你就可以很容易地等待方法。

getConnectionStatus(var currentState)async{
switch (currentState) {
  case BluetoothDeviceState.connected:
    await bleManager!.writeCharacteristic();
await bleManager.disconnect()
break;
case BluetoothDeviceState.disconnected:
print("please connect");
break;}}

相关问题