diff --git a/main.js b/main.js index a420803..0fce00a 100644 --- a/main.js +++ b/main.js @@ -1 +1,136 @@ -console.log('Hello World!'); +// main.dart +import 'package:flutter/material.dart'; + +void main() => runApp(RechargeApp()); + +class RechargeApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'Mobile Recharge', + theme: ThemeData(primarySwatch: Colors.blue), + home: RechargeScreen(), + ); + } +} + +class RechargeScreen extends StatefulWidget { + @override + _RechargeScreenState createState() => _RechargeScreenState(); +} + +class _RechargeScreenState extends State { + String _selectedOperator = 'Airtel'; + String _selectedPlan = '299'; + String _mobileNumber = ''; + final _formKey = GlobalKey(); + + List operators = ['Airtel', 'Jio', 'Vodafone', 'Idea']; + Map> plans = { + 'Airtel': ['299', '399', '499', '799'], + 'Jio': ['299', '399', '555', '799'], + 'Vodafone': ['249', '399', '499', '749'], + 'Idea': ['199', '299', '399', '699'], + }; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text('Mobile Recharge')), + body: Padding( + padding: EdgeInsets.all(16.0), + child: Form( + key: _formKey, + child: Column( + children: [ + DropdownButtonFormField( + value: _selectedOperator, + items: operators.map((operator) { + return DropdownMenuItem( + value: operator, + child: Text(operator), + ); + }).toList(), + onChanged: (value) { + setState(() { + _selectedOperator = value!; + _selectedPlan = plans[value]!.first; + }); + }, + decoration: InputDecoration(labelText: 'Select Operator'), + ), + SizedBox(height: 20), + TextFormField( + keyboardType: TextInputType.phone, + decoration: InputDecoration( + labelText: 'Mobile Number', + hintText: 'Enter 10-digit mobile number', + ), + validator: (value) { + if (value == null || value.isEmpty) { + return 'Please enter mobile number'; + } + if (value.length != 10) { + return 'Please enter valid 10-digit number'; + } + return null; + }, + onChanged: (value) { + _mobileNumber = value; + }, + ), + SizedBox(height: 20), + DropdownButtonFormField( + value: _selectedPlan, + items: plans[_selectedOperator]!.map((plan) { + return DropdownMenuItem( + value: plan, + child: Text('₹$plan'), + ); + }).toList(), + onChanged: (value) { + setState(() { + _selectedPlan = value!; + }); + }, + decoration: InputDecoration(labelText: 'Select Plan'), + ), + SizedBox(height: 30), + ElevatedButton( + onPressed: () { + if (_formKey.currentState!.validate()) { + // Process recharge + _processRecharge(); + } + }, + child: Text('Recharge Now'), + style: ElevatedButton.styleFrom( + padding: EdgeInsets.symmetric(horizontal: 40, vertical: 15), + ), + ), + ], + ), + ), + ), + ); + } + + void _processRecharge() async { + // Here you would typically call your backend API + // For now, just show a confirmation dialog + showDialog( + context: context, + builder: (context) => AlertDialog( + title: Text('Recharge Successful'), + content: Text( + '₹$_selectedPlan recharge for $_mobileNumber ($_selectedOperator) was successful!'), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: Text('OK'), + ), + ], + ), + ); + } + }