flutter - просмотр веб-страницы внутри контейнера - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь создать контейнер типа master-detail, начиная со столбца ListTiles в левой части экрана.Когда пользователь нажимает на элемент, предустановленный URL-адрес будет отображаться на остальной части экрана.При нажатии на другой элемент отображается другой заданный URL-адрес.

Я смотрел на пакеты Flutter WebView Plugin и webview_flutter , но либо я их недостаточно понимаю (вполне возможно!), Либо они могутпока не делаю все, что я хочу, чтобы они делали.

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

ps IЯ новичок во Flutter и также запутался в конструкции виджетов и управлении памятью.Если я пытаюсь использовать что-то вроде виджета WebView, я не знаю, просто ли я кодирую виджет WebView каждый раз, когда хочу открыть страницу, или я каким-то образом создаю один виджет WebView, добавляю controller икод .loadFromUrl() методы.

1 Ответ

1 голос
/ 23 сентября 2019

Вы можете создать строку с двумя детьми.Первыми детьми будет ListView, который будет состоять из ListTiles.Вторые дети будут WebView.Когда пользователь нажимает на плитку списка, загрузите URL с контроллером.Нет необходимости перестраивать WebView каждый раз в вашем случае

example

Пример с использованием webview_flutter:

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  WebViewController _controller;

  List pages = ["https://google.com", "https://apple.com"];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Row(
      children: <Widget>[
        Container(
          width: 300,
          child: ListView.builder(
            itemCount: pages.length,
            itemBuilder: (BuildContext context, int index) {
              return ListTile(
                title: Text(pages[index]),
                onTap: () {
                  if (_controller != null) {
                    _controller.loadUrl(pages[index]);
                  }
                },
              );
            },
          ),
        ),
        Expanded(
          child: WebView(
            onWebViewCreated: (WebViewController c) {
              _controller = c;
            },
            initialUrl: 'https://stackoverflow.com',
          ),
        ),
      ],
    ));
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...