#android #flutter #dart #mobile
#Android #флаттер #dart #Мобильный
Вопрос:
я пытался добавить кнопку «Добавить еще» в конце моего списка, но продолжаю получать эту ошибку
RangeError (index): Invalid value: Not in inclusive range 0..2: 3
это код, который я пробовал, который выдает мне ошибку, не знаю, где я ошибаюсь
return GridView.builder(
shrinkWrap: true,
itemCount: snapshot.data.documents.length 1,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisSpacing: 20,
mainAxisSpacing: 20,
childAspectRatio: 1.7,
crossAxisCount:2),
itemBuilder: (BuildContext context, int index) {
DocumentSnapshot thesnapshot = snapshot.data.docs[index];
print(index.toString());
print(snapshot.data.documents.length.toString());
if(index == snapshot.data.documents.length){
return Container();
}else{
return
Bounce(
duration: Duration(milliseconds: 110),
onPressed: (){
setState(() {
});
},
child:Container( margin: EdgeInsets.only(),decoration: BoxDecoration(
image: new DecorationImage(
image: new AssetImage(thesnapshot.data()['image'].toString()),
fit: BoxFit.cover,),
color: Color(0xff1e82d2),
borderRadius: BorderRadius.circular(5),),
child:Container( padding: EdgeInsets.all(MediaQuery.of(context).size.width*4/100) ,color: Color(0xff0B0B0B).withOpacity(0.7),
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Column(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container( width:MediaQuery.of(context).size.width*20/100,
child:AutoSizeText(thesnapshot.data()['title'].toString(),style: TextStyle(
color: Colors.white,
fontFamily: 'Montserrat',height: 1.2,
fontSize: 16,
),maxLines: 2))
]), Spacer()
])
)));
}
},
);
…………………………………………………………………………………………………………………………………………………………………………………………
Комментарии:
1. В вашем представлении сетки нет ничего плохого. Можете ли вы отправить реализацию виджета Bounce.
Ответ №1:
Я думаю, вам следует использовать GridView
вместо GridView.builder
этого:
return GridView(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisSpacing: 20,
mainAxisSpacing: 20,
childAspectRatio: 1.7,
crossAxisCount: 2),
children: List<Widget>.generate(snapshot.data.documents.length 1, (index) {
DocumentSnapshot thesnapshot = snapshot.data.docs[index];
//your continued code
}) [ListTile(title: Text('Add More'), onTap: (){},)],
);