简介:我在练习flutter详情页的时候,在滚动详情页的时候上面的tab要发生切换。所以是用到了获取每个item的高度,然后再通过监听scroll滑动的距离对比每个位置来切换上面的tab。主要的难度在于怎么动态的获取item的高度,查了好多篇的文章最后找见了一个是用的那就是添加一个回调,当渲染完毕后获取当前item的congtext的尺寸。
Container(
key: key3,
width: deviceWidth,
margin: EdgeInsets.only(top: 5),
padding: EdgeInsets.all(5),
decoration: BoxDecoration(
color: Colors.white,
borderRadius:
BorderRadius.all(Radius.circular(15))),
child: LayoutBuilder(builder: (context,contraints){
//详情的高度
var widgetsBinding = WidgetsBinding.instance;
widgetsBinding.addPostFrameCallback((callback) {
gdHeight =context.size.height;
print("详情的高度:${context.size.height}");
});
return Column(
我只写了一部分代码,主要关键代码是
child: LayoutBuilder(builder: (context,contraints){
//详情的高度
var widgetsBinding = WidgetsBinding.instance;
widgetsBinding.addPostFrameCallback((callback) {
gdHeight =context.size.height;
print("详情的高度:${context.size.height}");
});
这里需要一个context,我用的是LayoutBuilder,其实是用Builder就可以了。我使用LayoutBuilder是因为当时想是用contraints,但它其实是获取当前组件在父组件的位置,如果该container没有指定尺寸的话,它得到的是一个Infinity,这个是占用父组件最大宽度或高度。