Package selection guidance compiled from public package information, community data, and project usage.
The after_layout package enables developers to execute code immediately after a widget's first layout pass, ensuring access to accurate dimensions and positions once the widget has been rendered on screen. It is particularly useful for performing actions that depend on final layout measurements, such as animations, positioning adjustments, or integrating with other UI components. The package works across all major platforms supported by Flutter, including mobile, web, and desktop. It provides a simple API through a mixin that can be added to any StatefulWidget.
Use cases
Running post-layout animations
Adjusting widget positions based on actual size
Initializing third-party libraries requiring layout data
Synchronizing UI elements after rendering
Handling dynamic content sizing
Key features
Simple mixin-based API
Cross-platform compatibility
Executes once after first frame
No need for timers or callbacks
Works with StatefulWidgets
Suitable for
Developers needing precise layout timing
UI-heavy applications with dynamic layouts
Animations triggered after rendering
Custom widgets requiring layout awareness
Considerations
Not suitable for repeated layout events
May cause performance issues if misused
Requires stateful widget context
Limited to one execution per widget instance
Does not work before first build
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
Flutter After Layout
Brings functionality to execute code after the first layout of a widget has been performed, i.e. after the first frame has been displayed.
Quick Usage
Add with AfterLayoutMixin<MyWidget> mixin to your State<MyWidget> class and then implement the FutureOr<void> afterFirstLayout(BuildContext context) abstract method. Code in this method will be called the first time this widget is laid out on the screen.
Motivation
If you want to display a widget that depends on the layout, such as a Dialog or BottomSheet, you can not use that widget in initState.