基本介绍
MPFlutter是一个跨平台的Flutter开发框架,可用于各种小程序、H5、原生应用的开发,虽然他支持的内容很多,最让我们期待的应该还是各种小程序的开发吧。
在有mpflutter之前,我都是使用flutter发布一个web项目,然后在使用uniapp来包装成小程序,在发现了MPFlutter以后果断的放弃了之前的方案。MPflutter保留了Flutter的热重载的能力,根据小程序的运行环境,MPFlutter对渲染层做了轻量化的处理。它的主要优势体现在这个方面:
- 纯粹的Flutter开发体验,会用Flutter就能开发小程序应用,不需要在额外的学习其他技能了。
- Flutter常用的组件库,在MPFlutter中依然可用,包括dio,getx等。
- MPFlutter封装了部分小程序组件和API,可以方便的调用小程序的能力来完成一些事情。
- 支持所有的Dart第三方扩展。
也存在一些明显的缺陷,并不支持全部的Flutter Widget,有部分小部件是不能用的,小程序的组件也没有全部实现,只能使用官方的MPkit组件。也并不是所有的Flutter第三方库都能被支持。虽然MPFlutter目前还有一些不完善的地方,毕竟他还是太年轻,我没有找到他的发布日期,从官方github的更新日期上看发布还不是2年,MPFlutter仍然处于先期预览本阶段,希望他日后可以发展的更好,为国产软件做出更多贡献。
下边我们来简单的使用一下MPFlutter,来看看他到底是如何使用的,
传送门
MPFlutter官方网站:mpflutter.com/
官方文档地址:mpflutter.com/zh/docs/con…
微信小程序开发指南:mpflutter.com/zh/docs/wea…
github地址:github.com/mpflutter/m…
开始简单的使用
关于开发环境
MPFlutter只是一个开发框架,如果你已经安装过了Flutter环境,那就不需要在安装其他环境了,但是还是需要重新检测一下环境变量的配置,因为MPFlutter需要将dart-sdk 也包括在PATH中。
- 获取Flutter SDK,官方文档中推荐使用的是3.0的版本,我使用3.0.2的版本也是可以运行的。
storage.flutter-io.cn/flutter_inf…
- 将SDK解压缩到你希望安装的位置上。
- 配置环境变量。
export PATH="$PATH:`pwd`/flutter/bin"
export PATH="$PATH:`pwd`/flutter/bin/cache/dart-sdk/bin"
这里有一个感叹号!!!务必将dart-sdk添加到PATH中!!!
- 检查一下环境,如果都能看到版本号的输出,那么我们的环境配置就已经完成了。
flutter --version
dart --version
dart2js --version
> Warning: The 'dart2js' entrypoint script is deprecated, please use 'dart compile js' instead.
> Dart-to-JavaScript compiler (dart2js) version: 2.17.5
//这里可能会看到一个警告,不影响我们使用。
编写第一个应用
- 首先我们需要下载一个模板工程。
git clone https://github.com/mpflutter/mpflutter_template.git awesome_project
MPFlutter提供有gitee,如果无法从github换取这个模板,可以使用gitee来获取模板
git clone https://gitee.com/mpflutter/mpflutter_template.git awesome_project
- 安装依赖:在我们的项目根目录下支持mpflutter来安装依赖,这里也有一个感叹号,是mpflutter,不是flutter
./mpflutter packages get
- 启动项目,和我们开发Flutter应用一样,使用你喜欢的ide打开项目,开始运行吧。
当你看到User browser open http://*********,说明已经启动成功了,打开浏览器输入上边的地址,没有意外的话应该就能看到我们的第一个应用了。
- 初始化项目
MPFlutter为我们提供了一个初始化项目的工具,可以停止调试,在终端运行这个命令来启动。
dart scripts/help.dart
\
我们可以为项目设置工程名称,配置输出内容。引用一段官方的介绍:
我们选择初始化 MPFlutter 模板工程,并根据提示输入工程名称、输出目标。
- 是否移除模板工程自带的 Git 源? (y/N)
-
- 对于新克隆的模板工程,选 y 即可,移除自带的 Git 源,后续可以添加自己的 Git 源。
- 请输入工程名称,合法字符为全小写英文和下划线:
-
- 输入一个合法的工程名称,如 awesome_project,这将会同步修改 pubspec.yaml 中的 name 值。
- 该工程需要输出到 Web 吗?(如果选择否,将删除 Web 目录。) (y/N)
-
- 如果你不需要输出到 Web (HTML5) 可以选择否,一般情况下,我们会选 y 保留该目标。
- 该工程需要输出到微信小程序吗?(如果选择否,将删除 weapp 目录。) (y/N)
-
- 如果你不需要输出到微信小程序可以选择否。
在配置好以后,运行这个命令来让我们的配置生效。
在命令行执行 ./mpflutter packages get。
开始构建微信小程序
在我们完成了上边的内容后,我们的微信小程序其实已经编译好了,他就在weapp目录下边,我们可以直接使用微信开发者工具导入这个目录,就打开了我们的微信小程序了,weapp目录下的小程序是支持调试的。引用官方介绍
MPFlutter 会通过在小程序创建 websocket 连接的方式,与 VSCode 中的 Debugger 通信。
而 VSCode 中的 Debugger 又是一个独立的 Dart Debugger,它本身就可以做到完全独立的调试。
你也可以在真机上调试应用,只需要将 app.js 中的 IP 替换成电脑局域网 IP 就可以了,原理也是一样的走 websocket。
值得注意的是,在调试模式下的表现并不能完全代表最终构建后的表现,如果你需要做上线前的测试,你应该在生产模式下进行测试。
发布生产环境
dart scripts/build_weapp.dart
使用这个目录就可以发布一个生产环境的产物,编译后的内容会在build目录下,build后的Dart 代码会被混淆,将不再能看到堆栈错误的信息了。