Update: 2026-07-11 19:38:43
This commit is contained in:
@@ -150,8 +150,9 @@ class CarDetailsTypeToChoose extends StatelessWidget {
|
||||
|
||||
// ── Car Selection List ───────────────────────────────
|
||||
SizedBox(
|
||||
height: 96,
|
||||
height: 136,
|
||||
child: ListView.builder(
|
||||
clipBehavior: Clip.none,
|
||||
physics: const BouncingScrollPhysics(),
|
||||
scrollDirection: Axis.horizontal,
|
||||
padding: const EdgeInsets.fromLTRB(16, 2, 16, 2),
|
||||
@@ -161,7 +162,7 @@ class CarDetailsTypeToChoose extends StatelessWidget {
|
||||
final isSelected = controller.selectedIndex == index;
|
||||
return Padding(
|
||||
padding: EdgeInsetsDirectional.only(
|
||||
end: index < carTypes.length - 1 ? 8 : 0),
|
||||
end: index < carTypes.length - 1 ? 12 : 0),
|
||||
child: _buildCarCard(
|
||||
context, controller, carType, isSelected, index),
|
||||
);
|
||||
@@ -793,20 +794,10 @@ class _CarTypeCard extends StatelessWidget {
|
||||
onTap: onTap,
|
||||
child: AnimatedContainer(
|
||||
duration: AppDurations.base,
|
||||
curve: Curves.easeOutCubic,
|
||||
width: 88,
|
||||
curve: Curves.easeOutBack,
|
||||
width: 116,
|
||||
decoration: BoxDecoration(
|
||||
gradient: isSelected
|
||||
? LinearGradient(
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
colors: [
|
||||
AppColor.primaryColor.withAlpha(22),
|
||||
AppColor.primaryColor.withAlpha(10),
|
||||
],
|
||||
)
|
||||
: null,
|
||||
color: isSelected ? null : AppColor.secondaryColor,
|
||||
color: isSelected ? AppColor.primaryColor : AppColor.secondaryColor,
|
||||
borderRadius: AppRadii.all(AppRadii.lg),
|
||||
border: Border.all(
|
||||
color: isSelected
|
||||
@@ -815,61 +806,76 @@ class _CarTypeCard extends StatelessWidget {
|
||||
width: isSelected ? 2 : 1.2,
|
||||
),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: isSelected
|
||||
? AppColor.primaryColor.withAlpha(50)
|
||||
: Colors.black.withAlpha(12),
|
||||
blurRadius: isSelected ? 10 : 4,
|
||||
offset: const Offset(0, 2),
|
||||
),
|
||||
if (isSelected)
|
||||
BoxShadow(
|
||||
color: AppColor.primaryColor.withAlpha(100),
|
||||
blurRadius: 16,
|
||||
offset: const Offset(0, 6),
|
||||
)
|
||||
else
|
||||
BoxShadow(
|
||||
color: Colors.black.withAlpha(12),
|
||||
blurRadius: 4,
|
||||
offset: const Offset(0, 2),
|
||||
),
|
||||
],
|
||||
),
|
||||
child: Stack(
|
||||
clipBehavior: Clip.none,
|
||||
children: [
|
||||
// Selected indicator
|
||||
if (isSelected)
|
||||
Positioned(
|
||||
top: 3,
|
||||
right: 3,
|
||||
top: 4,
|
||||
right: 4,
|
||||
child: Container(
|
||||
width: 18,
|
||||
height: 18,
|
||||
width: 20,
|
||||
height: 20,
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
colors: [
|
||||
AppColor.primaryColor,
|
||||
AppColor.primaryColor.withAlpha(200),
|
||||
],
|
||||
),
|
||||
color: Colors.white,
|
||||
shape: BoxShape.circle,
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: AppColor.primaryColor.withAlpha(60),
|
||||
color: Colors.black.withAlpha(30),
|
||||
blurRadius: 4,
|
||||
offset: const Offset(0, 2),
|
||||
),
|
||||
],
|
||||
),
|
||||
child: const Icon(Icons.check, size: 11, color: Colors.white),
|
||||
child:
|
||||
Icon(Icons.check, size: 14, color: AppColor.primaryColor),
|
||||
),
|
||||
),
|
||||
|
||||
// Card content
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(6),
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
// Car image
|
||||
AnimatedScale(
|
||||
scale: isSelected ? 1.1 : 1.0,
|
||||
duration: AppDurations.base,
|
||||
child: Image.asset(
|
||||
carType.image,
|
||||
height: 34,
|
||||
fit: BoxFit.contain,
|
||||
// Car image on soft disc
|
||||
Container(
|
||||
width: 52,
|
||||
height: 52,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: isSelected
|
||||
? Colors.white.withAlpha(30)
|
||||
: AppColor.primaryColor.withAlpha(15),
|
||||
),
|
||||
alignment: Alignment.center,
|
||||
child: AnimatedScale(
|
||||
scale: isSelected ? 1.15 : 1.0,
|
||||
duration: AppDurations.base,
|
||||
curve: Curves.easeOutBack,
|
||||
child: Image.asset(
|
||||
carType.image,
|
||||
height: 42,
|
||||
fit: BoxFit.contain,
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 1),
|
||||
const SizedBox(height: 6),
|
||||
|
||||
// Car name
|
||||
FittedBox(
|
||||
@@ -879,26 +885,24 @@ class _CarTypeCard extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontWeight:
|
||||
isSelected ? FontWeight.w800 : FontWeight.w600,
|
||||
fontSize: 11,
|
||||
color: isSelected
|
||||
? AppColor.primaryColor
|
||||
: AppColor.writeColor,
|
||||
fontSize: 13,
|
||||
color: isSelected ? Colors.white : AppColor.writeColor,
|
||||
),
|
||||
maxLines: 1,
|
||||
),
|
||||
),
|
||||
|
||||
const SizedBox(height: 1),
|
||||
const SizedBox(height: 4),
|
||||
|
||||
// Price tag
|
||||
Container(
|
||||
padding:
|
||||
const EdgeInsets.symmetric(horizontal: 6, vertical: 1),
|
||||
const EdgeInsets.symmetric(horizontal: 10, vertical: 3),
|
||||
decoration: BoxDecoration(
|
||||
color: isSelected
|
||||
? AppColor.primaryColor
|
||||
? Colors.white
|
||||
: AppColor.writeColor.withOpacity(0.05),
|
||||
borderRadius: AppRadii.all(AppRadii.sm),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
border: isSelected
|
||||
? null
|
||||
: Border.all(
|
||||
@@ -908,11 +912,11 @@ class _CarTypeCard extends StatelessWidget {
|
||||
child: Text(
|
||||
priceText,
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
fontWeight: FontWeight.w800,
|
||||
fontSize: 15,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: isSelected
|
||||
? Colors.white
|
||||
: AppColor.writeColor.withOpacity(0.8),
|
||||
? AppColor.primaryColor
|
||||
: AppColor.writeColor.withOpacity(0.9),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user