Выпуск использования Riverpod 2.6.1 с StateNotifierProvider и StateNotifierHtml

Программисты Html
Ответить Пред. темаСлед. тема
Anonymous
 Выпуск использования Riverpod 2.6.1 с StateNotifierProvider и StateNotifier

Сообщение Anonymous »

Я использую Flutter 3.29.0, и я использую этот пакет: Universal_html 2.2.4, потому что импорт 'dart: html'; < /code> устарел: < /p>

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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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