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]
Мне нужно использовать 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 голос, чтобы закрыть тему вопроса).
Вот мои основные вопросы:
Как решить эту проблему? Ведите себя по-другому после того, как я развернул сгенерированный файл, используя Web Flutter Build на IIS Manager 8.5? PrettyPrint-Override ">
Код: Выделить всё
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.watch(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,
);
Кстати, _dialoguncommon.showautodismissdialoglonger является showgeneraldialog . С данным соответствующим исходным кодом, где часть кода, где я неожиданно внедрил ошибки?await ref
.read(signInProvider.notifier)
.signIn(
adminID: adminID,
password: password,
);
final result = ref.watch(signInProvider);
if (result is AsyncData && result.value?.adminID != null && mounted) {
// doesn't execute
}
< /code>
и, вероятно, о том, как он создается, что заставляет его не вести себя, как и ожидалось. Но, к сожалению, я понятия не имею, как это исправить.
Подробнее здесь: https://stackoverflow.com/questions/796 ... tenotifier