Как добавить кнопку «Добавить еще» в конце моего списка gridview builder, я продолжаю получать ошибку

#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: (){},)],

);