import 'package:flutter/material.dart'; import 'package:hoshan/data/model/banner_model.dart'; import 'package:hoshan/ui/widgets/components/image/network_image.dart'; class CustomeBanner extends StatefulWidget { final BannerModel bannerModel; final double width; final double height; const CustomeBanner( this.bannerModel, { super.key, required this.width, required this.height, }); @override State createState() => _CustomeBannerState(); } class _CustomeBannerState extends State { @override Widget build(BuildContext context) { return ClipRRect( borderRadius: BorderRadius.circular(16), child: SizedBox( width: widget.width, height: widget.height, child: Stack( children: [ Row( children: [ const Expanded(child: SizedBox.shrink()), Expanded( flex: 2, child: ImageNetwork( height: widget.height, url: widget.bannerModel.imageUrl, error: AspectRatio( aspectRatio: 1 / 1, child: Container( decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ ...widget.bannerModel.colors, ])), ), ), placeholder: AspectRatio( aspectRatio: 1 / 1, child: Container( decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ ...widget.bannerModel.colors, ])), ), ), )), ], ), Positioned.fill( child: Container( decoration: BoxDecoration( gradient: LinearGradient(colors: [ Colors.transparent, ...widget.bannerModel.colors ], begin: Alignment.bottomRight, end: Alignment.topLeft)), ), ), Positioned.fill(child: widget.bannerModel.child), ], ), ), ); } }