如何在 Flutter 中完全构建 widget 后运行异步函数(long period function)

问题描述 投票:0回答:1

我有读取BLE特性数据(列表类型的数字)的功能。我想在构建小部件后异步运行它。 我需要访问上下文变量(因为 Provider - 状态管理库)。从设备收集的数据在很长一段时间内到来(几十分钟,通常是 20-30 分钟)。我想用这些数据填充列表,但在描述之前需要这个异步函数的功能。我怎样才能做到这一点?数据将被异步读取,并将“出现”到 UI(将显示在我已经拥有的 ListView 中)。我正在使用最新的 Flutter。

目前我通过单击 ElevatedButton (onPressed) 读取数据,但我需要之前提到的异步函数在循环中工作。

      onPressed: () async =>
                {
                result = await  inter.readCharacteristic(characteristic),
                print(new String.fromCharCodes(result)),
                },

我需要每 10 秒检查一次 BLE 特性。

我应该把这样的功能放在哪里?

flutter user-interface asynchronous widget
1个回答
0
投票

你在使用任何状态管理库吗?

如果是这样,那么您可以在构建方法开始时通过执行类似

Future(() { myAsyncfunc(); });
的操作来启动异步函数,更新该函数中的状态并使用状态管理库来触发小部件重新构建。虽然我相信你可以想出更好的逻辑来处理这个问题。

如果不是,那么您可以尝试将 buildContext 和 setState 传递给该异步函数并从该函数调用 setState。确保在调用 setState 之前检查 context.mounted。

© www.soinside.com 2019 - 2024. All rights reserved.