import 'package:flutter/material.dart'; class AddTransactionScreen extends StatefulWidget { @override _AddTransactionScreenState createState() => _AddTransactionScreenState(); } class _AddTransactionScreenState extends State { final _formKey = GlobalKey(); String? transactionType; String? accountName; String? paymentMode; String? paymentStatus; TextEditingController amountController = TextEditingController(text: "₹500"); TextEditingController transactionIdController = TextEditingController(text: "₹500"); TextEditingController dateController = TextEditingController(); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( backgroundColor: Colors.white, elevation: 0, leading: Icon(Icons.arrow_back, color: Colors.black), title: Text( "Add Transaction", style: TextStyle(color: Colors.black, fontWeight: FontWeight.w600), ), actions: [ TextButton( onPressed: () {}, child: Text("HELP", style: TextStyle(color: Colors.purple)), ) ], ), body: Padding( padding: const EdgeInsets.all(16.0), child: Form( key: _formKey, child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ buildDropdown("Transaction Type *", ["Credit", "Debit"], transactionType, (val) { setState(() => transactionType = val); }), SizedBox(height: 16), buildDropdown("Account Name *", ["Name1", "Name2"], accountName, (val) { setState(() => accountName = val); }), SizedBox(height: 16), buildTextField("Amount (in ₹) *", amountController), SizedBox(height: 16), Row( children: [ Expanded( child: buildDropdown("Payment Mode *", ["Cash", "Card", "UPI"], paymentMode, (val) { setState(() => paymentMode = val); }), ), SizedBox(width: 12), Expanded( child: buildDatePicker(), ), ], ), SizedBox(height: 16), buildTextField("Transaction ID *", transactionIdController), SizedBox(height: 16), buildDropdown("Payment Status *", ["Pending", "Completed", "Failed"], paymentStatus, (val) { setState(() => paymentStatus = val); }), SizedBox(height: 24), SizedBox( width: double.infinity, child: ElevatedButton( style: ElevatedButton.styleFrom( backgroundColor: Color(0xFF8270DB), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), ), padding: EdgeInsets.symmetric(vertical: 14), ), onPressed: () { if (_formKey.currentState!.validate()) { // Handle save } }, child: Text("Save", style: TextStyle(color: Colors.white, fontSize: 16)), ), ) ], ), ), ), ), ); } Widget buildDropdown(String label, List items, String? value, Function(String?) onChanged) { return DropdownButtonFormField( decoration: InputDecoration( labelText: label, border: OutlineInputBorder(borderRadius: BorderRadius.circular(8)), contentPadding: EdgeInsets.symmetric(horizontal: 12, vertical: 12), ), value: value, items: items.map((e) => DropdownMenuItem(value: e, child: Text(e))).toList(), onChanged: onChanged, ); } Widget buildTextField(String label, TextEditingController controller) { return TextFormField( controller: controller, decoration: InputDecoration( labelText: label, border: OutlineInputBorder(borderRadius: BorderRadius.circular(8)), contentPadding: EdgeInsets.symmetric(horizontal: 12, vertical: 12), ), ); } Widget buildDatePicker() { return TextFormField( controller: dateController, readOnly: true, decoration: InputDecoration( labelText: "Date *", suffixIcon: Icon(Icons.calendar_today), border: OutlineInputBorder(borderRadius: BorderRadius.circular(8)), contentPadding: EdgeInsets.symmetric(horizontal: 12, vertical: 12), ), onTap: () async { DateTime? picked = await showDatePicker( context: context, initialDate: DateTime.now(), firstDate: DateTime(2000), lastDate: DateTime(2100), ); if (picked != null) { setState(() { dateController.text = "${picked.day}-${picked.month}-${picked.year}"; }); } }, ); } }