From 798dfe9541ac81a7db8a16feb1ba9fee10da65b8 Mon Sep 17 00:00:00 2001 From: PROF25-FINAL Date: Mon, 26 May 2025 14:44:36 +0300 Subject: [PATCH] SmallButton --- example/lib/storybook.dart | 6 +- .../presentation/widgets/button_widget.dart | 89 +++++++++++++++++++ 2 files changed, 94 insertions(+), 1 deletion(-) diff --git a/example/lib/storybook.dart b/example/lib/storybook.dart index ef8472d..cf290b0 100644 --- a/example/lib/storybook.dart +++ b/example/lib/storybook.dart @@ -11,7 +11,11 @@ class StorybookApp extends StatelessWidget { wrapperBuilder: (BuildContext context, Widget? widget) { return UtilsMaterialWrapper(widget: widget); }, - stories: [BigButtonWidget.story, BubbleButtonWidget.story], + stories: [ + BigButtonWidget.story, + SmallButtonWidget.story, + BubbleButtonWidget.story, + ], ); } } diff --git a/lib/src/presentation/widgets/button_widget.dart b/lib/src/presentation/widgets/button_widget.dart index 11e798d..ac581ac 100644 --- a/lib/src/presentation/widgets/button_widget.dart +++ b/lib/src/presentation/widgets/button_widget.dart @@ -271,3 +271,92 @@ class BigButtonWidget extends BaseStateButtonWidget { }, ); } + +class SmallButtonWidget extends BigButtonWidget { + const SmallButtonWidget({ + super.key, + required super.theme, + required super.onTap, + required super.text, + required super.textColor, + required super.backgroundColor, + required super.disabledBackgroundColor, + required super.strokeColor, + }); + + @override + double get _height => 40.h; + + @override + double get _width => 96.w; + + @override + TextStyle get _textStyle => theme.styles.captionSemibold14; + + @override + EdgeInsets get _padding => + EdgeInsets.symmetric(vertical: 10.h, horizontal: 13.5.w); + + SmallButtonWidget.filled({ + super.key, + required super.theme, + required super.onTap, + required super.text, + }) : super.filled(); + + SmallButtonWidget.outlined({ + super.key, + required super.theme, + required super.onTap, + required super.text, + }) : super.outlined(); + + SmallButtonWidget.simple({ + super.key, + required super.theme, + required super.onTap, + required super.text, + }) : super.simple(); + + static Story get story => Story( + name: "SmallButton", + builder: (BuildContext context) { + var theme = CustomTheme.of(context); + onTap() { + debugPrint("SmallButton pressed!"); + } + + String text = context.knobs.text(label: "Text", initial: "Добавить"); + int type = context.knobs.options( + label: "Type", + initial: 0, + options: [ + Option(label: "Filled", value: 0), + Option(label: "Outlined", value: 1), + Option(label: "Simple", value: 2), + ], + ); + bool active = context.knobs.boolean(label: "Active", initial: true); + switch (type) { + case 0: + return SmallButtonWidget.filled( + theme: theme, + onTap: active ? onTap : null, + text: text, + ); + case 1: + return SmallButtonWidget.outlined( + theme: theme, + onTap: active ? onTap : null, + text: text, + ); + case _: + return SmallButtonWidget.simple( + theme: theme, + onTap: active ? onTap : null, + text: text, + ); + } + }, + ); +}