在写项目使用NestedScrollView折叠的时候,遇到一个问题,FlexibleSpaceBar中的内容需要动态展示,有的需要数据返回来可能隐藏,导致高度不定,但是SliverAppBar中expandedHeight只能固定写死,所以只能另寻其他途径获取这个高度。
- copy一份FlexibleSpaceBar中的代码,另外写进一个StatelessWidget中,设置一个GlobalKey。
- 现在需要处理请求,在请求成功的回调中这样写,利用请求成功的第一帧来获取高度
WidgetsBinding.instance.addPostFrameCallback((_) { RenderBox _cardBox = _flexibleSpaceBarKey.currentContext.findRenderObject(); Future.delayed(Duration(milliseconds: 10), () { setState(() { heightFlexibleSpaceBar = _cardBox.size.height; }); }); });