使用Swiper
制作了輪播組件,而圖片顯示使用的CachedNetworkImage
洪己;
在每張圖片第一次被切換顯示時(shí)洽故,都會(huì)有一個(gè)加載的過程,對(duì)用戶并不友好笆凌,所以就想著在圖片顯示前預(yù)加載對(duì)應(yīng)的圖片圣猎。
根據(jù)網(wǎng)上搜索到的flutter的PageView預(yù)加載圖片的解決方法,進(jìn)行了一些處理乞而,就是在頁面切換時(shí)預(yù)加載下一頁圖片的內(nèi)容送悔,并使用OffStage
進(jìn)行預(yù)加載,從而實(shí)現(xiàn)了圖片的預(yù)加載方法。
全部圖片預(yù)加載:
Stack(
children: [
Swiper.children(
index: _mediaIndex,
loop: false,
itemHeight: 400,
onIndexChanged: (index) {
_mediaIndex = index;
},
children: List.generate(
imageUrlList.length,
(index) => CachedNetworkImage(
imageUrl: _imageUrlList[index],
),
),
),
Offstage(
offstage: true,
child: Column(
children: List.generate(
imageUrlList.length,
(index) => CachedNetworkImage(
imageUrl: _imageUrlList[index],
),
),
),
),
],
)
預(yù)加載下一張圖片
Stack(
children: [
Swiper.children(
index: _mediaIndex,
loop: false,
itemHeight: 400,
onIndexChanged: (index) {
_mediaIndex = index;
},
children: List.generate(
imageUrlList.length,
(index) => CachedNetworkImage(
imageUrl: _imageUrlList[index],
),
),
),
Offstage(
offstage: true,
child: Column(
children:[
if (_mediaIndex > 0) CachedNetworkImage(
imageUrl: _imageUrlList[_mediaIndex - 1],
),
if (_mediaIndex < _imageUrlList.length - 1) CachedNetworkImage(
imageUrl: _imageUrlList[_mediaIndex + 1],
),
],
),
),
],
)