// lib/app/widgets/banner_slider.dart import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:carousel_slider/carousel_slider.dart'; class BannerSlider extends StatelessWidget { final List bannerImages; final RxInt currentCarouselIndex; final Function(int) onPageChanged; const BannerSlider({ super.key, required this.bannerImages, required this.currentCarouselIndex, required this.onPageChanged, }); @override Widget build(BuildContext context) { return Column( children: [ CarouselSlider( options: CarouselOptions( height: 180, autoPlay: true, autoPlayInterval: const Duration(seconds: 5), enlargeCenterPage: true, viewportFraction: 0.9, onPageChanged: (index, reason) { onPageChanged(index); }, ), items: bannerImages.map((imagePath) { return Builder( builder: (BuildContext context) { return Container( width: MediaQuery.of(context).size.width, margin: const EdgeInsets.symmetric(horizontal: 5.0), decoration: BoxDecoration( borderRadius: BorderRadius.circular(15), ), child: ClipRRect( borderRadius: BorderRadius.circular(15), child: Image.asset( imagePath, fit: BoxFit.cover, errorBuilder: (context, error, stackTrace) { return Container( decoration: BoxDecoration( gradient: const LinearGradient( colors: [Color(0xFF00B8D4), Color(0xFF0091EA)], ), borderRadius: BorderRadius.circular(15), ), child: const Center( child: Icon( Icons.image_not_supported, color: Colors.white, size: 50, ), ), ); }, ), ), ); }, ); }).toList(), ), const SizedBox(height: 10), // Dots Indicator Obx( () => Row( mainAxisAlignment: MainAxisAlignment.center, children: List.generate( bannerImages.length, (index) => Container( width: 8, height: 8, margin: const EdgeInsets.symmetric(horizontal: 4), decoration: BoxDecoration( shape: BoxShape.circle, color: currentCarouselIndex.value == index ? const Color(0xFF0091EA) : Colors.grey[300], ), ), ), ), ), ], ); } }