Flutter mobile app to web

662 阅读3分钟

Flutter2 正式版

2021年3月5日 Flutter2 发布正式版

通过 Flutter 2,可以使用相同的代码库为五种操作系统构建原生应用: iOS、Android、Windows、macOS 和 Linux;以及为 Chrome、Firefox、Safari 和 Edge 等浏览器打造 web 体验。Flutter 甚至可以嵌入到汽车、电视和智能家电,为环境计算提供最普适、可移植的体验。

Flutter2带来的最重大的进展就是Flutter在web平台达到了稳定版。

Flutter web可以在浏览器里运行理论上就可以在任何设备/系统中运行

Flutter的web支持基于有硬件加速的2D和3D图形以及灵活的布局和绘画API,提供了以应用程序为中心的框架,该框架充分利用了现代Web所提供的所有优势。

  • 渐进式Web应用程序(PWA):将Web的访问范围与桌面应用程序的功能结合在一起。
  • 单页应用程序(SPA),一次加载并与网络之间进行数据传输。
  • 将现有的 Flutter 移动应用程序带到Web上,从而为两种体验启用共享代码

综上所述:

Flutter可以开发有交互的web页面而非只有静态页面

从移动应用到web应用 Mobile APP to Web

怎样才能拥有一个flutter web应用呢?
  1. 将Flutter SDK 切换到 master channel (如遇卡不动,请翻墙或者切换到国内镜像)
flutter channel master
flutter upgrade
  1. 在原有flutter项目里生成web目录。打开终端执行以下命令
flutter create .

执行成功以后我们可以在当前项目下看到web目录

flutter项目下的web目录

之后在运行设备列表里选择chrome(web) 点击run即可将我们的项目在浏览器里运行,第一次编译时稍微长一些,因为需要编译整个项目。

Web应用依然支持热重载(hotReload)

Web应用有两种渲染模式

我们应该如何选择采用哪种模式渲染呢?

默认情况下,渲染模式被设置为自动,并针对每个平台的特性进行了优化。具体优化点请阅读官方文档

  • 移动浏览器内运行的应用采用 HTML 进行渲染
  • 桌面浏览器内运行的应用采用 CanvasKit 进行渲染

如何调试?是否可以设置断点?

flutter web app可以连接到 Chrome 的JS调试器,该调试器可以用来设置断点,还可以使用Chrome DevTools

如何发布呢?

执行 
flutter build web

之后我们可以将产物上传的托管平台就可以访问了

flutter web 编译器和移动端不同。由于flutter采用Dart语言,所以整个flutter框架都可以编译成JavaScript

移动应用和web应用唯一的区别在于使用的基础引擎,移动端使用C++引擎,web端采用Browser(C++,JS)引擎。我们不必修改任何项目代码就可以拥有一个web应用,因为fluter框架的API是完全一样的。

下面是移动端架构图和web端架构图 flutter移动端架构

flutterWeb架构

Flutter mobile app to web中需要注意什么?
  • 使用的库是否支持web。 可以去pub.flutter-io.cn/ 找到相关库查看是否支持web
  • web应用在各种设备运行,需要去适配不同尺寸屏幕的设备。做多屏幕尺寸的布局。比如列表在移动端显示一行,在电脑屏幕可以显示多行。
  • 导航
  • 针对桌面/web应用添加滚动条,鼠标和键盘交互
  • web应用选择合适的渲染模式

参考资料:

flutter.dev/web
github.com/flutter/gal…