Как использовать Mobx для объекта List в Flutter? - PullRequest
0 голосов
/ 16 апреля 2020

Я хочу изменить статус флажка с помощью 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);

                                                },
                                              ),
                                            ),
                                          ],
                                        ),
                  },
                )

Я не могу найти причину проблемы root

1 Ответ

0 голосов
/ 22 апреля 2020

Как сказал Антоан Еленков, вам следует удалить свойство @computed. Но ваша главная проблема заключается в том, что вы не должны использовать List, а ObservalbleList, он работает как List. Итак, вы должны заменить

  List<bool> statusCheckbox = List<bool>();

на

  @observable
  ObservableList<bool> statusCheckbox = ObservableList();

...