2026-05-12 16:31:00 +07:00

106 lines
3.1 KiB
Dart

import 'package:flutter/material.dart';
import '../../../../common/theme/theme.dart';
import '../../../components/spacer/spacer.dart';
import '../../../components/widgets/particle_card.dart';
class HomePromoBanner extends StatelessWidget {
const HomePromoBanner({super.key});
static const _outlets = [
{'name': 'ENAKLO RAWAMANGUNG', 'isHealthy': true},
{'name': 'ENAKLO WOKU PEDAS\nKELAPA GADING', 'isHealthy': true},
];
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.fromLTRB(
AppValue.padding,
24,
AppValue.padding,
0,
),
child: Row(
children: [
for (int i = 0; i < _outlets.length; i++) ...[
Expanded(
child: ParticleCard(
height: 110,
padding: const EdgeInsets.symmetric(
horizontal: 12,
vertical: 12,
),
decorationOpacity: 0.8,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
Spacer(),
_buildHealthIndicator(_outlets[i]['isHealthy'] as bool),
],
),
const SpaceHeight(6),
Text(
_outlets[i]['name'] as String,
style: AppStyle.sm.copyWith(
color: AppColor.white,
fontWeight: FontWeight.w800,
height: 1.25,
),
maxLines: 3,
overflow: TextOverflow.ellipsis,
),
],
),
),
),
if (i < _outlets.length - 1) const SpaceWidth(12),
],
],
),
);
}
Widget _buildHealthIndicator(bool isHealthy) {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3),
decoration: BoxDecoration(
color: isHealthy
? AppColor.success.withOpacity(0.9)
: AppColor.error.withOpacity(0.9),
borderRadius: BorderRadius.circular(12),
boxShadow: [
BoxShadow(
color: (isHealthy ? AppColor.success : AppColor.error)
.withOpacity(0.3),
blurRadius: 4,
offset: const Offset(0, 2),
),
],
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(
isHealthy ? Icons.check_circle : Icons.warning_rounded,
color: AppColor.white,
size: 12,
),
const SpaceWidth(4),
Text(
isHealthy ? 'Sehat' : 'Tidak Sehat',
style: AppStyle.xs.copyWith(
color: AppColor.white,
fontWeight: FontWeight.w700,
fontSize: 9,
),
),
],
),
);
}
}