Skip to content

Commit 6c953a2

Browse files
authored
feat: Padding component (#3661)
Implements a padding component similar to the padding widget of Flutter.
1 parent e8860f6 commit 6c953a2

10 files changed

Lines changed: 579 additions & 346 deletions

examples/lib/stories/experimental/layout_component_example.dart

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,27 @@ layouts to reflect the chosen values.
8888
}),
8989
],
9090
);
91+
final paddingControls = RowComponent(
92+
gap: 16,
93+
children: [
94+
TextComponent(text: 'Padding:'),
95+
...[
96+
EdgeInsets.zero,
97+
const EdgeInsets.all(16),
98+
const EdgeInsets.symmetric(vertical: 8, horizontal: 24),
99+
].map((padding) {
100+
return ButtonComponent(
101+
button: TextComponent(text: padding.toString()),
102+
onPressed: () {
103+
rowDemo.children.query<PaddingComponent>().first.padding =
104+
padding;
105+
columnDemo.children.query<PaddingComponent>().first.padding =
106+
padding;
107+
},
108+
);
109+
}),
110+
],
111+
);
91112
final rootColumnComponent = ColumnComponent(
92113
position: Vector2(48, 48),
93114
gap: 24,
@@ -107,6 +128,7 @@ layouts to reflect the chosen values.
107128
crossAxisControls,
108129
gapControls,
109130
sizeControls,
131+
paddingControls,
110132
rowDemo,
111133
columnDemo,
112134
],
@@ -125,9 +147,12 @@ layouts to reflect the chosen values.
125147
TextComponent(
126148
text: 'Perhaps a bit longer text',
127149
),
128-
CircleComponent(
129-
radius: 48,
130-
paint: Paint()..color = Colors.blue,
150+
PaddingComponent(
151+
padding: EdgeInsets.zero,
152+
child: CircleComponent(
153+
radius: 48,
154+
paint: Paint()..color = Colors.blue,
155+
),
131156
),
132157
];
133158
}

packages/flame/lib/experimental.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,8 @@ export 'src/experimental/geometry/shapes/rectangle.dart' show Rectangle;
1818
export 'src/experimental/geometry/shapes/rounded_rectangle.dart'
1919
show RoundedRectangle;
2020
export 'src/experimental/geometry/shapes/shape.dart' show Shape;
21-
export 'src/experimental/layout_component.dart' show LayoutComponent, Direction;
21+
export 'src/experimental/layout_component.dart' show LayoutComponent;
22+
export 'src/experimental/linear_layout_component.dart'
23+
show LinearLayoutComponent, Direction;
24+
export 'src/experimental/padding_component.dart' show PaddingComponent;
2225
export 'src/experimental/row_component.dart' show RowComponent;

packages/flame/lib/src/experimental/column_component.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import 'package:flame/src/experimental/layout_component.dart';
1+
import 'package:flame/src/experimental/linear_layout_component.dart';
22
import 'package:flutter/rendering.dart';
33

44
/// ColumnComponent is a layout component that arranges its children in a
@@ -29,7 +29,7 @@ import 'package:flutter/rendering.dart';
2929
/// ],
3030
/// );
3131
/// ```
32-
class ColumnComponent extends LayoutComponent {
32+
class ColumnComponent extends LinearLayoutComponent {
3333
ColumnComponent({
3434
super.mainAxisAlignment = MainAxisAlignment.start,
3535
super.crossAxisAlignment = CrossAxisAlignment.start,

0 commit comments

Comments
 (0)