Dart: html < /h4>
dart: html. Вместо этого используйте DART: JS_INTEROP и
падж :ВЕБ.И.[code]import 'package:universal_html/html.dart' as html;
class CookieManager {
static void addToCookie(String key, dynamic value) {
// 2592000 sec = 30 days.
// 1296000 sec = 15 days.
int sevenDays = 604800; // 7 days.
//int oneDay = 86400; // 1 day.
html.document.cookie = "$key=$value; max-age=$sevenDays; path=/;";
}
static bool? getCookieBool(String key) {
String? cookieValue = getCookie(key); // Get the cookie value as a string
if (cookieValue == null) {
return null; // Handle the case where the cookie is not set
}
// Convert the string to a boolean (case-insensitive)
if (cookieValue.toLowerCase() == 'true') {
return true;
} else if (cookieValue.toLowerCase() == 'false') {
return false;
} else {
return null; // Or handle invalid cookie values as you see fit.
}
}
static dynamic getCookie(String key) {
dynamic cookies = html.document.cookie;
if (cookies == null || cookies.isEmpty) {
return null;
}
List cookieList = cookies.split(';');
for (dynamic cookie in cookieList) {
List parts = cookie.trim().split('=');
if (parts.length == 2 && parts[0] == key) {
return parts[1];
}
}
return null;
}
static void removeCookie(String key) {
html.document.cookie = '$key=; Max-Age=0; path=/';
}
static bool isCookiePresent(String key) {
String? cookieValue = getCookie(key); // Get the cookie value as a string
if (cookieValue == null) {
return false; // Cookie is not present
} else {
return true; // Cookie is present
}
}
}
[/code]
Мне нужно использовать html.document.cookie для обработки файлов cookie по какой -то причине, например, хранение идентификатора пользователя или другой информации, которая не является конфиденциальной данных для хранения в файлах cookie.
Инструменты разработчика. ( ctrl + shift + i )> приложение> cookie
К сожалению, он не работает в производстве, хотя API успешно обработал запрос на веб -приложение (то есть через инструменты разработчика ( Ctrl + Shift + I )> сеть> [my_api_request_instance] hiepers>: )> [my_api_request_instance]: ) alt = "success_api_request" src = "https://i.sstatic.net/ji1ypgfd.png"/> Данные ответа API должны быть переданы в cookiemanager.addtocookie (ключ, значение) . Однако, когда я просмотрел файлы cookie в инструментах разработчика ( ctrl + shift + i )> Приложение> Куки, я ничего не вижу. Эта проблема является потомком проблемы, о которой я ранее спрашивал и решал в этой теме (к сожалению, теперь у него есть 1 голос, чтобы закрыть тему вопроса). < /P>
Вот мои основные вопросы: < /p>
Как решить эту проблему? /> Есть ли другой способ обработки файлов cookie с использованием Import 'dart: js_interop' или другой связанной библиотеки? /> < /ul>
Вот следующие соответствующие фрагменты кода (я использую flutter_riverpod: ^2.6.1): < /p>
my-уведомление < /h4>
Код: Выделить всё
class SignInNotifier
extends StateNotifier {
SignInNotifier() : super(const AsyncValue.loading());
Future signIn(
{String? adminID, String? password, bool isGoogleAccount = false}) async {
try {
final response = await _dioHelper.usernamePassSignIn(
adminID: adminID, password: password, isGoogleAccount: isGoogleAccount);
if (response != null && response.runtimeType == List) {
final List responseListData = response
.map((json) => json as Map)
.toList() as List;
final AdminData jsonListData = responseListData
.map((data) => AdminData.fromJson(data as Map))
.first;
if (!mounted) {
return;
}
state = AsyncValue.data(jsonListData);
} else {
if (!mounted) {
return;
}
state = AsyncValue.data(AdminData());
}
} catch (e, stackTrace) {
if (!mounted) {
return;
}
state = AsyncValue.error(e, stackTrace);
}
}
}
< /code>
мой поставщик < /h4>
final signInProvider =
StateNotifierProvider(
(ref) {
return SignInNotifier();
});
< /code>
моя функция, в которой я сталкиваюсь с проблемой < /h4>
Future _signIn(
SharedPrefs fsharedPrefs, String adminID, String password) async {
await ref
.read(signInProvider.notifier)
.signIn(
adminID: adminID,
password: password,
);
final result = ref.read(signInProvider);
if (result is AsyncData && result.value?.adminID != null && mounted) {
if (mounted) {
_dialogUncommon.showAutoDismissDialog(context, 'Login successfully!',
CupertinoIcons.check_mark_circled, Colors.greenAccent);
}
CookieManager.addToCookie(
'admin_id', adminID);
CookieManager.addToCookie(
'full_name', fullName);
CookieManager.addToCookie(
'admin_role', adminRole);
Future.delayed(const Duration(milliseconds: 1000), () {
if (mounted) {
context.go('/home');
}
});
} else {
if (mounted) {
_dialogUncommon.showAutoDismissDialogLonger(
context,
'User credential cannot be found!',
null,
null,
);
}
}
}
< /code>
Несмотря на то, что API имеет статус 200 с ожидаемыми данными ответа пользователя администратора JSON, я всегда оказываюсь в этом разделе: < /p>
_dialogUncommon.showAutoDismissDialogLonger(
context,
'User credential cannot be found!',
null,
null,
);
Подробнее здесь: https://stackoverflow.com/questions/796 ... debug-mode
Мобильная версия