使用Flutter 构建Web应用逻辑解析

 更新时间:2022年12月06日 10:30:37   作者:顾安  
这篇文章主要为大家介绍了使用Flutter 构建Web应用逻辑解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、起源

Flutter 的起源就很有意思,大家都知道早期 Flutter 最先支持的平台是 Android 和 iOS,至今最核心的维护平台依然是 Android 和 iOS,但是事实上Flutter 来源于前端 Chrome 团队。另外前端的同学应该知道,Dart 起初也是为了 Web 而生,事实上 Dart 诞生至今也有 10 年了,所以可以说 Flutter 其实充满了 Web 的基因。

二、渲染逻辑

首先 Flutter Web 和其他 Flutter 平台一样共用一套 Framework,理论上绝大多数的控件实现都是通用的,而由于 Web 的特殊场景,Flutter Web 在 "几经周折" 之后落地了两种不同的渲染逻辑: html 和 canvaskit,它们的不同之处在于:

  • html 的实现更轻量级,渲染实现基本依赖于 Web 平台的各种 HTMLElement,它更贴近现在的 Web 环境,所以有时候我们也称呼它为 DomCanvas。
  • canvaskit 的实现可以说是更贴近 Flutter 理念,因为它其实就是 Skia + WebAssembly 的实现逻辑,能和其他平台的实现更一致,性能更好,比如滚动列表的渲染流畅度更高等。

Flutter For Web和Flutter For Mobile的上层实现基本类似,但是在下层的实现有很大的差别。Flutter For Mobile中的绘制是使用了Engine中的Dart、Skia和Text,然后再调用iOS和Android提供的底层绘制能力来实现的。

三、打包处理

默认情况下 Flutter Web 在打包渲染时会把 html 和 canvaskit 都打包进去,然后再 PC 端使用 canvaskit 模式,在 mobile 端使用 html 模式,当然您也可以在打包时通过 flutter build web --web-renderer html --release 之类的配置强行指定渲染模式。

四、配置开发环境

  • 首先需要master或者dev渠道的Flutter SDK来获取Web支持
flutter channel stableflutter upgradeflutter config --enable-web
  • 创建一个名为myapp的应用
flutter create myappcd myapp
  • 编译当前应用
flutter build web

你可以通过运行 release 模式 (flutter run --release) 或运行 flutter build web 来构建 release 模式的应用。同时,你可以使用(--web-renderer html)或者(--web-renderer canvaskit)分别切换 HTML 或 CanvasKit 渲染器。

  • 为现有项目添加 Web 支持
flutter create .

测试应用

你可以在命令行使用 flutter run -d chrome 命令测试应用程序。这会构建出 debug 版本的应用。

对于增加了对Flutter For Web支持的Flutter应用,在代码目录中增加了一个Web文件夹,其中index.html 文件是整个Web应用的入口。其中引用了一个JS文件是main.dart.js,但在工程目录中找不到该文件。其实这个文件是Flutter工程编译后生成的js文件,如果曾编译成功过这个工程,会在编译后的build文件夹中看到该js文件。

和普通的Flutter应用一样,主要的功能实现还是在工程中的lib文件夹中。但是如果需要有资源文件、js 文件等 web 所需资源,可以放到Web这个文件夹中。

结束语

关于flutter web的起源跟构建学习到这里就结束了,更多关于Flutter 构建Web应用的资料请关注脚本之家其它相关文章!

相关文章

  • Android结合xml实现帧动画

    Android结合xml实现帧动画

    将一组动作相近的图片组合在一起,然后按照一定的时间来播放,就会形成一个动画,我们可以称之为帧动画。在 Android 中可通过结合 xml 的方式来轻松实现。
    2021-05-05
  • Android程序开发之手机APP创建桌面快捷方式

    Android程序开发之手机APP创建桌面快捷方式

    这篇文章主要介绍了Android程序开发之手机APP创建桌面快捷方式 的相关资料,需要的朋友可以参考下
    2016-04-04
  • Android Studio 2022.1.1创建项目的Gradle配置问题

    Android Studio 2022.1.1创建项目的Gradle配置问题

    这篇文章主要介绍了Android Studio 2022.1.1创建项目的Gradle配置问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • 浅析Android代码质量管理

    浅析Android代码质量管理

    本篇文章给大家分享了Android代码质量管理的相关知识点以及重点分析,对此有兴趣的朋友可以参考学习下。
    2018-05-05
  • Google大佬都用的广播goAsync源码分析

    Google大佬都用的广播goAsync源码分析

    这篇文章主要为大家介绍了Google大佬都用的广播 goAsync源码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Android支付宝支付开发实例

    Android支付宝支付开发实例

    这篇文章主要为大家详细介绍了Android支付宝支付开发实例的相关资料,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • Android编程设计模式之访问者模式详解

    Android编程设计模式之访问者模式详解

    这篇文章主要介绍了Android编程设计模式之访问者模式,详细分析了访问者模式的概念、功能、原理、使用场景并结合实例形式给出了Android访问者模式的具体实现技巧与相关操作注意事项,需要的朋友可以参考下
    2017-12-12
  • Android入门之Fragment的使用教程

    Android入门之Fragment的使用教程

    Fragment是Android3.0后引入的一个新的API,他出现的初衷是为了适应大屏幕的平板电脑。本文主要来和大家讲讲Fragment的使用,感兴趣的小伙伴可以了解一下
    2022-12-12
  • Flutter悬浮按钮FloatingActionButton使用详解

    Flutter悬浮按钮FloatingActionButton使用详解

    本文主要介绍了Flutter悬浮按钮FloatingActionButton使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • Android编程开发实现带进度条和百分比的多线程下载

    Android编程开发实现带进度条和百分比的多线程下载

    这篇文章主要介绍了Android编程开发实现带进度条和百分比的多线程下载,总结了前面关于Java多线程下载的技巧,实例分析了Android实现带百分比和进度条的多线程下载技巧,需要的朋友可以参考下
    2015-12-12

最新评论