Future<Uint8List> 转 Uint8List

Flutter Future 转 Uint8List

Future 转 Uint8List

在调用IJKPlayer一个screenShot()截屏方法时遇到了类型不匹配的问题。screenShot()返回的是Future<Uint8List>类型。但是我要将返回的图片用Image.memory()显示在屏幕上。Image.memory()要求的图片类型是Uint8List类型。这样的话我就需要将Future<Uint8List>转为Uint8List类型。由于不了解Future,所以一直不知道怎么解决这个问题。在网上查了很久,才通过“飞翔的熊blabla”的博客找到了解决方法。
博客地址:https://blog.csdn.net/sd19871122/article/details/83506333

await 和 async

对于返回类型为Future的方法,如果我们想将它赋给T类型的变量的话,就要在这个方法前加上await。但是如果要用await的话,就要在当前函数名后加async。

List<Uint8List> images = List();
onPressed: () async{
      try{
         Uint8List image = await _ijkMediaController.screenShot();
         images.add(image);
         setState(() {});
         }catch(e){
            print(e);
         }

之所以加await就可以去掉Future<>,是因为Future有延时运算,会将对象插入队列等待执行。Future字面意思就是“未来”,意味着你要在未来才能得到它的结果。使用await代表你等待了一段时间,Future自然就没用了,然后就剩下Future<T>里面的T了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值