вы можете просто попробовать создать модель для своих ящиков и иметь свойство boolean
и сохранить статус каждого ящика в списке, чтобы знать, касался ли ящик или нет, вы также можете указать список логических значений, но я предпочитаю создавать список модель, так как это позволит вам добавить дополнительные свойства, я немного изменил ваш код, вы можете увидеть, как он работает здесь, на dartpad также
class Tabbed extends StatefulWidget {
@override
_TabbedState createState() => _TabbedState();
}
class _TabbedState extends State<Tabbed> {
Color color = Colors.green;
@override
void initState() {
for(int i=0;i<listLength;i++){
list1.add(
TabModel(isTapped: false)); // assigns initial value to false
}
for(int i=0;i<listLength;i++){
list2.add(
TabModel(isTapped: false)); // assigns initial value to false
}
}
Widget column1(){
return Column(
children: List.generate(
listLength,
(index) =>GestureDetector(
onTap: (){
// this selects only one out of many and disables rest
for(int i=0;i<list1.length;i++){
if(i!=index){
list1[i].isTapped=false;
}
};
setState((){
list1[index].isTapped = true;
});
},
child:Container(
margin:EdgeInsets.all(5),
color: list1[index].isTapped? Colors.red:color,
height:100,
width:100
))
));
}
Widget column2(){
return Column(
children: List.generate(
listLength,
(index) =>GestureDetector(
onTap: (){
setState((){
list2[index].isTapped = !list2[index].isTapped;
});
},
child:Container(
margin:EdgeInsets.all(5),
color: list2[index].isTapped? Colors.red:color,
height:100,
width:100
))
));
}
List<TabModel> list1 =[];
List<TabModel> list2 =[];
int listLength=5;
@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
column1(),
column2()
],);
}
}
class TabModel{
bool isTapped = false;
TabModel({this.isTapped});
}
![введите здесь описание изображения](https://i.stack.imgur.com/X1W32.gif)
если это не то, что вы хотите, или если вы столкнулись с какой-либо проблемой с пониманием какой-либо части кода, не стесняйтесь оставить комментарий, который я хотел бы помочь, вывод bwlow показывает два независимых столбца в coumn1, вы можете выбрать один из многих полей и в другое вы можете выбрать несколько полей
person
Mahesh Jamdade
schedule
15.02.2020