selfprivacy.org.app/lib/ui/components/brand_cards/brand_cards.dart

115 lines
2.9 KiB
Dart
Raw Normal View History

2021-05-26 00:53:54 +03:00
import 'package:flutter/material.dart';
class BrandCards {
2022-06-05 22:36:32 +03:00
static Widget big({required final Widget child}) => _BrandCard(
2022-05-24 21:55:39 +03:00
padding: const EdgeInsets.symmetric(
2021-05-26 00:53:54 +03:00
horizontal: 20,
vertical: 15,
),
shadow: bigShadow,
borderRadius: BorderRadius.circular(20),
2022-05-24 21:55:39 +03:00
child: child,
2021-05-26 00:53:54 +03:00
);
2022-06-05 22:36:32 +03:00
static Widget small({required final Widget child}) => _BrandCard(
2022-05-24 21:55:39 +03:00
padding: const EdgeInsets.symmetric(
2021-05-26 00:53:54 +03:00
horizontal: 15,
vertical: 10,
),
shadow: bigShadow,
borderRadius: BorderRadius.circular(10),
2022-05-24 21:55:39 +03:00
child: child,
2021-05-26 00:53:54 +03:00
);
2022-06-05 22:36:32 +03:00
static Widget outlined({required final Widget child}) => _OutlinedCard(
child: child,
);
static Widget filled({
required final Widget child,
final bool tertiary = false,
final bool error = false,
}) =>
2022-05-31 02:06:08 +03:00
_FilledCard(
tertiary: tertiary,
error: error,
child: child,
);
2021-05-26 00:53:54 +03:00
}
class _BrandCard extends StatelessWidget {
const _BrandCard({
required this.child,
required this.padding,
required this.shadow,
required this.borderRadius,
2022-06-05 22:36:32 +03:00
});
2021-05-26 00:53:54 +03:00
final Widget child;
final EdgeInsets padding;
final List<BoxShadow> shadow;
final BorderRadius borderRadius;
@override
2022-06-05 22:36:32 +03:00
Widget build(final BuildContext context) => Container(
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surface,
borderRadius: borderRadius,
boxShadow: shadow,
),
padding: padding,
child: child,
);
2021-05-26 00:53:54 +03:00
}
class _OutlinedCard extends StatelessWidget {
const _OutlinedCard({
required this.child,
2022-06-05 22:36:32 +03:00
});
final Widget child;
@override
2022-06-05 22:36:32 +03:00
Widget build(final BuildContext context) => Card(
elevation: 0.0,
shape: RoundedRectangleBorder(
borderRadius: const BorderRadius.all(Radius.circular(12)),
side: BorderSide(
color: Theme.of(context).colorScheme.outline,
),
),
2022-06-05 22:36:32 +03:00
clipBehavior: Clip.antiAlias,
child: child,
);
}
class _FilledCard extends StatelessWidget {
2022-06-05 22:36:32 +03:00
const _FilledCard({
required this.child,
required this.tertiary,
required this.error,
2022-06-05 22:36:32 +03:00
});
final Widget child;
2022-05-31 02:06:08 +03:00
final bool tertiary;
final bool error;
@override
2022-06-05 22:36:32 +03:00
Widget build(final BuildContext context) => Card(
elevation: 0.0,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(12)),
),
clipBehavior: Clip.antiAlias,
2022-09-05 07:34:47 +03:00
color: error
? Theme.of(context).colorScheme.errorContainer
: tertiary
2022-09-05 07:34:47 +03:00
? Theme.of(context).colorScheme.tertiaryContainer
: Theme.of(context).colorScheme.surfaceVariant,
2022-06-05 22:36:32 +03:00
child: child,
);
}
2022-06-05 22:36:32 +03:00
final List<BoxShadow> bigShadow = [
2021-05-26 00:53:54 +03:00
BoxShadow(
2022-05-24 21:55:39 +03:00
offset: const Offset(0, 4),
2021-05-26 00:53:54 +03:00
blurRadius: 8,
color: Colors.black.withOpacity(.08),
)
];