forked from mirrors/material_3_expressive
Add ButtonGroupM3E component with overflow handling and update API to use actions
This commit is contained in:
parent
4ee55ee2aa
commit
582af894f3
14 changed files with 1463 additions and 255 deletions
|
|
@ -1,2 +1,7 @@
|
|||
## 0.1.2
|
||||
- Add optional `cornerRadiusOverride` to allow per-corner radii when using square shapes (enables grouped buttons with rounded outer and square inner corners).
|
||||
- Shape resolution updated to honor `cornerRadiusOverride` for square/pressed-square states; no breaking API changes.
|
||||
- Internal: minor style resolution refactors, no behavior changes for existing usages.
|
||||
|
||||
## 0.1.0
|
||||
- Changelog initialized.
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ class ButtonM3E extends StatefulWidget {
|
|||
this.smallPaddingDeprecated24 = false,
|
||||
this.enabled = true,
|
||||
this.statesController,
|
||||
this.cornerRadiusOverride, // new optional per-corner override for square shapes
|
||||
});
|
||||
|
||||
final VoidCallback? onPressed;
|
||||
|
|
@ -33,6 +34,7 @@ class ButtonM3E extends StatefulWidget {
|
|||
final bool smallPaddingDeprecated24;
|
||||
final bool enabled;
|
||||
final WidgetStatesController? statesController;
|
||||
final BorderRadius? cornerRadiusOverride;
|
||||
|
||||
@override
|
||||
State<ButtonM3E> createState() => _ButtonM3EState();
|
||||
|
|
@ -165,12 +167,17 @@ class _ButtonM3EState extends State<ButtonM3E> {
|
|||
final selected = states.contains(WidgetState.selected) || widget.selected;
|
||||
final pressed = states.contains(WidgetState.pressed);
|
||||
|
||||
final BorderRadius squareBaseRadius = widget.cornerRadiusOverride ??
|
||||
BorderRadius.circular(tokens.squareRadius(widget.size));
|
||||
final BorderRadius pressedSquareRadius = widget.cornerRadiusOverride ??
|
||||
BorderRadius.circular(tokens.pressedRadius(widget.size));
|
||||
|
||||
OutlinedBorder round = const StadiumBorder();
|
||||
OutlinedBorder square = RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(tokens.squareRadius(widget.size)),
|
||||
borderRadius: squareBaseRadius,
|
||||
);
|
||||
OutlinedBorder pressedSquare = RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(tokens.pressedRadius(widget.size)),
|
||||
borderRadius: pressedSquareRadius,
|
||||
);
|
||||
|
||||
OutlinedBorder base = widget.shape == ButtonM3EShape.round ? round : square;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
|
||||
name: button_m3e
|
||||
description: Material 3 Expressive Buttons for Flutter with 5 styles, 5 sizes, round/square shapes, and toggle selection.
|
||||
version: 0.1.1
|
||||
version: 0.1.2
|
||||
repository: https://github.com/EmilyMoonstone/material_3_expressive/tree/main/packages/button_m3e
|
||||
issue_tracker: https://github.com/EmilyMonestone/material_3_expressive/issues
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue