Итак, я снова делал свое игровое приложение, используя фреймворк flutter. и я попытался использовать несколько GestureDetectors на моей странице игры.
поэтому я попытался не повторять свой код функции, который должен вызываться, когда я нажимаю этот GestureDetector, объявив его вне Widget Build ().
и тут происходит что-то странное. для каждого GestureDetector, использующего эту функцию. эти функции уже были вызваны еще до того, как я нажимал что-либо на экране своего android эмулятора.
Значит ли это, что мне нужно сделать отдельную функцию для каждого GestureDetectors, чтобы избежать этой проблемы?
Widget build(BuildContext context) {
double w = MediaQuery.of(context).size.width;
double h = MediaQuery.of(context).size.height;
//debugPaintSizeEnabled = true;
void playSlot(int x,int y){
var posx = x-1;
var posy = y-1;
mycolor = mycolor ? false : true;
toggle[posx][posy] = toggle[posx][posy] ? false : true;
if(mycolor){
slot[posx][posy] = 2;
}
else{slot[posx][posy] = 1;}
print(mycolor);
}
return Scaffold(
body: Center(
child: Column(
children: <Widget>[
//////////////////////////Score Board ////////////////////////////////////////
GameScore(side1Score: mainGame.getSide1Win(),side2Score: mainGame.getSide2Win(),turn: mycolor,),
//////////////////////////Score Board ////////////////////////////////////////
//////////////////////////Game Structure ////////////////////////////////////////
Container(
height: h/2,
child: Container(
child: Column(
children: <Widget>[
Expanded(
child: Row(
children: <Widget>[
GameSlot(onTapE:(){setState(() {playSlot(1,1);});},c: toggle[0][0],id: slot[0][0]),
GameSlot(onTapE:(){setState(() {playSlot(1,2);});},c: toggle[0][1],id: slot[0][1]),
GameSlot(onTapE:(){setState(() {playSlot(1,3);});},c: toggle[0][2],id: slot[0][2]),
],
),
),
Expanded(
child: Row(
children: <Widget>[
GameSlot(onTapE:(){setState(() {playSlot(2,1);});},c: toggle[1][0],id: slot[1][0]),
GameSlot(onTapE:(){setState(() {playSlot(2,2);});},c: toggle[1][1],id: slot[1][1]),
GameSlot(onTapE:(){setState(() {playSlot(2,3);});},c: toggle[1][2],id: slot[1][2]),
],
),
),
Expanded(
child: Row(
children: <Widget>[
GameSlot(onTapE:(){setState(() {playSlot(3,1);});},c: toggle[2][0],id: slot[2][0]),
GameSlot(onTapE:(){setState(() {playSlot(3,2);});},c: toggle[2][1],id: slot[2][1]),
GameSlot(onTapE:(){setState(() {playSlot(3,3);});},c: toggle[2][2],id: slot[2][2]),