`
class AfterLayout extends SingleChildRenderObjectWidget {
const AfterLayout({
super.key,
required this.callback,
super.child,
});
@override
RenderObject createRenderObject(BuildContext context) {
return RenderAfterLayout(callback);
}
@override
void updateRenderObject(BuildContext context, RenderAfterLayout renderObject) {
renderObject.callback = callback;
}
final ValueSetter<RenderAfterLayout> callback;
}
class RenderAfterLayout extends RenderProxyBox {
RenderAfterLayout(this.callback);
ValueSetter<RenderAfterLayout> callback;
@override
void performLayout() {
super.performLayout();
SchedulerBinding.instance.addPostFrameCallback((timeStamp) => callback(this));
}
// component offset
Offset get offset => localToGlobal(Offset.zero);
// component size
Rect get rect => offset & size;
}
`
使用示例:
AfterLayout(
callback: (layout) {
// 在回调中获取size
toolbarFeature.tabBarHeight = layout.size.height;
},
child: bottomBar),