Плагин Flutter WebView вызывает сбой приложения при установке на iOS 14+
Когда я устанавливаю свое приложение на устройства iOS с iOS 14+, приложение вылетает в тот момент, когда пользователь переходит на страницу с веб-просмотром внутри.
Ошибка
Runner[654:91182] *** Завершение работы приложения из-за неперехваченного исключения 'NSInvalidArgumentException', причина: '-[NSTaggedPointerString count]: неопознанный селектор отправлен в экземпляр 0xb0f5a9dc7811cf31'
Я использую следующий код:
на главной странице, когда пользователь нажимает кнопку:
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SecondPage(url)),
);
Вторая страница имеет веб-просмотр:
class SecondPage extends StatefulWidget {
SecondPage(this.payload);
final String payload;
@override
State<StatefulWidget> createState() => SecondPageState();
}
class SecondPageState extends State<SecondPage> {
String _payload;
@override
void initState() {
super.initState();
_payload = widget.payload;
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: MyWebView(
title: "Narrative App",
selectedUrl: 'http://iot-center.de/user/adv/$_payload'),
),
);
}
}
и веб-просмотр:
class MyWebView extends StatefulWidget {
final String title;
final String selectedUrl;
MyWebView({
@required this.title,
@required this.selectedUrl,
});
@override
_MyWebViewState createState() => _MyWebViewState();
}
class _MyWebViewState extends State<MyWebView> {
WebViewController _controller;
final _key = UniqueKey();
bool _isLoadingPage;
@override
void initState() {
super.initState();
if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
_isLoadingPage = true;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.lightBlue,
title: Text(widget.title),
),
body: Stack(
children: <Widget>[
WebView(
key: _key,
initialUrl: widget.selectedUrl,
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController webViewController) {
this._controller = webViewController;
},
onPageFinished: (url) {
setState(() {
_isLoadingPage = false;
});
},
),
_isLoadingPage
? Container(
alignment: FractionalOffset.center,
child: CircularProgressIndicator(
backgroundColor: Colors.lightBlue,
),
)
: Container(),
],
),
floatingActionButton: favoriteButton(),
);
}
Widget favoriteButton() {
return FloatingActionButton(
child: Icon(Icons.share),
onPressed: () {
Share.share('Check out this ${widget.selectedUrl}',
subject: 'Look what I found!');
},
);
}
}
Каждое предложение будет высоко оценено.
1 ответ
Это ошибка Flutter, над этим работают разработчики flutter:https://github.com/flutter/flutter/issues/67213#issuecomment-705066599