Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'dart:async';
- import 'dart:convert';
- import 'package:e_commerce_bloc/bloc/icons_bloc.dart';
- import 'package:rxdart/rxdart.dart';
- import 'package:e_commerce_bloc/models/product.dart';
- import 'package:shared_preferences/shared_preferences.dart';
- class FavoritesBloc {
- Map<String, Product> _favorites = {};
- IconsBloc _iconsBloc;
- final _favoritesController = BehaviorSubject<Map<String, Product>>.seeded({});
- Stream<Map<String, Product>> get outFav => _favoritesController.stream;
- FavoritesBloc(){
- _iconsBloc = IconsBloc();
- SharedPreferences.getInstance().then((prefs){
- if(prefs.getKeys().contains('favorites')){
- _favorites = json.decode(prefs.getString('favorites')).map((k, v){
- return MapEntry(k, Product.fromJson(v));
- }).cast<String, Product>();
- _favoritesController.add(_favorites);
- }
- });
- }
- void toggleFavorites(Product product){
- if(_favorites.containsKey(product.id)) {
- _favorites.remove(product.id);
- _favoritesController.add(_favorites);
- _iconsBloc.notifyFavoriteIcon(true);
- print(_favorites.length);
- } else {
- _favorites[product.id] = product;
- print(_favorites.length);
- }
- _favoritesController.sink.add(_favorites);
- _saveFav();
- }
- void removeFav(Product product){
- _favorites.remove(product.id);
- _favoritesController.add(_favorites);
- _iconsBloc.notifyFavoriteIcon(true);
- _saveFav();
- }
- void _saveFav(){
- SharedPreferences.getInstance().then((prefs){
- prefs.setString('favorites', json.encode(_favorites));
- });
- }
- void dispose(){
- _favoritesController.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement