Плагин 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

Другие вопросы по тегам