2
をウィジェットを作成し、動的にフラッター - 私はウィジェットのリストを構築しようとしています動的
List<Widget> buildGrid(){
List<Widget> grid = new List<Widget>(3);
List<Widget> tiles = [];
int counter = 0;
for (int i = 0; i < 3; i++){
tiles = [];
for (int j = 0; j < 4; j++){
tiles.add(new GestureDetector(
onTap:(){
setState((){
toggleColor(counter);
});
},
child: new Container(
color: colors[counter],
width: 80.0,
height: 80.0,
margin: new EdgeInsets.all(11.3),
)
));
counter++;
}
grid[i] = new Row(
children: tiles,
);
counter = 0;
}
return grid;
}
これに伴う問題は、新たに追加された要素のtoggleColorは常に12です。私は新しいを追加することを意味していること、ですGestureDetectorはカウンターの現在の反復を使用しているため、ユーザーが要素をクリックすると色付けされるだけです。たとえば、カウンタを3に設定すると、何を意味するのか分かっていれば、現在のインターアクションではなく、カウンター変数を参照しているため、すべてが選択されます。
この問題を効率的に解決する方法についてのご意見はありますか?
クロージャをどこに配置する必要がありますか? – OhMad
どこでも、インラインで宣言することもできます。 onTap:(value){setState(()=> toggleColor(value));})(カウンタ) –
ありがとうございます、あなたのbuildTileソリューションは完全に動作します。 – OhMad