Untitled
unknown
plain_text
12 days ago
6.7 kB
2
Indexable
// Kirana Store App with UPI and COD (Hindi-English Bilingual) import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'dart:convert'; void main() { runApp(MyApp()); } class MyApp extends StatefulWidget { @override _MyAppState createState() => _MyAppState(); } class _MyAppState extends State<MyApp> { bool isHindi = false; List<Map<String, dynamic>> cart = []; void toggleLanguage() { setState(() { isHindi = !isHindi; }); } void addToCart(Map<String, dynamic> product) { setState(() { cart.add(product); }); } void removeFromCart(int index) { setState(() { cart.removeAt(index); }); } @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, title: 'Kirana Store', home: Scaffold( appBar: AppBar( title: Text(isHindi ? 'किराना स्टोर' : 'Kirana Store'), actions: [ IconButton( icon: Icon(Icons.language), onPressed: toggleLanguage, ), IconButton( icon: Icon(Icons.shopping_cart), onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (context) => CartScreen( cart: cart, isHindi: isHindi, removeFromCart: removeFromCart, ), ), ); }, ), ], ), body: ProductList( isHindi: isHindi, addToCart: addToCart, ), ), ); } } class ProductList extends StatelessWidget { final bool isHindi; final Function(Map<String, dynamic>) addToCart; ProductList({required this.isHindi, required this.addToCart}); final List<Map<String, dynamic>> products = [ {'name_en': 'Rice', 'name_hi': 'चावल', 'price': 60}, {'name_en': 'Wheat', 'name_hi': 'गेहूं', 'price': 40}, {'name_en': 'Soap', 'name_hi': 'साबुन', 'price': 25}, ]; @override Widget build(BuildContext context) { return ListView.builder( itemCount: products.length, itemBuilder: (context, index) { var product = products[index]; return ListTile( title: Text(isHindi ? product['name_hi'] : product['name_en']), subtitle: Text('${isHindi ? "मूल्य" : "Price"}: ₹${product['price']}'), trailing: ElevatedButton( child: Text(isHindi ? 'जोड़ें' : 'Add'), onPressed: () => addToCart(product), ), ); }, ); } } class CartScreen extends StatefulWidget { final List<Map<String, dynamic>> cart; final bool isHindi; final Function(int) removeFromCart; CartScreen({required this.cart, required this.isHindi, required this.removeFromCart}); @override _CartScreenState createState() => _CartScreenState(); } class _CartScreenState extends State<CartScreen> { String selectedPayment = 'COD'; Future<void> saveOrder(List<Map<String, dynamic>> cart) async { final prefs = await SharedPreferences.getInstance(); String encodedCart = jsonEncode(cart); await prefs.setString('last_order', encodedCart); } @override Widget build(BuildContext context) { double total = widget.cart.fold(0, (sum, item) => sum + item['price']); return Scaffold( appBar: AppBar( title: Text(widget.isHindi ? 'आपकी टोकरी' : 'Your Cart'), ), body: Column( children: [ Expanded( child: ListView.builder( itemCount: widget.cart.length, itemBuilder: (context, index) { var item = widget.cart[index]; return ListTile( title: Text(widget.isHindi ? item['name_hi'] : item['name_en']), subtitle: Text('${widget.isHindi ? "मूल्य" : "Price"}: ₹${item['price']}'), trailing: IconButton( icon: Icon(Icons.delete), onPressed: () => widget.removeFromCart(index), ), ); }, ), ), Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( '${widget.isHindi ? "कुल राशि" : "Total Amount"}: ₹$total', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold), ), SizedBox(height: 10), DropdownButton<String>( value: selectedPayment, items: [ DropdownMenuItem(child: Text(widget.isHindi ? 'यूपीआई' : 'UPI'), value: 'UPI'), DropdownMenuItem(child: Text(widget.isHindi ? 'कैश ऑन डिलीवरी' : 'Cash on Delivery'), value: 'COD'), ], onChanged: (value) { setState(() { selectedPayment = value!; }); }, ), SizedBox(height: 10), ElevatedButton( onPressed: () async { await saveOrder(widget.cart); String message = selectedPayment == 'COD' ? (widget.isHindi ? 'आपने COD चुना है। ऑर्डर सफल।' : 'You selected COD. Order successful.') : (widget.isHindi ? 'आपने यूपीआई चुना है। कृपया भुगतान पूरा करें।' : 'You selected UPI. Please complete the payment.'); showDialog( context: context, builder: (context) => AlertDialog( title: Text(widget.isHindi ? 'ऑर्डर विवरण' : 'Order Details'), content: Text(message), actions: [ TextButton( onPressed: () => Navigator.pop(context), child: Text('OK'), ), ], ), ); }, child: Text(widget.isHindi ? 'ऑर्डर करें' : 'Place Order'), ), ], ), ), ], ), ); } }
Editor is loading...
Leave a Comment