Infinite List with bloc (List length not changing in the presentation layer) in Flutter

I am trying to load data from the api and i am using a bloc pattern for state management but when i call load more when scrolling the the presentation layer only change when the hasReachedMax parameter is true if it was false the ui still with the loading indicator

here is the presentation layer

   Flexible(
          child: Container(
            child: BlocConsumer<AllProjectsBloc, AllProjectsState>(
              builder: (context, state) {
                if (state is AllProjectsLoadingState) {
                  return Center(
                    child: CircularProgressIndicator(),
                  );
                } **else if (state is AllProjectsLoadedState) {
                  return ListView.builder(
                    controller: _scrollController,
                    itemCount: state.hasReachedMax ? state.allProjectsData.length  : 
                    state.allProjectsData.length +1 ,
                    itemBuilder: (context, int i) {
                      return i >= 5 ? BottomLoader() : UnitCard(
                        price: state.allProjectsData[i].price,
                        date: state.allProjectsData[i].title.en,
                        image: state.allProjectsData[i].image,
                        bathroom: state.allProjectsData[i].bathroom,
                        bedroom: state.allProjectsData[i].bedroom,
                        area: state.allProjectsData[i].area,**

                        function:(){
                          Navigator.push(context, MaterialPageRoute(builder: 
                         (context)=>DetailedProperty()));
                        });
                    },
                  );
                } else if (state is FilteredProjectsLoadedState) {
                  return Expanded(
                      child: ListView.builder(
                        itemCount: state.filteredProjectsData.length,
                        itemBuilder: (context, i) {
                          return UnitCard(
                            price: 50,
                            date: '20/5/2020',
                            bedroom: 3,
                            bathroom: 2,
                            area: 120,
                            image: 
              
              
         'https://www.propertyturkey.com/uploads/realestate/larg/buyukcekmece_villa_1_8.jpg',
                            function:(){
                              Navigator.push(context, MaterialPageRoute(builder: 
                 (context)=>DetailedProperty()));
                            } ,
                          );
                        },
                      ));
                } else if (state is AllProjectsError) {
                  return ErrorView(
                      errorMessage: state.error.errorMessage,
                      retryAction: () {
                        BlocProvider.of<AllProjectsBloc>(context)
                            .add(state.failedEvent);
                      });
                }
                return Container();
              },
             
  }

the bloc class

          Flexible(
          child: Container(
            child: BlocConsumer<AllProjectsBloc, AllProjectsState>(
              builder: (context, state) {
                if (state is AllProjectsLoadingState) {
                  return Center(
                    child: CircularProgressIndicator(),
                  );
                } **else if (state is AllProjectsLoadedState) {
                  return ListView.builder(
                    controller: _scrollController,
                    itemCount: state.hasReachedMax ? state.allProjectsData.length  : 
                    state.allProjectsData.length +1 ,
                    itemBuilder: (context, int i) {
                      return i >= 5 ? BottomLoader() : UnitCard(
                        price: state.allProjectsData[i].price,
                        date: state.allProjectsData[i].title.en,
                        image: state.allProjectsData[i].image,
                        bathroom: state.allProjectsData[i].bathroom,
                        bedroom: state.allProjectsData[i].bedroom,
                        area: state.allProjectsData[i].area,**

                        function:(){
                          Navigator.push(context, MaterialPageRoute(builder: 
                         (context)=>DetailedProperty()));
                        });
                    },
                  );
                } else if (state is FilteredProjectsLoadedState) {
                  return Expanded(
                      child: ListView.builder(
                        itemCount: state.filteredProjectsData.length,
                        itemBuilder: (context, i) {
                          return UnitCard(
                            price: 50,
                            date: '20/5/2020',
                            bedroom: 3,
                            bathroom: 2,
                            area: 120,
                            image: 
              
              
         'https://www.propertyturkey.com/uploads/realestate/larg/buyukcekmece_villa_1_8.jpg',
                            function:(){
                              Navigator.push(context, MaterialPageRoute(builder: 
                 (context)=>DetailedProperty()));
                            } ,
                          );
                        },
                      ));
                } else if (state is AllProjectsError) {
                  return ErrorView(
                      errorMessage: state.error.errorMessage,
                      retryAction: () {
                        BlocProvider.of<AllProjectsBloc>(context)
                            .add(state.failedEvent);
                      });
                }
                return Container();
              },
             
  }

state class

 class AllProjectsLoadedState extends AllProjectsState {

            final  List<Data>  allProjectsData;
             final bool hasReachedMax ;

         AllProjectsLoadedState({this.allProjectsData , this.hasReachedMax}) : 
   super([allProjectsData , hasReachedMax]);

       AllProjectsLoadedState copyWith ({List<Data> allProjectsData , bool hasReachedMax }){
  return AllProjectsLoadedState(
    allProjectsData: allProjectsData ?? this.allProjectsData ,
    hasReachedMax:hasReachedMax ?? this.hasReachedMax
       );
}

}