Flutter 如何在调整窗口大小时设置新状态?

Flutter 如何在调整窗口大小时设置新状态?,flutter,Flutter,如何在调整窗口大小时设置新状态? 我试过这个。我真的需要改变状态 @override Widget build(BuildContext context) { return LayoutBuilder( builder: (context, constraint) { setState(() { if (constraint.width > 500) { _calendarType = CalendarTy

如何在调整窗口大小时设置新状态? 我试过这个。我真的需要改变状态

@override
  Widget build(BuildContext context) {
    return LayoutBuilder(
      builder: (context, constraint) {
        setState(() {
          if (constraint.width > 500) {
            _calendarType = CalendarType.WEEK_MODE;
          } else {
            _calendarType = CalendarType.DAY_MODE;
          }
        });
        
        return Container(
            color: Colors.white,
            child: ...;
      },
    );
  }
你这样做怎么样

。。。
如果(constraint.width>500){
_calendarType=calendarType.WEEK\u模式;
}否则{
_calendarType=calendarType.DAY\u模式;
}
...

我正在生成方法中调用setState。有什么副作用吗?刚刚更新了代码,在build方法中调用setState有副作用。只要确保您使用的是statefullWidget,您还可以通过使用一个无状态小部件和一个Bloc来实现上述功能,Bloc在windows resizeWidget为statefull时更新状态。如果build方法在调用setState时运行,这不是一个无休止的循环吗?在build方法中调用setState将尝试在小部件生成之前重建小部件树,因此您需要尝试不在那里使用setState。你有没有像我上面的例子那样尝试过?