Adding items to cart

This commit is contained in:
2024-05-02 17:02:43 +03:00
parent 727c04d368
commit ff29598ec5
8 changed files with 354 additions and 43 deletions

42
lib/tools/prefs.dart Normal file
View File

@@ -0,0 +1,42 @@
import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';
Future<void> addItemToCart(String id) async {
final prefs = await SharedPreferences.getInstance();
String cartString = prefs.getString('cart') ?? "[]";
List<Map<String, dynamic>> cart =
List<Map<String, dynamic>>.from(jsonDecode(cartString) as List<dynamic>);
final index = cart.indexWhere((element) => element['id'] == id);
if (index == -1) {
cart.add({'id': id, 'count': 1});
} else {
cart[index]['count'] = cart[index]['count']! + 1;
}
prefs.setString('cart', jsonEncode(cart));
}
Future<List<Map<String, dynamic>>> getCart() async {
final prefs = await SharedPreferences.getInstance();
String cartString = prefs.getString('cart') ?? "[]";
List<Map<String, dynamic>> cart =
List<Map<String, dynamic>>.from(jsonDecode(cartString) as List<dynamic>);
return cart;
}
Future<void> removeItemFromCart(String id) async {
final prefs = await SharedPreferences.getInstance();
String cartString = prefs.getString('cart') ?? "[]";
List<Map<String, dynamic>> cart =
List<Map<String, dynamic>>.from(jsonDecode(cartString) as List<dynamic>);
cart.removeWhere((element) => element['id'] == id && element['count'] == 1);
for (final item in cart) {
if (item['id'] == id) {
item['count'] = item['count']! - 1;
if (item['count'] == 0) {
cart.remove(item);
}
}
}
prefs.setString('cart', jsonEncode(cart));
}