WebView в SizedBox Flutter - PullRequest
0 голосов
/ 15 мая 2018

Я хотел бы добавить пользовательский веб-просмотр в sizeBox во флаттере ... Я пытался сделать это, но есть ошибка:

код:

@override
   Widget build(BuildContext context) {   
    SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);
    return new Scaffold(
      key: _scaffoldKey,
         floatingActionButton: new Row(
        mainAxisSize: MainAxisSize.min,
            children: <Widget>[
                new GestureDetector(
                  child: new Image.network("http://modernworfare.altervista.org/pause.png", width: 80.0,),
                  onTap: (){stop(); _showSnackBar();}, 
                ),
                new GestureDetector(
                  child: new Image.network("http://modernworfare.altervista.org/bg.png",width: 80.0,),
                  onTap: (){play(); _showSnackBar2();},
                ),
              ],
         ),
      backgroundColor: Colors.black,
      body: new ListView(
        children: <Widget>[
        new Column(
        children: <Widget>[
          new Image.network("https://scontent-mxp1-1.xx.fbcdn.net/v/t1.0-9/16864236_1836092593321492_1828236030296093399_n.jpg?_nc_cat=0&oh=817190c0ef6ac6e3076582905997f3e9&oe=5B81BFF9"),
          new Divider(),
          new Row(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: <Widget>[
              new Container(
              padding: new EdgeInsets.all(8.0),
              child: new Text("  WEBSITE  ", style: new TextStyle(color: Colors.white,)),
              decoration: new BoxDecoration(
                borderRadius: new BorderRadius.circular(10.0),
                border: new Border.all(
                  width: 4.0,
                  color: Colors.white,
                  ),
                ),
              ),
              new Container(
              padding: new EdgeInsets.all(8.0),
              child: new Text("  SOCIAL  ", style: new TextStyle(color: Colors.white,)),
              decoration: new BoxDecoration(
                borderRadius: new BorderRadius.circular(10.0),
                border: new Border.all(
                  width: 4.0,
                  color: Colors.white,
                  ),
                ),
              ),
              new Container(
              padding: new EdgeInsets.all(8.0),
              child: new Text("  SHOP  ", style: new TextStyle(color: Colors.white,)),
              decoration: new BoxDecoration(
               borderRadius: new BorderRadius.circular(10.0),
                border: new Border.all(
                  width: 4.0,
                  color: Colors.white,
                  ),
                ),
              ),
              new Container(
              padding: new EdgeInsets.all(8.0),
              child: new Text("  CONTACT  ", style: new TextStyle(color: Colors.white,)),
              decoration: new BoxDecoration(
               borderRadius: new BorderRadius.circular(10.0),
                border: new Border.all(
                  width: 4.0,
                  color: Colors.white,
                  ),
                ),
              )],
          ),
          new Text("hi",style: new TextStyle(color: Colors.white), ), 
          new SizedBox(
            height: 50.0,
            width: 600.0,
            child: webview.launch("url",
            )
          ),  
          ],
        )],
      ),
    );
  }

ошибка:

Тип аргумента «Будущее» не может быть назначен типу параметра «Виджет».

какие-либо предложения или идеи? можно это сделать? может быть добавление будущего строителя или что-то в этом роде? прощай

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Встроенный WebView (виджет WebView в дереве виджетов) пока не поддерживается. Насколько я вижу в репозитории Flutter, в ближайшее время нет простого решения. Если вы просто хотите отобразить форматированный текст или HTML-документ, есть официальный виджет с именем RichText или несколько пакетов , выпущенных в формате HTML.

0 голосов
/ 15 мая 2018

Какой плагин для веб-просмотра вы используете?Предполагая, flutter_webview_plugin, обратите внимание, что предостережение The webview is not integrated in the widget tree, it is a native view on top of the flutter view..

launch() не возвращает Widget;он возвращает Future<Null>, так что даже если вы ждете завершения будущего, вы не получите виджет.В этом суть предостережения: веб-представление (визуально) расположено поверх вашего приложения Flutter - это не виджет Flutter.

Вы можете расположить и изменить размер этого плавающего веб-просмотра с помощью

flutterWebviewPlugin.launch(url,
              fullScreen: false,
              rect: new Rect.fromLTWH(
                  0.0, 
                  0.0, 
                  MediaQuery.of(context).size.width, 
                  300.0));

если вы можете рассчитать его абсолютную позицию.

Используя этот метод , вы можете найти верхний левый угол виджета, по которому вы можете расположить свое веб-представление с помощью:

  @override
  Widget build(BuildContext context) {
    RenderObject ro = context.findRenderObject();
    if (ro is RenderBox) {
      print(ro.localToGlobal(new Offset(0.0, 0.0)));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...