Выбор дня недели во флаттере

#android #ios #flutter #dictionary #dart

Вопрос:

Я пытался реализовать выбор дня недели.

Мне нужно, чтобы было до 7 рядов. Каждая строка содержит семь дней.Например, если пользователь выбирает понедельник в 1-й строке, поэтому его не следует выбирать в остальных строках. пользователь не может сделать выбор до тех пор, пока предыдущий выбор не будет снят в определенный день.

Моя текущая проблема в моем коде заключается в том, что я могу сделать множественный выбор определенного дня в разных строках. Я хочу прекратить делать выбор в определенный день, если он уже выбран подряд.

итак, мой логин и код

 Map<int,Map<String,bool>>  selectedDayOnCard={};

initlizeSelectedDay(){

      selectedDayOnCard[0]={"mon": false, "tue": false, "wed": false, "thu": false, "fri": false, "sat": false, "sun": false};
      selectedDayOnCard[1]={"mon": false, "tue": false, "wed": false, "thu": false, "fri": false, "sat": false, "sun": false};
      selectedDayOnCard[2]={"mon": false, "tue": false, "wed": false, "thu": false, "fri": false, "sat": false, "sun": false};
      selectedDayOnCard[3]={"mon": false, "tue": false, "wed": false, "thu": false, "fri": false, "sat": false, "sun": false};
      selectedDayOnCard[4]={"mon": false, "tue": false, "wed": false, "thu": false, "fri": false, "sat": false, "sun": false};
      selectedDayOnCard[5]={"mon": false, "tue": false, "wed": false, "thu": false, "fri": false, "sat": false, "sun": false};
      selectedDayOnCard[6]={"mon": false, "tue": false, "wed": false, "thu": false, "fri": false, "sat": false, "sun": false};

    }

makeSelection(int index, String key){

    Map<String,bool> map=selectedDayOnCard[index];

    if(map[key]){
      map[key]=false;
      selectedDayOnCard[index]=map;
    }else{
      map[key]=true;
      selectedDayOnCard[index]=map;
    }
    setState(() {
      selectedDayOnCard;
    });
    
  }

  Color getSelectionColor(int index,String key){
    Map<String,bool> map=selectedDayOnCard[index];
    if(map[key]){
      return MyColors.selectedDay;
    }else{
      return Colors.grey[400];
    }
  } 
 

введите описание изображения здесь