android - IOS中Webview Flutter字体太小
问题描述
我有需要在 webview 中呈现的 html 代码,以显示 HTML 文本编辑器样式的内容。唯一的选择是使用 webview。因此,我实现了我的 API 来发送响应特定<div>
元素并使用官方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>"""));
在我看来:
Android 足够聪明,可以在没有<meta>
视口的情况下识别 html 代码,但 IOS 没有。您必须明确地将视口设置为移动设备,就像您让 web 应用程序响应移动设备一样。
最好包装<!DOCTYPE html>
注释以正确呈现。
这正是您的代码所需要的:
<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width, initial-scale=1.0"></head><!--rest of your html-->
推荐阅读
- python - 如何像 React 一样在 Python 中解构变量?
- authentication - flink cli 支持的认证方式?
- kubernetes - 具有监视事件权限的 Kubernetes 集群角色
- android - 如何创建实时firebase子节点android问题
- shell - Touch + date 没有三重循环
- python - 升级 pip3 访问不正确的目录 macOS
- python - 使用 Python + 套接字构建数据包嗅探器
- python - discord.py 我试图从我的服务器发出一个 afk 命令,每次我运行我的机器人时都会出错
- google-apps-script - 尝试使用 Google 脚本 API 创建电子表格时权限被拒绝
- sql - 如何为每批新插入的行使用新的序列号?