dart – 在Flutter中预加载本地图像资源
发布时间:2020-12-14 14:55:17 所属栏目:百科 来源:网络整理
导读:我有一个简单的图像资源列表,我在屏幕上有一个图像小部件.我使用一个按钮循环浏览它们,使用setState(). const ListString _photoData = const [ "assets/generic-cover.jpg","assets/generic-cover2.jpg","assets/generic-cover3.jpg","assets/generic-cover
我有一个简单的图像资源列表,我在屏幕上有一个图像小部件.我使用一个按钮循环浏览它们,使用setState().
const List<String> _photoData = const [ "assets/generic-cover.jpg","assets/generic-cover2.jpg","assets/generic-cover3.jpg","assets/generic-cover4.jpg",]; class _MyHomePageState extends State<MyHomePage> { int _coverPhoto = 0; void _switchCoverPhoto() { setState(() { _coverPhoto++; if (_coverPhoto == _photoData.length) { _coverPhoto = 0; } }); } @override Widget build(BuildContext context) { return new Scaffold( body: new Stack( children: <Widget>[ new Image.asset ( _photoData[_coverPhoto],fit: ImageFit.cover,height: 600.0,),new Positioned ( // photo toggle button child: new IconButton( icon: new Icon (Icons.photo),onPressed: _switchCoverPhoto,color: Colors.white,top: 32.0,right: 32.0,] ) ); } 第一张图片渲染得很好.但是,当我调用_switchCoverPhoto()时,在显示“assets / generic-cover2.jpg”之前会有一个简短的白色闪烁. 这导致了一个简单的问题:是否有一种简单的方法可以将后续图像(或图像)预加载到内存中,以便事先没有闪存? See attached GIF for a loose approximation. 解决方法
确保将gaplessPlayback设置为true以用于图像.
这不会解决预加载问题,但在切换资产时会阻止图像闪烁为白色. 将gaplessPlayback设置为true时,原始图像将保留,直到新图像完成加载并且不会出现“白色闪烁间隙”. var img = new Image.asset( _photoData[_coverPhoto],gaplessPlayback: true,); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |