Список ошибок <String> не является подтипом типа <String>

// Я пробую этот код, но он не добавляет в базу данных

      void checkItemInCart(String shortInfoAsId, BuildContext context) {
  EcommerceApp.sharedPreferences
          .getString(EcommerceApp.userCartList)
          .contains(shortInfoAsId)
      ? Fluttertoast.showToast(msg: "Item already in Cart.")
      : addItemToCart(shortInfoAsId, context);
}

addItemToCart(String shortInfoAsId, BuildContext context) {
  List tempCartList =
      EcommerceApp.sharedPreferences.getStringList(EcommerceApp.userCartList);
  tempCartList.add(shortInfoAsId);

  EcommerceApp.firestore.collection(EcommerceApp.collectionUser)
      .document(EcommerceApp.sharedPreferences.getString(EcommerceApp.userUID))
      .updateData({
    EcommerceApp.userCartList: tempCartList,
  }).then((v){
    Fluttertoast.showToast(msg: "Item Added to Cart Successfully");

    EcommerceApp.sharedPreferences.setStringList(EcommerceApp.userCartList, 
tempCartList);

    Provider.of<CartItemCounter>(context, listen: false).displayResult();
  });
}

// выдает эти ошибки

При обработке жеста возникла следующая ошибка _TypeError: тип List не является подтипом типа String

Когда возникло исключение, это был стек: #0 SharedPreferences.getString (package:shared_preferences / shared_preferences.dart:98:35)# 1 checkItemInCart (package:e_shop / Store / storehome.dart: 331: 12)#2 sourceInfo. (пакет: e_shop / Store / storehome.dart:301:31)# 3 _InkResponseState._handleTap (package:flutter / src / material / ink_well.dart:993:19)#4 _InkResponseState.build. (пакет: flutter / src / material / ink_well.dart: 1111: 38) ... Обработчик: "onTap" Распознаватель: TapGestureRecognizer#47ccbdebugOwner: GestureDetector state: готов выиграть арену finalPosition: Offset(380.3, 334.6)finalLocalPosition: Offset(22.8, 31.6) кнопка: 1 отправлено нажатие

2 ответа

проблема в .getString(EcommerceApp.userCartList), вам нужно установить для него индекс, потому что EcommerceApp.userCartList возвращает список, используйте его примерно так

      .getString(EcommerceApp.userCartList[0])

спасибо всем за помощь. все, что мне нужно было сделать, это изменить getString на getStringList

теперь он работает.

Другие вопросы по тегам