import 'package:wanisclient/config/custom_text.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:provider/provider.dart'; import '../config/constants/arabe.dart' as Language; import '../models/userAddress_model.dart'; import '../providers/language_provider.dart'; import '../providers/myAddress_provider.dart'; import '../widgets/address_widget.dart'; class AddressList extends StatefulWidget { const AddressList({Key? key, required this.onAddressTap}) : super(key: key); final ValueChanged onAddressTap; @override State createState() => _AddressListState(); } class _AddressListState extends State { @override void initState() { super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) { // if (context.read().addresses.isEmpty && // context.read().addressesHome.isEmpty && // context.read().addressesWork.isEmpty) { // { context.read().fetchAddressesHomeWork(); // } // } }); } Future _refreshAddresses() async { await context.read().fetchAddressesHomeWork(); } @override Widget build(BuildContext context) { final languageProvider = Get.context!.read(); final isArabic = languageProvider.currentLangCode == Language.ar; return Consumer(builder: (_, addrProv, __) { if (addrProv.isLoading) { return const Padding( padding: EdgeInsets.all(20), child: Center(child: CircularProgressIndicator()), ); } // if (addrProv.addressesHome.isEmpty && // addrProv.addressesWork.isEmpty && // addrProv.addresses.isEmpty) { // return Padding( // padding: const EdgeInsets.all(20), // child: Center( // child: SvgPicture.asset( // "assets/icons/NoLocationFound.svg", // width: 200, // height: 200, // ), // ), // ); // } return RefreshIndicator( onRefresh: _refreshAddresses, child: Column( children: [ // Home address addrProv.addressesHome.isNotEmpty ? Column( children: [ InkWell( onTap: () => widget.onAddressTap(addrProv.addressesHome[0]), child: addressCard( false, addrProv.addressesHome[0].name, addrProv.addressesHome[0].position, addrProv.addressesHome[0].id, addrProv.addressesHome[0].tag, addrProv, ), ), Padding( padding: const EdgeInsets.symmetric(horizontal: 25), child: Divider( color: Colors.grey.shade300, thickness: 0.3, ), ), ], ) : const SizedBox(), // Work address addrProv.addressesWork.isNotEmpty ? Column( children: [ InkWell( onTap: () => widget.onAddressTap(addrProv.addressesWork[0]), child: addressCard( false, addrProv.addressesWork[0].name, addrProv.addressesWork[0].position, addrProv.addressesWork[0].id, addrProv.addressesWork[0].tag, addrProv, ), ), Padding( padding: const EdgeInsets.symmetric(horizontal: 25), child: Divider( color: Colors.grey.shade300, thickness: 0.3, ), ), ], ) : const SizedBox(), // Other addresses addrProv.addresses.isNotEmpty ? Column( children: [ Align( // 1. Wrap the Txt widget with an Align widget alignment: isArabic ? Alignment.centerRight : Alignment.centerLeft, // Align LEFT for other languages child: Padding( padding: const EdgeInsets.symmetric( horizontal: 25.0, vertical: 10), // Optional: add some padding child: Container( width: double.infinity, child: const Txt( text: 'Recent searches', overflow: TextOverflow.ellipsis, maxLines: 2, style: TextStyle( fontSize: 20, fontWeight: FontWeight.w500), ), ), ), ), ListView.builder( // <-- The SizedBox is removed shrinkWrap: true, // <-- This is the key change for auto height padding: EdgeInsets.zero, physics: const NeverScrollableScrollPhysics(), // Keep this itemCount: addrProv.addresses.length > 3 ? 3 : addrProv.addresses.length, itemBuilder: (_, idx) { final address = addrProv.addresses[idx]; return InkWell( onTap: () => widget.onAddressTap(address), child: Column( children: [ addressCard( false, address.name, address.position, address.id, address.tag, addrProv, ), Padding( padding: const EdgeInsets.symmetric( horizontal: 25), child: Divider( color: Colors.grey.shade300, thickness: 0.3, ), ), ], ), ); }, ), ], ) : const SizedBox(), ], ), ); }); } }