Flutter: URL-адрес обновления webview_flutter в том же виджете веб-просмотра - PullRequest
2 голосов
/ 19 марта 2019

Эй, я пытаюсь создать экран, который показывает веб-просмотр с bottomappbar.Таким образом, вы загружаете веб-просмотр, и когда вы нажимаете на элемент в bottomappbar, другой веб-сайт должен загружаться в том же веб-представлении ...

Я не могу понять, как открыть другой веб-сайт, кроме того, который я первоначально проанализировал.Я попытался обновить URL с помощью «setState», но он только обновляет заголовок панели приложения, а веб-просмотр по-прежнему показывает оригинальный веб-сайт

Вот мой текущий код:

class _WebviewContainer extends State<WebviewContainer> {
var url;
final key = UniqueKey();

_WebviewContainer(this.url); 

@override
Widget build(BuildContext context) {    
return Scaffold(
  appBar: AppBar(
    title: Text(url),
    actions: <Widget>[
      IconButton(
        icon: Icon(
          Icons.home,
          size: 40.0,
          color: Colors.white,
        ),
        onPressed: () => {
          //-> Here I set the new url but the webview always shows the origin website

          setState(() {
            url = 'https://stackoverflow.com/';
          })
        },
      )
    ],
  ),
  body: Column(
    children: <Widget>[
      Expanded(
        child: WebView(
          key: key,
          javascriptMode: JavascriptMode.unrestricted,
          initialUrl: url,              
        ),
      ),          
    ],
  ),
);
}
}

Я взялкод из учебника на YouTube и создатель также заявили, что веб-просмотр будет перезагружаться, если состояние URL изменяется, но, к сожалению, он не показал, как это сделать

Если кто-нибудь может мне помочь?

Заранее спасибо, Дуби

1 Ответ

2 голосов
/ 31 мая 2019

Итак, у меня была похожая ситуация, за исключением того, что я хотел, чтобы новый URL-адрес загружался в мое веб-представление, когда я выбирал элемент из выпадающего меню.Как я это сделал, создал экземпляр WebViewController

WebViewController controller;

Затем установите этот контроллер при создании веб-просмотра с параметром onWebViewCreated

child: WebView(
      key: _key,
      javascriptMode: JavascriptMode.unrestricted,
      initialUrl: url,
    onWebViewCreated: (WebViewController webViewController) {
    controller = webViewController;}

Теперь у вас есть установленный контроллер, вы можетеиспользуйте метод loadUrl в setState (), чтобы изменить отображаемый URL

setState(() {                
            controller.loadUrl(newUrl_here);

Я только начал с Flutter, так что может быть лучше, но это сработало для меня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...