我有读取BLE特性数据(列表类型的数字)的功能。我想在构建小部件后异步运行它。 我需要访问上下文变量(因为 Provider - 状态管理库)。从设备收集的数据在很长一段时间内到来(几十分钟,通常是 20-30 分钟)。我想用这些数据填充列表,但在描述之前需要这个异步函数的功能。我怎样才能做到这一点?数据将被异步读取,并将“出现”到 UI(将显示在我已经拥有的 ListView 中)。我正在使用最新的 Flutter。
目前我通过单击 ElevatedButton (onPressed) 读取数据,但我需要之前提到的异步函数在循环中工作。
onPressed: () async =>
{
result = await inter.readCharacteristic(characteristic),
print(new String.fromCharCodes(result)),
},
我需要每 10 秒检查一次 BLE 特性。
我应该把这样的功能放在哪里?
你在使用任何状态管理库吗?
如果是这样,那么您可以在构建方法开始时通过执行类似
Future(() { myAsyncfunc(); });
的操作来启动异步函数,更新该函数中的状态并使用状态管理库来触发小部件重新构建。虽然我相信你可以想出更好的逻辑来处理这个问题。
如果不是,那么您可以尝试将 buildContext 和 setState 传递给该异步函数并从该函数调用 setState。确保在调用 setState 之前检查 context.mounted。