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
相关产品推荐
相关产品推荐

