Проблема с уничтожением веб-просмотра - флаттер - PullRequest
0 голосов
/ 05 апреля 2020

Я создал список веб-страниц для использования в просмотре страниц. Первый запуск работает хорошо. Ошибка возникает, если экран запускается во второй раз.

Я считаю, что решение состоит в том, чтобы уничтожить веб-просмотр в методе dispose (), но я не знаю, как это сделать.

  Future<Null> getDetails() async {
    var _sharedPreferences = await SharedPreferences.getInstance();
    _userId = _sharedPreferences.getInt('USERID') ?? 0;
    final String url =
        '$URL_SONGS/readSongs.php?song=${widget.songid}&order=${widget.orderid}&playlist=${widget.playlistid}&singer=${_userId}'; 

    final mapResponse = await http.get(url);
    final responseJson = json.decode(mapResponse.body);

    setState(() {
      for (var i = 0; i < _songDetails.length; i++) {
        _pagesContainer.add(_pages(i));
      }
    });
  }
  _pages(int index) {
    return SingleChildScrollView(
      controller: _scrollController,
      child: Container(
        height: MediaQuery.of(context).size.height * 2,
        width: MediaQuery.of(context).size.width,
        child: WebView(
          key: UniqueKey(),
          initialUrl: '${URL_VIEW_SONG}?id=${_songDetails[index].songId}',
          javascriptMode: JavascriptMode.unrestricted,
          onWebViewCreated: (WebViewController webViewController) {
            _webviewController.complete(webViewController);
          },

          // TODO(iskakaushik): Remove this when collection literals makes it to stable.
          // ignore: prefer_collection_literals
          javascriptChannels: <JavascriptChannel>[].toSet(),
          onPageStarted: (String url) {
            print('Page started loading: $url');
            print(
                '${_songDetails[index].songId} name: ${_songDetails[index].name} index: ${index}');
          },
          onPageFinished: (String url) {
            print('Page finished loading: $url');
            print(
                '${_songDetails[index].songId} name: ${_songDetails[index].name} index: ${index}');
          },
          gestureNavigationEnabled: true,
        ),
      ),
    );
  }

enter image description here

...