You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中显示数据时为何得到Instance of Future<List<int>>?

解决方法

问题出在characteristic46?.read()是异步方法,返回的是Future<List>类型,直接字符串插值会输出对象实例的描述字符串,必须等待异步操作完成拿到实际数据后再显示,以下是两种可行方案:

方案一:先获取异步结果再弹出对话框

将addPostFrameCallback的回调改为async,先await获取read()的结果,再传入Text组件:

WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
  final result = await characteristic46?.read();
  showDialog(
    context: context,
    barrierColor: Colors.transparent,
    builder: (context) {
      return AlertDialog(
        title: Text('Be Careful ${result ?? 'No data'}'),
        backgroundColor: Color.fromARGB(45, 231, 148, 54),
        alignment: Alignment.topCenter,
      );
    });
});

方案二:用FutureBuilder在对话框内处理异步结果

如果需要在对话框显示时等待异步结果,可以用FutureBuilder包裹Text,根据异步状态显示对应内容:

WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
  showDialog(
    context: context,
    barrierColor: Colors.transparent,
    builder: (context) {
      return AlertDialog(
        title: FutureBuilder<List<int>>(
          future: characteristic46?.read(),
          builder: (context, snapshot) {
            if (snapshot.connectionState == ConnectionState.done) {
              return Text('Be Careful ${snapshot.data ?? 'No data'}');
            } else {
              // 异步加载中,可替换为自定义加载组件
              return CircularProgressIndicator();
            }
          },
        ),
        backgroundColor: Color.fromARGB(45, 231, 148, 54),
        alignment: Alignment.topCenter,
      );
    });
});

内容的提问来源于stack exchange,提问作者rania

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 09:40:36