flutter - RangeError(索引):无效值:有效值范围为空:0 在获取数据之前?
问题描述
我尝试在CarouselSlider.builder
. 这是代码
return Container(
color: Constants.secondaryColor,
child: CarouselSlider.builder(
itemCount: items.length,
itemBuilder: _listViewItemBuilder,
options: CarouselOptions(
height: MediaQuery.of(context).size.height / 4,
aspectRatio: 16 / 9,
viewportFraction: 1.0,
initialPage: 0,
enableInfiniteScroll: true,
reverse: false,
autoPlay: false,
autoPlayInterval: Duration(seconds: 4),
autoPlayAnimationDuration: Duration(milliseconds: 800),
autoPlayCurve: Curves.fastOutSlowIn,
enlargeCenterPage: true,
scrollDirection: Axis.horizontal,
),
),
);
Widget _listViewItemBuilder(
BuildContext context, int index, int pageViewIndex) {
var bannerImgs = items[index];
return Container(
child: _itemImg(bannerImgs),
);
}
Widget _itemImg(Album img) {
return Center(
child: FadeInImage.assetNetwork(
placeholder: 'images/loader.gif', image: img.image!),
);
}
在加载第一张图片之前,它显示错误:
RangeError (index): Invalid value: Valid value range is empty: 0
之后它显示正常。有人可以帮忙吗?
解决方案
使用FutureBuilder
. 加载数据时显示 a CircularProgressIndicator
,加载数据时显示您的CarouselSlider.builder
.
示例代码:
FutureBuilder<List<Album>>(
future: fetchApi, // async work
builder: (BuildContext context, AsyncSnapshot<List<Album>> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting: return CircularProgressIndicator();
default:
if (snapshot.hasError)
return Text('Error: ${snapshot.error}');
else
return Container(
color: Constants.secondaryColor,
child: CarouselSlider.builder(
itemCount: items.length,
itemBuilder: _listViewItemBuilder,
options: CarouselOptions(
height: MediaQuery.of(context).size.height / 4,
aspectRatio: 16 / 9,
viewportFraction: 1.0,
initialPage: 0,
enableInfiniteScroll: true,
reverse: false,
autoPlay: false,
autoPlayInterval: Duration(seconds: 4),
autoPlayAnimationDuration: Duration(milliseconds: 800),
autoPlayCurve: Curves.fastOutSlowIn,
enlargeCenterPage: true,
scrollDirection: Axis.horizontal,
),
),
);
}
},
)
推荐阅读
- javascript - 如何将非十进制字符串转换为 BigInt
- javascript - 每次调用时如何强制浏览器运行javascript
- c# - c# 超出 JsonResult RecursionLimit
- amazon-web-services - NiFi:有没有办法调用 AWS Comprehend 并连接到 NiFi?
- mysql - 两个 mySQL 数据库结构示例,哪一个更高效并保持数据完整性?
- angular - 使用客户端特定组件构建的角度多个应用程序
- c# - 如何在运行时使用参数解决依赖关系?
- php - 为什么 laravel 的 cookie 为空 - 5.7
- sql - SQL 数据同步功能 - 在 2 个 SQL Azure 数据库(集线器和成员数据库)之间刷新架构时遇到问题
- regex - 如何在scala中对字符串中的相似字符进行分组?