从 Flutter Go 到 Flutter Go web - 手把手带你轻松玩转 Flutter-web(一)(1)

  • 第一:亲历Flutter for Web 到底如何;
  • 第二:为需要从Flutter nativeFlutter-web 的开发者,摸石头趟条路,毕竟从nativeweb,并不是一键生成的,还有许多坑要填。

Flutter-Go-Web支持尚不稳定。我们将此版本指定为技术预览版; 对 Flutter Go native 版本移植还原度大概在 80%左右。旨在帮助 Flutter 开发人员,快速熟悉 Flutter-web 官方的实践。

Flutter 官方宣布Flutter暂时不会开发热更新(Code push) 之后, Flutter-web 无疑是的动态更新代码最快捷的方式,虽然不是最佳方案,但是是最易用降级方案。

通过 Flutter-go-web 版本的学习,可以快速,有效还原 Flutter-go native 版本。帮助开发者,对快速版本H5化,做一个样例展示,提供 Flutter-web 的能力演示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

准备

言归正传,开发前还是建议大家对 Flutter-web 有一个基本的了解。如果熟悉请忽略。

构建环境

1. 安装 flutter_web 构建工具

输入命令从 pub.dev 的镜像拉取 webdev程序,webdev 类似于前端的构建工具

$ flutter pub global activate webdev

确保 $HOME/.pub-cache/bin 这个环境变量存在,环境变量在 vim ~/.bash_profile 里修改

// ~/.bash_profile 加上这句
$ export PATH=“ P A T H " : " PATH":" PATH":"HOME/.pub-cache/bin”

2. 拉取 flutter_web 示例

Flutter-web版本都是基于,web版本的 packages 包,所以要另起一个新的工程。 为了避免创建的不一致性,基于官方的 flutter_web 示例做更改

$ git clone https://github.com/flutter/flutter_web.git flutter_go_web

3. 创建 flutter_go_web 项目

由于我们只有一个目标项目,所以可以删除 examples 目录,替换成 Flutter Go项目开发。

$ cd flutter_go_web
$ rm -rf examples

4. 手动创建 yaml 文件

在项目根目录,需要创建两个关键的 .yaml 文件 build.yaml 是发布版本的必要的配置 pubspec.yaml 是所有依赖配置,类似于 webpack 里的 package.json 这两个配置内容分别如下:

build.yaml

targets:
$default:
builders:
build_web_compilers|entrypoint:

Avoid building the test directory.

generate_for: [‘web/**.dart’]
options:
dart2js_args:

  • –no-source-maps
  • -O4
  • –fast-startup
  • –minify
  • –trust-primitives
  • –trust-type-annotations

pubspec.yaml

name: flutter_go
description: flutter_go
environment:

You must be using Flutter >=1.5.0 or Dart >=2.3.0

sdk: ‘>=2.3.0-dev.0.1 ❤️.0.0’

dependencies:
flutter_web: any
flutter_web_ui: any

dev_dependencies:
build_runner: any
build_web_compilers: any
build_daemon: any

dependency_overrides 优先直接引用github上的packages

dependency_overrides:
flutter_web:
git:
url: https://github.com/flutter/flutter_web
path: packages/flutter_web
flutter_web_test:
git:
url: https://github.com/flutter/flutter_web
path: packages/flutter_web_test
flutter_web_ui:
git:
url: https://github.com/flutter/flutter_web
path: packages/flutter_web_ui

当然 dependency_overrides 你也可以配置成本地路径,但是为了保证依赖库的最新,还是用git上的比较好, 下面是本地路径的配置。

dependency_overrides:
flutter_web:
path: ./packages/flutter_web
flutter_web_test:
path: ./packages/flutter_web_test
flutter_web_ui:
path: ./packages/flutter_web_ui

5. 更新 packages

$ flutter pub upgrade
! flutter_web 0.0.0 from path packages/flutter_web
! flutter_web_ui 0.0.0 from path packages/flutter_web_ui
Running “flutter pub upgrade” in hello_world… 5.0s

6. 拷贝 Flutter-go 项目下的 libs 到Flutter_go_web 目录下

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

7. 现在就可以使用 webdev 构建并启动开发服务器

$ webdev serve
或者 webdev 与热重载一起使用
$ webdev serve --auto restart

[INFO] Reading cached asset graph completed, took 598ms
[INFO] Checking for updates since last build completed, took 2.1s
[INFO] Starting resource servers…

之后提示一直在连接中, 说明 缺少 resource 资源文件,继续下面操作

8. 创建 web 入口

手动创建 web 文件夹,里面创建两个文件: index.html 为入口 html 页面 main.darthtml 引用文件

/// main.dart
import ‘package:flutter_web_ui/ui.dart’ as ui;
/// flutter_go 是项目名称,在pubspec.yaml 里已经设置
import ‘package:flutter_go/main.dart’ as app;
main() async {
await ui.webOnlyInitializePlatform();
app.main();
}

文件目录结构基本已经成型,如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

9. 再次运行 webdev 编译并启动开发服务器

$ webdev serve --auto restart

本地服务器这样就能跑起来了!?先别忙,接下来报了如下一堆错误 …

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

package:flutter/material.dart -> package:flutter_web/material.dart
package:flutter/widgets.dart -> package:flutter_web/widgets.dart
package:flutter/cupertino.dart -> package:flutter_web/cupertino.dart
package:flutter/services.dart -> package:flutter_web/services.dart
package:flutter/rendering.dart -> package:flutter_web/rendering.dart
package:flutter/gestures.dart -> package:flutter_web/gestures.dart
dart:ui -> package:flutter_web_ui/ui.dart

你可以一个个文件替换,不过笔者写了一个转换库trans2fw小工具,用一个命令就可以对【官方常用的代码库】转换成web版本,减少大家的开发成本。 trans2fw 是笔者开发的一个 自动化 flutter native 项目转化成 flutter-web 项目的工具,已经提交到 pub 镜像上。github 地址>>>

  • 安装 trans2fw 工具, 并注册程序

$ pub global activate trans2fw
$ pub global run trans2fw

  • 运行 trans2fw 工具,根据提示输入,安装完成后,基本按提示输入转换目录就可以了

$ trans2fw
[✓] 请输入需要转换的文件目录(相对于项目目录): lib
[✓] 是否覆盖原有文件 ? (y/N) y
{path: lib, cover: true}
使用输入文件目录:lib
被转换的文件::lib/routers/application.dart::4
被转换的文件::lib/routers/routers.dart::4
被转换的文件::lib/routers/router_handler.dart::4
被转换的文件::lib/resources/icon_names.dart::3
被转换的文件::lib/resources/shared_preferences_keys.dart::3
被转换的文件::lib/resources/widget_name_to_icon.dart::3
被转换的文件::lib/standard_pages/index.dart::6

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

前端校招精编面试解析大全点击这里获取完整版pdf查看

,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

前端校招精编面试解析大全点击这里获取完整版pdf查看

  • 13
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值