I bring up the favorite status from api, and it appears that it is saved in favorites, but only when I restart the application it just does not save the favorite status.
**
this when i click the button**:enter image description hereز.
when i make run app
enter image description here.
this debuging enter image description here
the ui code :
`
class CustomListItems extends GetView<ItemsControllerImp> {
final ItemsModel itemsModel;
// final bool active;
const CustomListItems({Key? key, required this.itemsModel}) : super(key: key);
@override
Widget build(BuildContext context) {
return InkWell(
onTap: () {
controller.goToPageProductDetails(itemsModel);
},
child: Card(
child: Padding(
padding: const EdgeInsets.all(10),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Hero(
tag: "${itemsModel.itemsId}",
child: CachedNetworkImage(
imageUrl:
AppLink.imagestItems + "/" + itemsModel.itemsImage!,
height: 100,
fit: BoxFit.fill,
),
),
const SizedBox(height: 10),
Text(
translateDatabase(
itemsModel.itemsNameAr, itemsModel.itemsName),
style: const TextStyle(
color: AppColor.black,
fontSize: 16,
fontWeight: FontWeight.bold)),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
const Text("Rating 3.5 ", textAlign: TextAlign.center),
Container(
alignment: Alignment.bottomCenter,
height: 22,
child: Row(
children: [
...List.generate(
5,
(index) => const Icon(
Icons.star,
size: 15,
))
],
),
)
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text("${itemsModel.itemsPrice} $",
style: const TextStyle(
color: AppColor.primaryColor,
fontSize: 16,
fontWeight: FontWeight.bold,
fontFamily: "sans")),
GetBuilder<FavoriteController>(
builder: (controller) => IconButton(
onPressed: () {
if (controller.isFavorite[itemsModel.itemsId] ==
"1") {
controller.setFavorite(
itemsModel.itemsId, "0");
controller
.removeFavorite(itemsModel.itemsId!);
} else {
controller.setFavorite(
itemsModel.itemsId, "1");
controller.addFavorite(itemsModel.itemsId!);
}
},
icon: Icon(
controller.isFavorite[itemsModel.itemsId] == "1"
? Icons.favorite
: Icons.favorite_border_outlined,
color: AppColor.primaryColor,
)))
],
)
]),
),
));
}
}
`
favorite controller:
class FavoriteController extends GetxController {
FavoriteData favoriteData = FavoriteData(Get.find());
List data = [];
late StatusRequest statusRequest;
MyServices myServices = Get.find();
Map isFavorite = {};
// key => id items
// Value => 1 OR 0
setFavorite(id, val) {
isFavorite[id] = val;
update();
}
addFavorite(String itemsid) async {
data.clear();
statusRequest = StatusRequest.loading;
var response = await favoriteData.addFavorite(
myServices.sharedPreferences.getString("id")!, itemsid);
print("=============================== Controller $response ");
statusRequest = handlingData(response);
if (StatusRequest.success == statusRequest) {
// Start backend
if (response['status'] == "success") {
Get.rawSnackbar(
title: "اشعار",
messageText: const Text("تم اضافة المنتج من المفضلة "));
// data.addAll(response['data']);
} else {
statusRequest = StatusRequest.failure;
}
// End
}
}
removeFavorite(String itemsid) async {
data.clear();
statusRequest = StatusRequest.loading;
var response = await favoriteData.removeFavorite(
myServices.sharedPreferences.getString("id")!, itemsid);
print("=============================== Controller $response ");
statusRequest = handlingData(response);
if (StatusRequest.success == statusRequest) {
// Start backend
if (response['status'] == "success") {
Get.rawSnackbar(
title: "اشعار",
messageText: const Text("تم حذف المنتج من المفضلة "));
// data.addAll(response['data']);
} else {
statusRequest = StatusRequest.failure;
}
// End
}
}
}
the api It returns 1, meaning that it was stored in the data base and there is no problem with the back and forth