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
您可以等到第一个页面加载完成,然后访问 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();"
);
}
}
});
我的 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
您可以等到第一个页面加载完成,然后访问 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();"
);
}
}
});