В настоящее время я использую пакет flutter_webview_plugin: ^ 0.3.10 + 1 для получения веб-просмотра из пледа. Моя проблема в том, что я пытаюсь настроить слушателя и получить изменения URL. Кажется, он не работает, так как слушатель не получает никаких новых изменений даже после прохождения всего процесса разработки в песочнице. Вот мой код
import 'package:flutter/material.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
import 'dart:async';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: PlaidWorkPls(),
);
}
}
String authority = 'cdn.plaid.com';
String unencodedPath = '/link/v2/stable/link.html';
Map<String, String> queryParameters = {
"key": "public key",
"product": "auth",
"apiVersion": "v2", // set this to "v1" if using the legacy Plaid API
"env": "sandbox",
"clientName": "Test App",
"selectAccount": "true",
};
class PlaidWorkPls extends StatefulWidget {
@override
_PlaidWorkPlsState createState() => _PlaidWorkPlsState();
}
class _PlaidWorkPlsState extends State<PlaidWorkPls> {
final flutterWebViewPlugin = FlutterWebviewPlugin();
Uri uri = Uri.https(authority, unencodedPath, queryParameters);
StreamSubscription<String> _onUrlChanged;
GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>();
StreamSubscription<WebViewStateChanged> _onStateChanged;
@override
void initState() {
super.initState();
flutterWebViewPlugin.close();
_onUrlChanged = flutterWebViewPlugin.onUrlChanged.listen((String url) {
if (mounted) {
print("Current URL: $url");
}
});
_onStateChanged = flutterWebViewPlugin.onStateChanged
.listen((WebViewStateChanged state) async {
if (mounted) {
print("current state");
print(state.url);
}
});
}
@override
void dispose() {
flutterWebViewPlugin.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return WebviewScaffold(
key: scaffoldKey,
url: uri.toString(),
);
}
}
В настоящее время я использую эмулятор Android для проверки этого процесса. Я не знаю, почему я не могу получить новый URL после ввода учетных данных в песочнице. Я могу дать любую другую информацию, если это необходимо.