dart – Flutter provider consumer removes my items

I’m trying to build a sort function in order to sort JSON data.
For this, I have a button that opens a “showModalBottomSheet”.

Within it I can choose the following data of the school class numbers.
So in my data I have 6 classrooms when loading in my constructor.

My filter is represented by buttons which are active or not if the filter contains the number of the classroom. My code works pretty much, my problem is that when I select a filter button in order to activate or not the filter above it disappears and I do not see why?

My notifier :

class TablesNotifier with ChangeNotifier {

  // Services
  // ---------------------------------------------------------------------------
  final jsonSelectorService = locator<JsonSelectorService>();

  // Variables
  // ---------------------------------------------------------------------------
  //all data from my classerooms in JSON
  List<ClassroomModel> classrooms;
  // Data that I will display and reconstruct based on my filter parameters
  List<ClassroomModel> classroomsFiltered; 
  List<int> numberOfClassrooms = List(); 
  // Model which will store the parameters of my filters and as a function I will load the data to display
  FilterClassroomsModel filterClassroomsModel = FilterClassroomsModel();

  // Constructor
  // ---------------------------------------------------------------------------

  TablesNotifier(){
    _initialise();
  }

  // Initialisation
  // ---------------------------------------------------------------------------
  Future _initialise() async{
    classrooms = await jsonSelectorService.classrooms('data');
    classroomsFiltered = classrooms ;

    // I install the number of existing classrooms
    // Here the result is (1,2,3,4,5,6)
    classrooms.forEach((element) {
      if(!numberOfClassrooms.contains(element.type)){
        numberOfClassrooms.add(element.type);
      }
    });

    // I install the number of classrooms activated by default in my filter
    // As I decide to display all my classrooms by default
    // My filter on the classrooms must contain all the loaded classrooms
    filterClassroomsModel.classrooms = numberOfClassrooms;
    notifyListeners();
  }

  // Functions public
  // ---------------------------------------------------------------------------
  void saveClassroomsSelected(int index)
  {
    // Here my classroom model also contains the numbers of the classrooms that I want to filter
    if(filterClassroomsModel.classrooms.contains(index)){
      filterClassroomsModel.classrooms.remove(index);
    }else{
      filterClassroomsModel.classrooms.add(index);
    }
    notifyListeners();
  }
}

I have identified that in my function initialize () if I change my code by this it works :

filterClassroomsModel.classrooms= numberOfClassrooms; // this
filterClassroomsModel.classrooms= (1,2,3,4,5,6); // By this

I am losing the dynamic side of my classroom calculation and that does not suit me. But I don’t understand this behavior.

My view :

class TableScreen extends StatelessWidget {
  final String title;
  TableScreen({Key key, @required this.title}) : super(key: key);

  @override
  Widget build(BuildContext context) {

    return Scaffold(
      drawer: MenuDrawerComponent.builder(context),
      appBar: AppBar(
        backgroundColor: AppColors.backgroundDark,
        elevation: 0,
        centerTitle: true,
        title: Text(title),
      ),
      floatingActionButton: FloatingActionButton.extended(
        icon: Icon(Icons.sort),
        label: Text('Filter'),
        onPressed: () async{
          slideSheet(context);
        },
        backgroundColor: AppColors.contrastPrimary,
      ),
      body: _buildBody(context),
    );
  }

  Widget _buildBody(BuildContext context)
  {
    var _tableProvider = Provider.of<TablesNotifier>(context);

    if(_tableProvider.chargesFiltered == null){
      return Center(
        child: CircularProgressIndicator(
          backgroundColor: AppColors.colorShadowLight,
        ),
      );
    }else{
      return Column(
        children: <Widget>(
          Expanded(
            child: Container(
              padding: EdgeInsets.only(top: 10, right : 20, left : 20),
              child: ListView.builder(
                itemCount: _tableProvider.classroomsFiltered.length,
                itemBuilder: (context, index){
                  return Container(
                    child: Column(
                      children: (
                        Row(
                            // Some classrooms data
                        ),
                      ),
                    ),
                  );
                },
              ),
            )
          ),
        ),
      );
    }
  }

  void slideSheet(BuildContext context) {
    var _tableProvider = Provider.of<TablesNotifier>(context, listen:false);

    showModalBottomSheet(
        context: context,
        isScrollControlled: true,
        isDismissible: true,
        builder: (context) {
          return Wrap(
            children: (
              Container(
                color: Color(0xFF737373),
                child: Container(
                  padding : EdgeInsets.all(AppUi.RATIO*2),
                  decoration: BoxDecoration(
                    borderRadius: BorderRadius.only(
                        topLeft: Radius.circular(AppUi.RATIO*4),
                        topRight: Radius.circular(AppUi.RATIO*4)),
                    color: Colors.white,
                  ),
                  child: Column(
                    //crossAxisAlignment: CrossAxisAlignment.start,
                    children: <Widget>(
                      // Some filters ...
                      Align(
                          alignment: Alignment.centerLeft,
                          child: LabelComponent("Selected classrooms number :")
                      ),
                      ChangeNotifierProvider.value(
                        value: _tableProvider,
                        child: Consumer<TablesNotifier>(
                            builder: (context, model, child){
                              return _listOfClassrooms(context);
                            }
                        ),
                      ),
                    ),
                  ),
                ),
              ),
            )
          );
        });
  }

  Widget _listOfClassrooms(BuildContext context){
    var _tableProvider = Provider.of<TablesNotifier>(context);

    List<Widget> list = List<Widget>();
    var listClassrooms = _tableProvider.numberOfClassrooms;
    var filterClassrooms = _tableProvider.filterClassroomsModel.classrooms;

    for (var i = 0; i < listClassrooms.length; i++) {
      int selectIndex = 0;
      if(filterClassrooms.contains(listClassrooms(i))){
        selectIndex = listClassrooms(i);
      }

      list.add(
        RadioComponent(
            text: "${listClassrooms(i)}",
            index: listClassrooms(i),
            width: (MediaQuery.of(context).size.width - 56) /3,
            selectedIndex: selectIndex,
            onPressed: _tableProvider.saveChargesSelected,
          ),
      );
    }
    return Wrap(
        spacing: 8.0, // gap between adjacent chips
        runSpacing: 8.0, // gap between lines
        children: list
    );
  }
}