Как Flutter отображает виджеты, было подробно описано здесь.Он будет сравнивать новый со старым виджетом.Поэтому Flutter обычно знает, как повторно визуализировать пользовательский интерфейс в большинстве случаев.
В структуре вложенных объектов все родительские виджеты неизбежно изменяются при изменении дочернего элемента, поэтому они кажутся новыми.
Это приводит к непривлекательным визуальным эффектам для пользователя приложения.
Есть ли способ перерисовать только виджет, в котором был вызван SetState ()?
Я пробовал видыэтого.setState (() {}).Я поменял виджеты в классе без состояний.
К сожалению, оба подхода не решают проблему.
Виджет _createCheckbox (int dataArrayPosition, int elementCurrentPosition, int inputCurrentPosition) {Input inputElement = contextData.data [dataArrayPosition] .element [elementCurrentPosition] .input [inputCurrentPosition];
return Column(
children: <Widget>[
Row(
children: <Widget>[
Checkbox(
value: inputElement.checkBoxValue,
onChanged: (bool newValue) {
setState(() {
contextData.data[dataArrayPosition].element[elementCurrentPosition].input[inputCurrentPosition].checkBoxValue = newValue;
});
}),
Text(inputElement.labelForValue),
],
),
],
);
}
Кто-нибудь знает способ перерисовки только «затронутого» виджета в этом примерекогда вызывался onChanged?