Flutter Bloc 在 initState 函数中访问状态
Flutter Bloc access state inside of initState function
我已经为图像轮播创建了状态 currentPage
。我的三个可能事件是 increment/decrement 和设置页面,这将更改轮播的当前查看页面。我正在使用计时器在 5 秒后增加或重置状态,具体取决于当前查看的页面是什么。
@override
void initState() {
super.initState();
Timer.periodic(const Duration(seconds: 5), (Timer timer) {
if (_currentPage < 2) {
context.read<CarouselBloc>().add(IncrementCurrentPage());
} else {
context.read<CarouselBloc>().add(SetCurrentPage(newPage: 0));
}
_pageController.animateToPage(_currentPage,
duration: const Duration(milliseconds: 300), curve: Curves.easeIn);
});
}
我现在想将 _currentPage
变量更改为状态 state.currentPage
。但我不知道如何从我的 void initState
函数中访问状态。我用 BlocProvider 包装我的旋转木马小部件,以从上下文中读取 CarouselBloc
并根据当前页面发出事件。
我希望我能得到一些关于从 initState 函数中访问 state.currentPage
的帮助。
试试这个:
var page = context.read<CarouselBloc>().state.currentPage
我已经为图像轮播创建了状态 currentPage
。我的三个可能事件是 increment/decrement 和设置页面,这将更改轮播的当前查看页面。我正在使用计时器在 5 秒后增加或重置状态,具体取决于当前查看的页面是什么。
@override
void initState() {
super.initState();
Timer.periodic(const Duration(seconds: 5), (Timer timer) {
if (_currentPage < 2) {
context.read<CarouselBloc>().add(IncrementCurrentPage());
} else {
context.read<CarouselBloc>().add(SetCurrentPage(newPage: 0));
}
_pageController.animateToPage(_currentPage,
duration: const Duration(milliseconds: 300), curve: Curves.easeIn);
});
}
我现在想将 _currentPage
变量更改为状态 state.currentPage
。但我不知道如何从我的 void initState
函数中访问状态。我用 BlocProvider 包装我的旋转木马小部件,以从上下文中读取 CarouselBloc
并根据当前页面发出事件。
我希望我能得到一些关于从 initState 函数中访问 state.currentPage
的帮助。
试试这个:
var page = context.read<CarouselBloc>().state.currentPage