dart - 使用 PageView 预加载网络图像
问题描述
我目前正在开发一个阅读器并PageView
用于滑动图像页面。如何使下一页预加载,以便用户可以滑动到下一页而无需等待页面加载?我不想先下载所有页面,因为它会加载服务器并冻结我的应用程序。当用户浏览当前页面时,我只想下载接下来的一两个页面。
这是我的代码的摘录。
PageController _controller;
ZoomableImage nextPage;
Widget _loadImage(int index) {
ImageProvider image = new CachedNetworkImageProvider("https://example.com/${bookId}/${index+1}.jpg}");
ZoomableImage zoomed = new ZoomableImage(
image,
placeholder: new Center(
child: CupertinoActivityIndicator(),
),
);
return zoomed;
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Container(
child: PageView.builder(
physics: new AlwaysScrollableScrollPhysics(),
controller: _controller,
itemCount: book.numPages,
itemBuilder: (BuildContext context, int index) {
return index == 0 || index == 1 ? _loadImage(index) : nextPage;
},
onPageChanged: (int index) {
nextPage = _loadImage(index+1);
},
),
),
);
}
谢谢!
解决方案
简单的!刚设置allowImplicitScrolling: true, // in PageView.builder
推荐阅读
- bash - 大括号需要在单引号内用 \ 进行转义
- node.js - 请求两个url节点快递
- java - 是否可以使用在 JAVA 中保存该变量名称的字符串来访问变量?
- python - 是否需要在我们的项目中实现 ModelForm 才能在 Django 2.0.2 中实现 CreateView (CBV)?
- javascript - chrome如何知道我的登录成功了?
- java - 用户连接错误时如何加载活动?
- javascript - 哪个更快:JSON 数据或 JavaScript 对象?
- c# - 尝试以随机顺序读取图片到 flowlayoutpanel
- python - 列表不会产生结果,因为它必须是字符串。8 球财富
- php - 页面刷新后会话丢失