【发布时间】:2021-09-30 04:32:57
【问题描述】:
我正在使用flutter_blue 包来使用蓝牙服务。我想检查设备是否具有蓝牙功能。方法isAvailable 似乎可以做到。但是,它返回一个 Future
import 'package:flutter_blue/flutter_blue.dart';
class BT_Base {
final FlutterBlue _fb = FlutterBlue.instance;
bool BTAvailable = true; // as a default placeholder
BT_Base () {
BTAvailable = _fixAvail();
}
_fixAvail () async {
return await _fb.isAvailable;
}
...
我尝试从中获取未来值并将其存储到BTAvailable。稍后,我使用固定的 BTAvailable 字段来获取要传递的适当 Widget,如下所示:
class BTDevicePrompt extends StatelessWidget {
@override
Widget build(BuildContext context) {
BT_Base bt = BT_Base();
var btDeviceRes = bt.scan();
if(!bt.BTAvailable) return Text('Bluetooth unavailable on device...');
else if (btDeviceRes.isEmpty) return Text('No Bluetooth devices in range...');
else {
return CupertinoActionSheet(
actions: [
...
],
)
}
}
}
但我在运行时不断收到错误type 'Future<dynamic>' is not a subtype of type 'bool'。在这种情况下如何正确使用 Future?如果整个过程停止并等待这部分也可以。
我已经经历了很多解决方案,但我无法将它们拼凑起来。
【问题讨论】:
标签: flutter dart future flutter-futurebuilder