Я хочу изменить статус флажка с помощью использования Mobx, после щелчка значение изменилось, но не обновилось в пользовательском интерфейсе, Observer не видит действия изменения, которое он перестраивает этот виджет в файле Mobx:
@observable
List<bool> statusCheckbox = List<bool>();
@computed
List<bool> get getStatusCheckBox {
return statusCheckbox;
}
@action
changeStatusItem(bool val, int index) {
statusCheckbox[index] = val;
}
В файле содержится виджет:
Observer(
name: 'ListHomePage',
builder: (BuildContext context) {
return child: GridView.builder(
gridDelegate:
new SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3,
childAspectRatio: (itemWidth / itemHeight),
),
itemCount:
_userManagementStore.userAPI.users.length,
itemBuilder: (context, index) {
UserManagement user =
_userManagementStore.getUser(index: index);
return AnimationConfiguration.staggeredGrid(
position: index,
duration:
const Duration(milliseconds: 375),
columnCount: 2,
child: Container(
child: ScaleAnimation(
child: GestureDetector(
child: Stack(
children: <Widget>[
Align(
alignment: Alignment.topRight,
child: Checkbox(
value: _userManagementStore.getStatusCheckBox[index],
onChanged: (bool val) {
_userManagementStore.changeStatusItem(val, index);
},
),
),
],
),
},
)
Я не могу найти основную причину проблемы
1 ответ
Как сказал Антоан Еленков, вы должны удалить свойство @computed
. Но ваша главная проблема заключается в том, что вы должны использовать не List
, а ObservalbleList
, он работает как List
. Итак, вы должны заменить
List<bool> statusCheckbox = List<bool>();
От
@observable
ObservableList<bool> statusCheckbox = ObservableList();
Похожие вопросы
Новые вопросы
flutter
Используйте этот тег для вопросов о наборе инструментов кроссплатформенного пользовательского интерфейса Flutter. Если ваш вопрос касается конкретной платформы, отметьте ее также (например, [android], [ios] и т. д.). Вы также можете включить тег [dart] для вопросов по кодированию.