Web 常见问题解答

Flutter 在网络上适用于哪些场景?

并非每个网页都适合 Flutter,但我们认为 Flutter 尤其适合以应用为中心的体验

  • 渐进式网络应用
  • 单页应用
  • 现有的 Flutter 移动应用

目前,Flutter 不适用于具有文本丰富型流程化内容的静态网站。例如,博客文章受益于以文档为中心且围绕网络构建的模型,而不是像 Flutter 这样的 UI 框架可以提供的以应用为中心的体验。但是,你可以使用 Flutter 将互动体验嵌入到这些网站中。

有关如何在网络上使用 Flutter 的更多信息,请参阅 Flutter 的网络支持

搜索引擎优化 (SEO)

总体而言,Flutter 适用于动态应用体验。Flutter 的网络支持也不例外。Flutter 网络优先考虑性能、保真度和一致性。这意味着应用输出与搜索引擎正确索引所需的内容不一致。对于静态或类似文档的网络内容,我们建议使用 HTML,就像我们在 flutter.devdart.devpub.dev 中所做的那样。你还可以考虑将使用 Flutter 创建的主要应用体验与使用搜索引擎优化 HTML 创建的着陆页、营销内容和帮助内容分开。

如何创建同时在网络上运行的应用?

请参阅 使用 Flutter 构建网络应用

热重载是否适用于网络应用?

否,但您可以使用热重启。热重启是一种快速查看更改的方法,无需重新启动网络应用并等待其编译和加载。这与 Flutter 移动开发的热重载功能类似。唯一的区别是热重载会记住您的状态,而热重启不会。

如何重启在浏览器中运行的应用?

您可以使用浏览器的刷新按钮,也可以在“flutter run -d chrome”正在运行的控制台中输入“R”。

Flutter 支持哪些网络浏览器?

Flutter 网络应用可以在以下浏览器上运行

  • Chrome(移动和桌面)
  • Safari(移动和桌面)
  • Edge(移动和桌面)
  • Firefox(移动和桌面)

在开发过程中,Chrome(在 macOS、Windows 和 Linux 上)和 Edge(在 Windows 上)作为调试应用的默认浏览器受到支持。

我可以在任何 IDE 中构建、运行和部署网络应用吗?

您可以在 Android Studio/IntelliJ 和 VS Code 中选择ChromeEdge作为目标设备。

设备下拉菜单现在应为所有频道包含Chrome(网络)选项。

如何为网络构建响应式应用?

请参阅 创建响应式应用

我可以在网络应用中使用 dart:io 吗?

否。浏览器无法访问文件系统。对于网络功能,请使用 http 包。请注意,安全性工作方式有所不同,因为浏览器(而不是应用)控制 HTTP 请求上的标头。

如何处理网络特定导入?

一些插件需要特定于平台的导入,特别是如果它们使用文件系统(浏览器无法访问文件系统)。要在您的应用中使用这些插件,请参阅 dart.dev 上的 条件导入文档

Flutter web 是否支持并发?

Dart 通过 隔离提供的并发支持目前在 Flutter web 中不受支持。

Flutter web 应用可以通过使用 Web Workers 来解决这个问题,尽管没有内置此类支持。

如何将 Flutter web 应用嵌入到网页中?

你可以将 Flutter web 应用嵌入到 HTML 文件的 iframe 标签中,就像嵌入其他内容一样。在以下示例中,用你托管的 HTML 页面的位置替换“URL”

<iframe src="URL"></iframe>

如果你遇到问题,请 提交问题

如何调试 web 应用?

对以下任务使用 Flutter DevTools

对以下任务使用 Chrome DevTools

如何测试 web 应用?

使用 小部件测试或集成测试。要详细了解如何在浏览器中运行集成测试,请参阅 集成测试 页面。

如何部署 web 应用?

请参阅 为发布准备 web 应用

Platform.is 是否适用于 web?

目前不适用。