import 'dart:io'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import '../config/constants/app_constant.dart'; import 'DottedBorderContainer.dart'; class DocumentSectionWidget extends StatelessWidget { final String label; final File? localImage; final String? imageUrl; final VoidCallback onTap; const DocumentSectionWidget({ Key? key, required this.label, this.localImage, this.imageUrl, required this.onTap, }) : super(key: key); @override Widget build(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( label, style: const TextStyle( color: Color(0xFFAAAAAA), fontSize: 13, fontFamily: 'Inter', fontWeight: FontWeight.w500, letterSpacing: -0.08, ), ), const SizedBox(height: 10), GestureDetector( onTap: onTap, child: DottedBorderContainer( child: Container( width: double.infinity, height: 90, decoration: BoxDecoration( color: const Color(0xFFFAFAFA), borderRadius: BorderRadius.circular(10), ), child: localImage != null ? ClipRRect( borderRadius: BorderRadius.circular(10), child: Image.file( localImage!, fit: BoxFit.cover, ), ) : (imageUrl != null && imageUrl!.isNotEmpty ? ClipRRect( borderRadius: BorderRadius.circular(10), child: CachedNetworkImage( imageUrl: '$mediaUrl$imageUrl', fit: BoxFit.cover, placeholder: (context, url) => const Center( child: CircularProgressIndicator( strokeWidth: 2, color: Color(0xFFAAAAAA), ), ), errorWidget: (context, url, error) => Center( child: Image.asset( 'assets/images/icon_button.png', width: 100, height: 100, ), ), ), ) : Center( child: Image.asset( 'assets/images/icon_button.png', width: 100, height: 100, ), )), ), ), ), ], ); } }