import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:supplements/screens/home_screen.dart'; import '../providers/settings_provider.dart'; // Profile setup screen class ProfileSetupScreen extends StatefulWidget { const ProfileSetupScreen({super.key}); @override State createState() => _ProfileSetupScreenState(); } class _ProfileSetupScreenState extends State { final _formKey = GlobalKey(); DateTime? _dateOfBirth; String? _gender; final List _genders = ['Male', 'Female', 'Other', 'Prefer not to say']; @override void initState() { super.initState(); final settingsProvider = Provider.of(context, listen: false); _dateOfBirth = settingsProvider.dateOfBirth; _gender = settingsProvider.gender; } void _saveProfile() { if (_formKey.currentState!.validate()) { _formKey.currentState!.save(); Provider.of(context, listen: false).setDateOfBirthAndGender(_dateOfBirth!, _gender!); Navigator.of(context).pushReplacement(MaterialPageRoute(builder: (context) => HomeScreen())); } } Future _selectDate(BuildContext context) async { final DateTime? picked = await showDatePicker( context: context, initialDate: _dateOfBirth ?? DateTime.now(), firstDate: DateTime(1900), lastDate: DateTime.now(), ); if (picked != null && picked != _dateOfBirth) { setState(() { _dateOfBirth = picked; }); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Set Up Your Profile'), ), body: Padding( padding: const EdgeInsets.all(16.0), child: Form( key: _formKey, child: Column( children: [ Text( 'To provide you with personalized ingredient insights, please provide your date of birth and gender.', style: Theme.of(context).textTheme.titleMedium, textAlign: TextAlign.center, ), const SizedBox(height: 24), TextFormField( decoration: const InputDecoration( labelText: 'Date of Birth', border: OutlineInputBorder(), suffixIcon: Icon(Icons.calendar_today), ), readOnly: true, controller: TextEditingController( text: _dateOfBirth == null ? '' : '${_dateOfBirth!.toLocal()}'.split(' ')[0], ), onTap: () => _selectDate(context), validator: (value) { if (_dateOfBirth == null) { return 'Please select your date of birth'; } return null; }, ), const SizedBox(height: 16), DropdownButtonFormField( decoration: const InputDecoration( labelText: 'Gender', border: OutlineInputBorder(), ), value: _gender, items: _genders.map((String gender) { return DropdownMenuItem( value: gender, child: Text(gender), ); }).toList(), onChanged: (value) { setState(() { _gender = value; }); }, validator: (value) { if (value == null || value.isEmpty) { return 'Please select your gender'; } return null; }, onSaved: (value) { _gender = value; }, ), const SizedBox(height: 24), ElevatedButton( onPressed: _saveProfile, child: const Text('Save and Continue'), ), ], ), ), ), ); } }