// import 'package:flutter/material.dart'; // import 'package:flutter_contacts/flutter_contacts.dart'; // import 'package:nearledaily/constants/color_constants.dart'; // import 'package:permission_handler/permission_handler.dart' // as permission_handler; // import 'package:url_launcher/url_launcher.dart'; // import 'package:flutter/services.dart'; // // import '../../constants/font_constants.dart'; // import '../../widgets/text_widget.dart'; // // class ShowContactsScreen extends StatefulWidget { // const ShowContactsScreen({super.key}); // // @override // State createState() => _ShowContactsScreenState(); // } // // class _ShowContactsScreenState extends State // with WidgetsBindingObserver { // List _contacts = []; // bool _loading = false; // bool _permissionDenied = false; // // /// 🔹 ADDED // bool _showDisclaimer = true; // // @override // void initState() { // super.initState(); // WidgetsBinding.instance.addObserver(this); // _loadContacts(); // } // // @override // void dispose() { // WidgetsBinding.instance.removeObserver(this); // super.dispose(); // } // // Future _loadContacts() async { // setState(() { // _loading = true; // _permissionDenied = false; // }); // // final bool granted = await FlutterContacts.requestPermission(); // // if (!granted) { // setState(() { // _loading = false; // _permissionDenied = true; // }); // return; // } // // try { // final List contacts = await FlutterContacts.getContacts( // withProperties: true, // withPhoto: true, // ); // // setState(() { // _contacts = contacts // .where((c) => c.phones.isNotEmpty) // .toList() // ..sort((a, b) => a.displayName.compareTo(b.displayName)); // _loading = false; // }); // } catch (e) { // setState(() { // _loading = false; // }); // ScaffoldMessenger.of(context).showSnackBar( // SnackBar( // content: ReusableTextWidget( // text: "Error loading contacts: $e", // fontSize: 14, // fontWeight: FontWeight.w400, // fontFamily: FontConstants.fontFamily, // color: Colors.white, // ), // ), // ); // } // } // // Widget _buildAvatar(Contact contact) { // if (contact.photo != null && contact.photo!.isNotEmpty) { // return CircleAvatar( // backgroundImage: MemoryImage(contact.photo!), // ); // } else { // String initials = ""; // final names = contact.displayName.split(" "); // if (names.isNotEmpty) initials += names[0][0]; // if (names.length > 1) initials += names[1][0]; // return CircleAvatar( // backgroundColor: Colors.primaries[ // contact.displayName.hashCode % Colors.primaries.length], // child: ReusableTextWidget( // text: initials.toUpperCase(), // fontSize: 16, // fontWeight: FontWeight.bold, // fontFamily: FontConstants.fontFamily, // color: Colors.white, // ), // ); // } // } // // Future _openWhatsApp(Contact contact) async { // if (contact.phones.isEmpty) return; // // String phoneNumber = // contact.phones.first.number.replaceAll(RegExp(r'\D'), ''); // final Uri url = Uri.parse("https://wa.me/$phoneNumber"); // // if (await canLaunchUrl(url)) { // await launchUrl(url, mode: LaunchMode.externalApplication); // } else { // ScaffoldMessenger.of(context).showSnackBar( // const SnackBar( // content: ReusableTextWidget( // text: "Could not open WhatsApp", // fontSize: 14, // fontWeight: FontWeight.w400, // fontFamily: FontConstants.fontFamily, // color: Colors.white, // ), // ), // ); // } // } // // Future _inviteWhatsApp(Contact contact) async { // if (contact.phones.isEmpty) return; // // String phoneNumber = // contact.phones.first.number.replaceAll(RegExp(r'\D'), ''); // // final String message = Uri.encodeComponent( // "Hey! Join me on Nearle Daily 🚀"); // // final Uri url = Uri.parse("https://wa.me/$phoneNumber?text=$message"); // // if (await canLaunchUrl(url)) { // await launchUrl(url, mode: LaunchMode.externalApplication); // } else { // ScaffoldMessenger.of(context).showSnackBar( // const SnackBar( // content: ReusableTextWidget( // text: "Could not open WhatsApp", // fontSize: 14, // fontWeight: FontWeight.w400, // fontFamily: FontConstants.fontFamily, // color: Colors.white, // ), // ), // ); // } // } // // @override // Widget build(BuildContext context) { // return AnnotatedRegion( // value: const SystemUiOverlayStyle( // statusBarColor: Colors.white, // White background // statusBarIconBrightness: Brightness.dark, // Dark icons // statusBarBrightness: Brightness.light, // iOS // ), // child: Scaffold( // backgroundColor: Colors.white, // appBar: AppBar( // backgroundColor: Colors.white, // surfaceTintColor: Colors.transparent, // scrolledUnderElevation: 0, // titleSpacing: -5, // animateColor: false, // elevation: 0, // title: ReusableTextWidget( // text: "Refer a friend", // fontSize: 20, // fontWeight: FontWeight.w600, // fontFamily: FontConstants.fontFamily, // color: Colors.black, // ), // iconTheme: const IconThemeData(color: Colors.black), // ), // body: Padding( // padding: const EdgeInsets.only(left: 12.0, right: 12, bottom: 12), // child: Column( // children: [ // /// 🔹 MODIFIED DISCLAIMER ONLY // if (_showDisclaimer) // Stack( // children: [ // Padding( // padding: const EdgeInsets.only(top: 12.0), // child: Container( // width: double.infinity, // padding: const EdgeInsets.all(14), // margin: const EdgeInsets.only(bottom: 16), // decoration: BoxDecoration( // color: ColorConstants.primaryColor.withOpacity(0.08), // borderRadius: BorderRadius.circular(12), // ), // child: const ReusableTextWidget( // text: // "We access contacts only to let you share\nor recommend to friends. Nothing is stored.", // fontSize: 13, // fontWeight: FontWeight.w500, // fontFamily: FontConstants.fontFamily, // color: Colors.black87, // ), // ), // ), // Positioned( // top: 6, // right: -3, // child: IconButton( // icon: const Icon(Icons.close, size: 18), // onPressed: () { // setState(() { // _showDisclaimer = false; // }); // }, // ), // ), // ], // ), // // if (_loading) // const Expanded( // child: Center(child: CircularProgressIndicator()), // ), // // if (_permissionDenied) // Expanded( // child: Center( // child: Container( // margin: const EdgeInsets.symmetric(horizontal: 24), // padding: const EdgeInsets.all(24), // decoration: BoxDecoration( // color: Colors.red.withOpacity(0.05), // borderRadius: BorderRadius.circular(20), // border: Border.all( // color: Colors.red.withOpacity(0.2), // ), // ), // child: Column( // mainAxisSize: MainAxisSize.min, // children: [ // Container( // padding: const EdgeInsets.all(18), // decoration: BoxDecoration( // color: Colors.red.withOpacity(0.12), // shape: BoxShape.circle, // ), // child: const Icon( // Icons.info_outline, // color: Colors.red, // size: 48, // ), // ), // const SizedBox(height: 20), // const ReusableTextWidget( // text: "Contacts Access Needed", // fontSize: 18, // fontWeight: FontWeight.w600, // fontFamily: FontConstants.fontFamily, // color: Colors.black, // ), // const SizedBox(height: 8), // const ReusableTextWidget( // text: // "Allow contacts permission to view\nand invite your friends easily.", // fontSize: 14, // fontWeight: FontWeight.w400, // fontFamily: FontConstants.fontFamily, // color: Colors.black54, // textAlign: TextAlign.center, // ), // const SizedBox(height: 24), // SizedBox( // width: double.infinity, // child: ElevatedButton( // onPressed: permission_handler.openAppSettings, // style: ElevatedButton.styleFrom( // backgroundColor: Colors.red, // elevation: 0, // padding: const EdgeInsets.symmetric(vertical: 14), // shape: RoundedRectangleBorder( // borderRadius: BorderRadius.circular(12), // ), // ), // child: const ReusableTextWidget( // text: "Open Settings", // fontSize: 15, // fontWeight: FontWeight.w600, // fontFamily: FontConstants.fontFamily, // color: Colors.white, // ), // ), // ), // ], // ), // ), // ), // ), // // if (_contacts.isNotEmpty && !_loading && !_permissionDenied) // Expanded( // child: RefreshIndicator( // onRefresh: _loadContacts, // child: ListView.builder( // itemCount: _contacts.length, // itemBuilder: (context, index) { // final contact = _contacts[index]; // final phones = // contact.phones.map((p) => p.number).toList(); // final subtitle = phones.length > 1 // ? phones.sublist(0, 2).join(", ") // : phones.first; // // return ListTile( // leading: _buildAvatar(contact), // title: ReusableTextWidget( // text: contact.displayName.isEmpty // ? "No Name" // : contact.displayName, // fontSize: 14, // fontWeight: FontWeight.w600, // fontFamily: FontConstants.fontFamily, // color: Colors.black, // ), // subtitle: ReusableTextWidget( // text: subtitle, // fontSize: 13, // fontWeight: FontWeight.w400, // fontFamily: FontConstants.fontFamily, // color: Colors.grey, // ), // trailing: TextButton( // onPressed: () => _inviteWhatsApp(contact), // child: const ReusableTextWidget( // text: "Invite", // fontSize: 14, // fontWeight: FontWeight.bold, // fontFamily: FontConstants.fontFamily, // color: Colors.green, // ), // ), // onTap: () => _openWhatsApp(contact), // ); // }, // ), // ), // ), // // if (_contacts.isEmpty && !_loading && !_permissionDenied) // const Expanded( // child: Center( // child: ReusableTextWidget( // text: "No contacts found with phone numbers", // fontSize: 16, // fontWeight: FontWeight.w400, // fontFamily: FontConstants.fontFamily, // color: Colors.grey, // ), // ), // ), // ], // ), // ), // ), // ); // } // }