#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;
}