我的颤振应用程序流程的工作方式如下:
用户登录1-如果登录成功,服务器返回一个令牌2集令牌到本地存储在webview 3-打开Webview全屏到一个特定的URL我正在使用这个Webview插件。示例代码显示它支持本地存储(它有一个withLocalStorage选项),但没有说明如何使用它。
如果我正确设置本地存储空间,Webview将显示帐户页面;否则登录页面(这不是发生的情况) Instade将得到此错误
I/ or (13409):INFO:控制台(1)“未登录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()}");
});
}发布于 2020-04-27 02:19:23
来自https://github.com/fluttercommunity/flutter_webview_plugin/pull/51#issuecomment-399468804
您可以等到第一个页面加载完成,然后使用evalJavascript访问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();"
);
}
}
});https://stackoverflow.com/questions/61448425
复制相似问题