我需要在webview中呈现html代码,以显示html文本编辑器样式的内容.唯一的 Select 是使用webview.所以,我实现了我的API来发送响应特定的<div>元素,并使用official flutter webview显示它.Android系统显示正确,IOS字体非常小(甚至无法阅读).我做错了什么?

相关代码片段:

var contentBase64 = base64Encode(const Utf8Encoder()
      .convert(
      """<html>
          <body style='"margin: 0; padding: 0;'>
            <div>
              $htmlString //my html code snippet coming from API
            </div>
          </body>
        </html>"""));

//.....
WebView(
    initialUrl: 'data:text/html;base64,$contentBase64',
//  gestureRecognizers: Set()..add(Factory<VerticalDragGestureRecognizer>(()=>VerticalDragGestureRecognizer())),
),

推荐答案

原因是,你只用了html个元素.您必须指定meta标签才能在iOS设备中响应.为此,您还必须添加head元素,如下所示:

  var contentBase64 = base64Encode(const Utf8Encoder()
  .convert(
  """<!DOCTYPE html>
    <html>
      <head><meta name="viewport" content="width=device-width, initial-scale=1.0"></head>
      <body style='"margin: 0; padding: 0;'>
        <div>
          $htmlString
        </div>
      </body>
    </html>"""));

my opinion年:

Android足够聪明,可以在不使用viewport的情况下识别html代码,而IOS则不行.你必须明确地将viewport设置为移动设备,就像让webapp响应移动设备一样.

最好包裹<!DOCTYPE html>个注释以正确渲染.

这正是您的代码所需要的:

<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width, initial-scale=1.0"></head><!--rest of your html-->

Dart相关问答推荐

Flutter - 对 Cloud Firestore 进行排序

从 Future 实例中获取值

Swipe返回手势

Flutter 使用拖动和按钮单击扩展 TextField

Mockito - 在空安全迁移后存根方法

如何在没有 Scaffold.drawer 的情况下使用 Drawer?

如何在 Flutter 中更改 Html 小部件中的字体样式?

IOS中Webview Flutter字体太小

如何在 Flutter 包/插件开发中添加assets?

无法将小部件标记为需要构建,因为框架已经在构建小部件的过程中

如何在Flatter中的press/finger/mouse/cursor位置显示菜单

如何创建一个对话框,能够接受文本输入并在Flutter中显示结果?

如何使 FadeInImage 循环?

如何将整数中的ascii值转换为Flutter中的等效字符?

Dart Nodejs 和 Socketio

如何判断switch/case中对象的类型?

何时使用polymer点击或点击?

如何从 Dart 中的 forEach 循环返回?

具有 Maps 的 Null 感知运算符

如何在 Dart 中将日期/时间字符串转换为 DateTime 对象?