почему состояние не смогло получить новейшее в flutter после изменения состояния в reducer

#flutter

#flutter

Вопрос:

Я получаю состояние flutter в buildView функции, подобной этой:

 Widget buildView(ArticleListState state, Dispatch dispatch, ViewService viewService) {
  final articles = state.articles;
}
 

но состояние не может получить самое новое, я не могу установить статьи в начальной функции следующим effect.dart образом:

 Future _onInit(Action action, Context<ArticleListState> ctx) async {
  ArticleListState articleListState = ctx.state;
  List<int> ids = articleListState.articleIds;
  List<Item> articles = new List();
  for(final i in ids){
    Item article = await Repo.fetchArticleItem(i);
    if (article != null) {
      articles.add(article);
    }
  }
  if (articles != null) {
    ctx.dispatch(ArticleListActionCreator.onSetArticles(articles));
  }
}
 

и в reducer измените состояние:

 ArticleListState _onSetArticles(ArticleListState state, Action action) {
  ArticleListState newState = state.clone();
  List<Item> articles = (action.payload as List<Item>);
  newState.articles = articles;
  newState.articleRequest.latestTime = 1;
  return newState;
}
 

Я думаю, что при возврате newstate UI buildView должен инициировать повторный запуск, и состояние может быть самым новым с информацией о статье. но информация о статье всегда получает null и фактически не запускает повторный запуск. что мне сделать, чтобы это исправить?

Ответ №1:

вы должны реализовать функцию набора соединителей следующим образом:

  @override
  void set(HomeListDefaultState state, ArticleListState subState) {
    state.articleListState.articles = subState.articles;
  }