Список ошибок <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
теперь он работает.