Как контролировать веб-просмотр с помощью MethodChannel во флаттере
Я интегрирую веб-просмотр во флаттер, есть два варианта: первый использует MethodChannel, а второй - виджет WebView, в моем веб-просмотре у меня есть степпер для навигации между маршрутами, когда я выполняю интеграцию во флаттере, я могу добиться этого навигация благодаря WebViewController и виджету WebView, но по причинам X мне нужно добиться того же, но с помощью MethodChannel. вопрос в том, есть ли способ это сделать? я хочу иметь контроль над веб-просмотром для кнопки "Назад".
Функция, запускающая веб-просмотр с помощью MethodChannel
static void openWebActivity(String url, String title, {String token}) async {
const platform = const MethodChannel("native_interaction");
try {
await platform.invokeMethod(
"startWebActivity", {"url": url, "title": title, "token": token});
} on PlatformException catch (e) {
print(e.message);
}
}
Webview с виджетом WebView
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class SiniestroWebView extends StatefulWidget {
final String uri;
SiniestroWebView(this.uri);
@override
_SiniestroWebViewState createState() => _SiniestroWebViewState();
}
WebViewController controllerGlobal;
class _SiniestroWebViewState extends State<SiniestroWebView> {
@override
Widget build(BuildContext context) {
return new WillPopScope(
onWillPop: _goBack,
child: new Scaffold(
body: new SafeArea(
child: new WebView(
initialUrl: widget.uri,
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController webViewController) {
controllerGlobal = webViewController;
},
),
),
),
);
}
Future<bool> _goBack() async {
var value = await controllerGlobal.canGoBack();
if (value) {
print("onwill goback");
controllerGlobal.goBack();
return Future.value(false);
} else {
return Future.value(true);
}
}
}