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了。