LayoutComponent
will be the base class for a family of utility classes which handle the layout of their children. This would be quite similar to Flutter layout widgets such as Align
, Column
, Center
, Container
, Padding
, SizedBox
, etc.
The purpose of these new components is to assist with constructing UIs within a game: dialogue boxes, HUD, informational screens, in-game UIs such as dialogue or trade windows, etc.
PR #1971 already attempts to add two such layout classes: Row
and Column
-- this proposal is to have more of them, all under a single umbrella of LayoutComponent
.
For example, suppose you're making a game and you want to display current score in the top right corner. Then, you should be able to declare it like this:
camera.viewport.add(
Padding(
padding: EdgeInsets.all(20),
children: [
Align(
anchor: Anchor.topRight,
child: ScoreComponent(),
),
],
),
);
After this, the game would take care to properly position the ScoreComponent
and move it whenever the game resizes.
LayoutComponent
would rely on the onParentResize
lifecycle method (#1421).
The tree structure can be either normal (the target is added as a child of the LayoutComponent), or flat (the target is added to the parent directly, and layout component is a sibling). I'm not sure which option is better here.
Pay now to fund the work behind this issue.
Get updates on progress being made.
Maintainer is rewarded once the issue is completed.
You're funding impactful open source efforts
You want to contribute to this effort
You want to get funding like this too