Сохранение флаттера Карта к общим настройкам - PullRequest
0 голосов
/ 30 апреля 2020

Это мой код для хранения CartItems.

Я хочу сохранить его в общих настройках как cartItems, так как при refre sh данные теряются. Также я хочу, чтобы в CartItem была функция для проверки того, находится ли Продукт в корзине или нет, чтобы я мог сделать его отмеченным или не отмеченным.

class CartItem {
  final String id;
  final String prodID;
  final String title;
  final String img;
  final double quantity;
  final double price;
  final double availQuantity;

  CartItem({
    @required this.id,
    @required this.prodID,
    @required this.title,
    @required this.quantity,
    @required this.price,
    @required this.img,
    this.availQuantity,
  });

}

class Cart with ChangeNotifier {
  Map<String, CartItem> _items = {};
  Map<String, CartItem> get items {
    return {..._items};
  }

  int get itemCount {
    return _items.length;
  }
  void addItem(String productId, double price, String title, String img,
      double availQuantity) {
    if (_items.containsKey(productId)) {
      _items.update(
        productId,
        (existingCartItem) => CartItem(
          id: existingCartItem.id,
          title: existingCartItem.title,
          img: existingCartItem.img,
          price: existingCartItem.price,
          quantity: existingCartItem.quantity + 1,
          availQuantity: existingCartItem.availQuantity,
        ),
      );
    } else {
      _items.putIfAbsent(
        productId,
        () => CartItem(
          id: productId,
          title: title,
          img: img,
          price: price,
          quantity: 1,
          availQuantity: availQuantity,
        ),
      );
    }

    notifyListeners();
  }

}

Я пробовал много способов преобразовать в строку и вызвать setString (), преобразовать в список тоже. но не мог сделать sh. Требуется помощь.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Вы можете сохранить его, если преобразуете карту в строку следующим образом:

import 'dart:convert';
...
String mapToStr = json.encode(map);

Если вы хотите получить строку из общих настроек и снова использовать ее в качестве карты, декодируйте ее из строки для сопоставления снова следующим образом:

Map<String, Object> strToMap = json.decode(mapToStr);
0 голосов
/ 30 апреля 2020

можно увидеть вашу функцию сохранения в sharedPreference, у вас есть попытка конвертировать Cart в Map<String, dynamic> и сохранить. Я думаю, что вы пытаетесь сохранить свой класс корзины, но это не разрешено, вы можете сохранить только int, string, List, Map ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...