import 'package:flutter/material.dart'; import 'package:glowwheels/helpers/shopid_helper.dart'; import 'package:provider/provider.dart'; import '../models/serviceboy_model.dart'; import '../provider/serviceboy_provider.dart'; import 'package:google_fonts/google_fonts.dart'; class EditServiceBoyScreen extends StatefulWidget { final ServiceBoy serviceBoy; EditServiceBoyScreen({required this.serviceBoy}); @override _EditServiceBoyScreenState createState() => _EditServiceBoyScreenState(); } class _EditServiceBoyScreenState extends State { final _formKey = GlobalKey(); late final TextEditingController nameController; late final TextEditingController phoneController; bool isLoading = false; @override void initState() { super.initState(); nameController = TextEditingController(text: widget.serviceBoy.name); phoneController = TextEditingController(text: widget.serviceBoy.phone); } @override void dispose() { nameController.dispose(); phoneController.dispose(); super.dispose(); } void _saveDetails(BuildContext context) async { final name = nameController.text.trim(); final phone = phoneController.text.trim(); // Validation: at least one field must be non-empty and different if (name.isEmpty && phone.isEmpty) { ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text('Please edit at least one field')), ); return; } final shopId = getShopId(context)!; setState(() => isLoading = true); await Provider.of(context, listen: false) .editServiceBoy(widget.serviceBoy.id, name, phone, shopId); setState(() => isLoading = false); Navigator.pop(context); // back to previous screen } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: const Color(0xFFF9FAF4), appBar: AppBar( backgroundColor: Colors.transparent, elevation: 0, leading: IconButton( icon: Icon(Icons.arrow_back_ios), onPressed: () => Navigator.pop(context), ), title: Text( 'Edit Service boy Details', style: GoogleFonts.nunito( fontSize: 18, color: Color.fromRGBO(26, 26, 26, 1), fontWeight: FontWeight.w500), ), ), body: Padding( padding: const EdgeInsets.all(16), child: Form( key: _formKey, child: Column( children: [ SizedBox(height: 30), TextFormField( controller: nameController, decoration: InputDecoration( hintText: 'Name', hintStyle: GoogleFonts.nunito( fontSize: 14, color: Color.fromRGBO(26, 26, 26, 1), fontWeight: FontWeight.w400), border: OutlineInputBorder(), contentPadding: EdgeInsets.symmetric(horizontal: 12, vertical: 14), ), ), SizedBox(height: 25), TextFormField( controller: phoneController, keyboardType: TextInputType.phone, decoration: InputDecoration( hintText: 'Mobile Number', hintStyle: GoogleFonts.nunito( fontSize: 14, color: Color.fromRGBO(26, 26, 26, 1), fontWeight: FontWeight.w400), border: OutlineInputBorder(), contentPadding: EdgeInsets.symmetric(horizontal: 12, vertical: 14), ), ), Spacer(), SizedBox( width: double.infinity, child: ElevatedButton( onPressed: isLoading ? null : () => _saveDetails(context), style: ElevatedButton.styleFrom( backgroundColor: const Color(0xFF000B8C), padding: const EdgeInsets.symmetric(vertical: 14), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(6), ), ), child: isLoading ? SizedBox( width: 24, height: 24, child: CircularProgressIndicator( color: Colors.white, strokeWidth: 2, ), ) : Text('Save', style: GoogleFonts.inter( fontSize: 18, color: Colors.white, fontWeight: FontWeight.w600)), ), ), ], ), ), ), ); } }