У меня есть виджет с отслеживанием состояния под названием Square (шахматы). Я вызываю setstate для различных его свойств, но он не обновляется на экране, если я не выполняю горячую перезагрузку. объединение этих 64 в 8 списков по 8, а затем передача их в список, называемый доской. Вот пример квадратных объектов:
Square(address: 'A8', piece: blackRook, color: kWhiteSquares)
Затем я создаю сетку:
class _ChessBoardState extends State<ChessBoard> {
List<List> board = startingSetup;
bool turn = true;
Square selected;
@override
Widget build(BuildContext context) {
return Expanded(
flex: 5,
child: GridView.count(
crossAxisCount: 8,
children: List.generate(
64,
(index) {
Square square = board[index ~/ 8][index % 8];
square.onPressed = () {
if (selected == null) {
// shorter for you
} else if (square == selected) {
// shorter for you
} else {
print('three');
setState(() {
selected.selected = false;
Piece p = selected.piece;
square.piece = p;
selected.piece = null;
selected = null;
});
}
};
return square;
},
),
),
);
}
}
Я пропустил if и else if для вашего здравомыслия. Все условия работают, но отображаются на экране только после горячей перезагрузки. Почему виджет не восстанавливается автоматически, когда я вызываю setState? Должно быть, не должно ли, когда, например, вызывается setState на square.piece и добавляется новый кусок?