SmallButton

This commit is contained in:
PROF25-FINAL 2025-05-26 14:44:36 +03:00
parent 54826f4054
commit 798dfe9541
2 changed files with 94 additions and 1 deletions

View File

@ -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,
],
);
}
}

View File

@ -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,
);
}
},
);
}