Как показать закусочную только один разIOS

Программируем под IOS
Ответить
Anonymous
 Как показать закусочную только один раз

Сообщение Anonymous »

Я звоню в API, когда элемент добавляется в корзину, и если его успех, Snackbar покажет для успеха, но что, если пользователь добавит один после одного слишком большого количества продуктов, то All Snackbars покажут один за другим, поэтому я хочу Когда пользователь останавливается, тогда Snackbar должен показывать только один раз последнюю последнюю с MSG
MyCart API < /p>
Timer? debounceSnackBarTimer;

Future addToCart(Package package) async {
final prefs = await SharedPreferences.getInstance();
final accessToken = prefs.getString('accessToken');
final String apiUrl = await AppNetworkingUrls.addtoCart;

if (accessToken == null) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
'Please log in to add items to the cart',
style: GoogleFonts.poppins(),
),
),
);
return;
}

final url = Uri.parse(apiUrl);
final headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer $accessToken',
};

final body = jsonEncode({
'quantity': 1,
'productId': product.id,
'packageId': package.id,
});

debounceSnackBarTimer?.cancel();

debounceSnackBarTimer = Timer(Duration(milliseconds: 800), () async {
try {
final response = await http.post(
url,
headers: headers,
body: body,
);

if (response.statusCode == 200) {
final responseData = jsonDecode(response.body);
print(response.body);

ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
behavior: SnackBarBehavior.floating,
backgroundColor: AppColors.buttonColor,
duration: Duration(seconds: 2),
content: Text(
responseData['message'] ?? 'Item added to cart',
style: GoogleFonts.poppins(fontWeight: FontWeight.w500),
),
),
);

final cartProvider = Provider.of(context, listen: false);
await cartProvider.fetchCartItems();
} else {
final responseData = jsonDecode(response.body);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
behavior: SnackBarBehavior.floating,
backgroundColor: Colors.red,
duration: Duration(seconds: 2),
content: Text(
responseData['message'] ?? 'Failed to add item',
style: GoogleFonts.poppins(fontWeight: FontWeight.w500),
),
),
);
}
} catch (error) {
print('Error adding to cart: $error');
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
behavior: SnackBarBehavior.floating,
backgroundColor: Colors.red,
duration: Duration(seconds: 2),
content: Text(
'Something went wrong. Please try again.',
style: GoogleFonts.poppins(fontWeight: FontWeight.w500),
),
),
);
}
});
}
< /code>
Существуют продукты Diff, и у каждого продукта есть пакеты Diff, пользователь также добавит несколько продуктов, но я хочу показать последнее только один раз < /p>
У меня есть Также попробовал Debounce, но он не работает, как я хотел, пожалуйста, если кто -то может помочь мне в этом дебюре, работает только в том случае, если пользователь добавляет одинаковые продукты снова и снова и снова, то это работает, но я хочу, чтобы он работал во всех продуктах и ​​пакетах

Подробнее здесь: https://stackoverflow.com/questions/794 ... -only-once
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»