Untitled
unknown
plain_text
8 months ago
6.7 kB
5
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