flutter - 如何从资产中预加载图像?
问题描述
我正在尝试预加载一些在这样的 PageView 中使用的资产..
@override
void didChangeDependencies() {
precacheImage(AssetImage("assets/images/background.png"), context)
.then((result) {
print('$result');
});
super.didChangeDependencies();
}
预期结果:then() 中的结果值将返回预加载的图像实际结果:结果值为空
有没有人有任何关于 preloadCache() 是如何工作的例子,因为它的文档很差
解决方案
的返回值,precacheImage
因此在结果上Future<void>
使用then
不会返回图像本身。
使用它的一种更简单的方法是在build
要显示图像的小部件的父小部件的方法中使用:
class ImagePage extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Image.network("https://upload.wikimedia.org/wikipedia/commons/3/39/Periodic_table_large.png");
}
}
然后,您可以precacheImage
在导航到 ImagePage 之前调用小部件,如下所示:
class TestWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
precacheImage(NetworkImage("https://upload.wikimedia.org/wikipedia/commons/3/39/Periodic_table_large.png"), context);
return Center(
child: RaisedButton(
child: Text('Launch screen'),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ImagePage()),
);
},
));
}
}
这样,当您按下按钮启动 时ImagePage
,图像将已经加载。
推荐阅读
- sql-server - 触发器中 SELECT 的输出在哪里?
- firebase - 设置 Cloud Firestore 位置 Firebase
- matlab - 为什么 MATLAB 中两个数组的卷积会产生“NaN”值?
- angular - 具有实时缓冲区输出的 RXJS 计数器
- mysql - Is this proper way to create indexes?
- python-3.x - 结果得到“无”,不明白为什么
- python - 分类回归的最佳指标?
- flowtype - 为什么 Flow 中的 window.getComputedStyle 返回 `any` 类型?
- boost - 期望 char_ 解析器的序列和交替来合成一个字符串
- javascript - I am not hitting my api route in backend controller from angular frontend. What am I doing incorrect?