import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'dart:convert'; import 'package:image_picker/image_picker.dart'; class UserFormScreen extends StatefulWidget { @override _UserFormScreenState createState() => _UserFormScreenState(); } class _UserFormScreenState extends State { final _formKey = GlobalKey(); String _username = '', _email = '', _location = ''; String? _profileImage; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('User Details')), body: Padding( padding: EdgeInsets.all(16), child: Form( key: _formKey, child: Column( children: [ GestureDetector( onTap: () async { final picked = await ImagePicker().pickImage(source: ImageSource.gallery); if (picked != null) { final bytes = await picked.readAsBytes(); String base64Image = base64Encode(bytes); setState(() { _profileImage = base64Image; }); } }, child: CircleAvatar( radius: 50, backgroundColor: Colors.grey[300], backgroundImage: _profileImage != null ? MemoryImage(base64Decode(_profileImage!)) : null, child: _profileImage == null ? Icon(Icons.person, size: 50, color: Colors.white) : null, ), ), SizedBox(height: 16), TextFormField( decoration: InputDecoration(labelText: 'Username'), validator: (value) => value!.isEmpty ? 'Please enter a username' : null, onSaved: (value) => _username = value!, ), TextFormField( decoration: InputDecoration(labelText: 'Email'), validator: (value) => value!.isEmpty ? 'Please enter an email' : null, onSaved: (value) => _email = value!, ), TextFormField( decoration: InputDecoration(labelText: 'Location'), validator: (value) => value!.isEmpty ? 'Please enter a location' : null, onSaved: (value) => _location = value!, ), SizedBox(height: 20), ElevatedButton( child: Text('Submit'), onPressed: () async { if (_formKey.currentState!.validate()) { _formKey.currentState!.save(); final prefs = await SharedPreferences.getInstance(); await prefs.setString('username', _username); await prefs.setString('email', _email); await prefs.setString('location', _location); if (_profileImage != null) { await prefs.setString('profileImage', _profileImage!); } Navigator.pushReplacementNamed(context, '/home'); } }, ), ], ), ), ), ); } }