Я совершенно новичок в разработке для Android. Недавно меня попросили изучить кое-что о загрузке веб-просмотра для нашего приложения, которое написано flutter и использовало flutter_webview_plugin.
После того, как я установил версию flutter_webview_plugin, я обнаружил некоторые изменения.
Иесть код в flutter_webview_plugin
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Map<String, Object> data = new HashMap<>();
data.put("url", url);
data.put("type", "startLoad");
FlutterWebviewPlugin.channel.invokeMethod("onState", data);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Map<String, Object> data = new HashMap<>();
data.put("url", url);
FlutterWebviewPlugin.channel.invokeMethod("onUrlChanged", data);
data.put("type", "finishLoad");
FlutterWebviewPlugin.channel.invokeMethod("onState", data);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
// returning true causes the current WebView to abort loading the URL,
// while returning false causes the WebView to continue loading the URL as usual.
String url = request.getUrl().toString();
boolean isInvalid = checkInvalidUrl(url);
Map<String, Object> data = new HashMap<>();
data.put("url", url);
data.put("type", isInvalid ? "abortLoad" : "shouldStart");
FlutterWebviewPlugin.channel.invokeMethod("onState", data);
return isInvalid;
}
Я пытался искать везде, используя shouldOverrideUrlLoading, onPageStarted,onPageFinished
, но не могу найти, где они вызваны. Я думаю, что они должны использоваться как:
BrowserClient webViewClient;
webviewClient.shouldOverrideUrlLoading()
или
webViewClient.invokeMethod('shouldOverrideUrlLoading',arg)
что-то вроде выше. Но я ничего не могу найти.