144 lines
4.6 KiB
Dart
144 lines
4.6 KiB
Dart
import 'package:flutter/material.dart';
|
|
import '../core/app_export.dart';
|
|
|
|
/// A class that offers pre-defined button styles for customizing button appearance.
|
|
class CustomButtonStyles {
|
|
static BoxDecoration get fullyBlack => BoxDecoration(
|
|
borderRadius: BorderRadius.circular(24.h),
|
|
color: Colors.black,
|
|
);
|
|
static BoxDecoration
|
|
get gradientOnErrorContainerToOnErrorContainerDecoration => BoxDecoration(
|
|
borderRadius: BorderRadius.circular(24.h),
|
|
boxShadow: [
|
|
BoxShadow(
|
|
color: appTheme.black900.withOpacity(0.5),
|
|
spreadRadius: 2.h,
|
|
blurRadius: 2.h,
|
|
offset: const Offset(
|
|
4,
|
|
38,
|
|
),
|
|
)
|
|
],
|
|
gradient: LinearGradient(
|
|
begin: const Alignment(0.32, 0),
|
|
end: const Alignment(0.75, 0),
|
|
colors: [
|
|
theme.colorScheme.onErrorContainer.withOpacity(0.7),
|
|
theme.colorScheme.onErrorContainer.withOpacity(0.7)
|
|
],
|
|
),
|
|
);
|
|
|
|
static BoxDecoration get gradientGrayBToOnErrorContainerDecoration =>
|
|
BoxDecoration(
|
|
borderRadius: BorderRadius.circular(24.h),
|
|
boxShadow: [
|
|
BoxShadow(
|
|
color: appTheme.black900.withOpacity(0.5),
|
|
spreadRadius: 2.h,
|
|
blurRadius: 2.h,
|
|
offset: const Offset(
|
|
4,
|
|
38,
|
|
),
|
|
)
|
|
],
|
|
color: Colors.black,
|
|
gradient: LinearGradient(
|
|
begin: const Alignment(0.32, 0),
|
|
end: const Alignment(0.75, 0),
|
|
colors: [
|
|
appTheme.black900,
|
|
theme.colorScheme.onErrorContainer.withOpacity(1)
|
|
],
|
|
),
|
|
);
|
|
|
|
static BoxDecoration get gradientWhiteAToWhiteADecoration => BoxDecoration(
|
|
borderRadius: BorderRadius.circular(17.h),
|
|
gradient: LinearGradient(
|
|
begin: const Alignment(0.32, 0),
|
|
end: const Alignment(0.75, 0),
|
|
colors: [
|
|
appTheme.whiteA700.withOpacity(0.7),
|
|
appTheme.whiteA700.withOpacity(0.7)
|
|
],
|
|
),
|
|
);
|
|
// Outline button style
|
|
static ButtonStyle get outlineBlack => ElevatedButton.styleFrom(
|
|
backgroundColor: appTheme.blueA100,
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.circular(8.h),
|
|
),
|
|
shadowColor: appTheme.black900.withOpacity(0.4),
|
|
elevation: 2,
|
|
);
|
|
// text button style
|
|
static ButtonStyle get none => ButtonStyle(
|
|
backgroundColor: WidgetStateProperty.all<Color>(Colors.transparent),
|
|
elevation: WidgetStateProperty.all<double>(0),
|
|
);
|
|
|
|
// Filled button style
|
|
static ButtonStyle get fillBlueA => ElevatedButton.styleFrom(
|
|
backgroundColor: appTheme.blueA20001,
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.circular(21.h),
|
|
),
|
|
);
|
|
static ButtonStyle get fillPrimary => ElevatedButton.styleFrom(
|
|
backgroundColor: theme.colorScheme.primary,
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.circular(20.h),
|
|
),
|
|
);
|
|
static ButtonStyle get fillPrimaryTL16 => ElevatedButton.styleFrom(
|
|
backgroundColor: theme.colorScheme.primary,
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.circular(16.h),
|
|
),
|
|
);
|
|
static ButtonStyle get fillWhiteA => ElevatedButton.styleFrom(
|
|
backgroundColor: appTheme.whiteA700,
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.circular(20.h),
|
|
),
|
|
);
|
|
// Gradient button style
|
|
static BoxDecoration get gradientGrayBToWhiteADecoration => BoxDecoration(
|
|
borderRadius: BorderRadius.circular(24.h),
|
|
boxShadow: [
|
|
BoxShadow(
|
|
color: theme.colorScheme.primary.withOpacity(0.5),
|
|
spreadRadius: 2.h,
|
|
blurRadius: 2.h,
|
|
offset: const Offset(
|
|
4,
|
|
38,
|
|
),
|
|
)
|
|
],
|
|
gradient: LinearGradient(
|
|
begin: const Alignment(0.32, 0),
|
|
end: const Alignment(0.75, 0),
|
|
colors: [appTheme.gray100B2, appTheme.whiteA700.withOpacity(0.7)],
|
|
),
|
|
);
|
|
|
|
static BoxDecoration get gradientWhiteAToWhiteATL25Decoration =>
|
|
BoxDecoration(
|
|
borderRadius: BorderRadius.circular(25.h),
|
|
gradient: LinearGradient(
|
|
begin: const Alignment(0.32, 0),
|
|
end: const Alignment(0.75, 0),
|
|
colors: [
|
|
appTheme.whiteA700.withOpacity(0.7),
|
|
appTheme.whiteA700.withOpacity(0.7)
|
|
],
|
|
),
|
|
);
|
|
}
|