Flutter webivewplugin как настроить локальное хранилище - PullRequest
0 голосов
/ 27 апреля 2020

Поток приложения My Flutter работает следующим образом:

Вход пользователя в систему 1-При успешном входе в систему сервер возвращает токен 2-Установите токен в локальное хранилище в веб-просмотре 3-Откройте веб-просмотр в полноэкранном режиме по указанному URL-адресу c Я использую этот плагин Webview. Пример кода показывает, что он поддерживает локальное хранилище (у него есть опция withLocalStorage), но не показывает, как его использовать.

Мне известно об этом question1 question2

f Если я правильно настроил локальное хранилище, Webview отобразит страницу учетной записи; в противном случае страница входа (это не то, что случилось) Instade получает эту ошибку

I / chromium (13409): [INFO: CONSOLE (1)] "Uncaught SyntaxError: неверный или неожиданный токен", источник : (1)

Мой код:

    void webwiew(token) {
    flutterWebViewPlugin
        .launch(
      "URLExpml",
      withLocalStorage: true,
      withJavascript: true,
    )
        .whenComplete(() {
  final res = flutterWebViewPlugin.evalJavascript("(function() { try { window.localStorage.setItem('token', $token); } catch (err) { return err; } })();");

  print("Eval result webview : ${res.toString()}");
}); 
  }

1 Ответ

0 голосов
/ 27 апреля 2020

С https://github.com/fluttercommunity/flutter_webview_plugin/pull/51#issuecomment -399468804
Вы можете подождать, пока первая загрузка страницы будет завершена, и затем получить доступ к LocalStorage с помощью evalJavascript
. Для этого вы можете использовать onStateChanged.listen и проверьте state.type == WebViewState.finishLoad

StreamSubscription<WebViewStateChanged> _onStateChanged;
_onStateChanged = flutterWebviewPlugin.onStateChanged.listen((WebViewStateChanged state) {
  if (mounted) {
    if (state.type == WebViewState.finishLoad) {
      flutterWebviewPlugin.evalJavascript(
          "window.localStorage.setItem('LOCAL_STORAGE','SOMETOKEN');" +
              "document.getElementById('showLocalStorageBtn').click();"
      );
    }
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...