Flutter webivewplugin如何设置本地存储

Flutter webivewplugin how to set local storage

我的 Flutter 应用程序流程是这样的:

用户登录 1-如果登录成功,服务器returns一个token 2-在 webview 中将令牌设置为本地存储 3-将 Webview 全屏打开到特定 URL 我正在使用这个 Webview 插件。示例代码显示它支持本地存储(它有一个 withLocalStorage 选项)但没有显示如何使用它。

我知道这个question1 question2

如果我正确设置本地存储,Webview 会显示帐户页面;否则登录页面( 那不是发生了什么) Instade 收到此错误

I/chromium(13409): [INFO:CONSOLE(1)] "Uncaught SyntaxError: Invalid or unexpected token", source: (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()}");
}); 
  }

来自 https://github.com/fluttercommunity/flutter_webview_plugin/pull/51#issuecomment-399468804
您可以等到第一个页面加载完成,然后访问 LocalStorageevalJavascript
为此,您可以使用 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();"
      );
    }
  }
});