我有一个家庭Bloc,它是从preferences包加载List<String>
,然后我想更新我的TabBar和TabBarView的基础上,所以我需要首先设置TabController长度,但我不知道如何执行它这里是我的代码。
HomeDataState
abstract class HomeDataState {}
class HomeDataInitialState extends HomeDataState{}
class HomeDataLoadingState extends HomeDataState {}
class HomeDataLoadedState<T> extends HomeDataState {
final T data;
HomeDataLoadedState({required this.data});
}
class HomeDataErrorState extends HomeDataState {
final String error;
HomeDataErrorState({required this.error});
}
BLOC
Future<void> _loadAllFeed(
HomeLoadAllFeed event,
Emitter<HomeBlocState> emit,
) async {
log('loading home feed..');
/// emit loading all data
emit(state.copyWith(
newHeadLineState: HomeDataLoadingState(),
newTopicDataState: HomeDataLoadingState()));
/// fetches the headline news for country
final headLineResponse = await _newsRepository.fetchHeadLineNews();
/// gets the first topic from selected list
final List<String>? userTopics = await _prefOperator.getUserTopics();
topics = userTopics??[];
/// gets the news based on the topic
final firstTopicNews =
await _newsRepository.getNewsBaseOnTopic(userTopics?.first ?? 'Car');
/// if states was success for both
if (headLineResponse is DataSuccess && firstTopicNews is DataSuccess) {
emit(
state.copyWith(
newHeadLineState: HomeDataLoadedState(data: headLineResponse.data),
newTopicDataState: HomeDataLoadedState(data: firstTopicNews.data),
newUserTopicDataState: HomeDataLoadedState(data: userTopics)),
);
}
直到现在一切都还可以,但我不知道如何给予我的TabController长度在Ui。
当我使用context.watch
时出现这个错误
1条答案
按热度按时间wswtfjt71#
使用context.read(),因为一旦控制器在init方法中初始化,一旦状态发生变化,它就不能处理任何监视函数,而您所做的就是给予控制器一次值