把Flutter扩展到微信小程序端的探索

这篇具有很好参考价值的文章主要介绍了把Flutter扩展到微信小程序端的探索。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Flutter是声明式UI框架,声明式UI只需要向框架描述UI长什么样子而不用关心框架具体的实现细节,具体到Flutter,上层的UI描述使用底层的skia图形引擎处理就是原生Flutter,而把底层处理换成html/css/canvas就是flutter_web,flutter_mp则是探索在类小程序上对这些UI描述的处理。

我们看一个最简单例子

var x = ‘Hello World’

Center(

child: Text(x)

);

对于上面的UI结构,我们只需要在小程序的wxml文件里,用如下的结构对应就OK了。

// wxml部分

{{x}}

// js 部分

Component({

data: {

x: ‘Hello World’

}

})

虽然实际的结构要比上面的情况复杂的多,不过通过上面简单的例子,我们知道起码要做两个事情:

我们需要根据Flutter代码生成相关小程序wxml模版文件 收集wxml渲染需要的数据,放置到小程序组件的data字段。

wxml结构生成

我们知道小程序是无法动态操作节点的,wxml结构需要预先生成,所以Flutter运行在小程序之前,会存在一个编译打包阶段,这个阶段会遍历Dart代码, 根据一定规则生成wxml文件(编译阶段还会做下文将要提到的另外一个重要事情 — 把Dart编译为js)。

具体的,我们首先会将Dart源码处理为可分析的AST结构,AST是源代码的树型表示结构。然后我们深度遍历这份AST语法树结构,生成目标wxml,整个过程如下:

flutter可以开发微信小程序吗,Android程序员,flutter,微信小程序,小程序

构建wxml结构的难点在于:Flutter不仅是声明式UI还是“值UI”,什么叫“值UI”?简单来说,Flutter把UI看成是一个普通的值,类似于字符串,数字一样的值,既然是一个普通的值,就可以参与所有的控制流程,可以是函数的返回值也可以是函数参数等等。而小程序的wxml虽然也是声明式UI,却不是“值UI”,wxml更加像模版,更加的静态。怎么用静态的wxml表达动态的“值UI”是构建wxml结构的关键所在。

看个例子

Widget getX() {

if (condition1) {

return Text(‘Hello’);

} else if (condition2) {

return Container(

child: …

);

} else if (condition3) {

return Center(

child: …

);

}

}

Widget x = getX();

Center(

child: x // < — 如何处理这里的 x??

);

这里的child: x x是一个动态值,它的具体值需要在运行阶段才能确定,它可能是任意的Widget,如何在静态的wxml上处理这里动态的x?受Alita框架的启发,这里主要是借助于小程序template的动态性(template的is属性可以接受变量值)。有如下几步:

1、首先在遍历Dart源码AST结构的时候,会把每一个独立完整的“UI值”片段,对应到wxml的template, 比如上文 getX 里面的UI

Hello

...

2、在遇到 类似x 这种动态值的时候,固定的会生成一个template占位

3、在运行阶段,会根据getX

函数的运行结果来决定x映射的“UI值”,如果getX里面condition1为true,那么这里的templateName的值就是template001。具体的数据计算收集工作,参考下面要的 “渲染数据收集”过程。可以看出flutter_mp处理“值UI”方式,完全参考了Alita。

渲染数据收集

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

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
flutter可以开发微信小程序吗,Android程序员,flutter,微信小程序,小程序
flutter可以开发微信小程序吗,Android程序员,flutter,微信小程序,小程序
flutter可以开发微信小程序吗,Android程序员,flutter,微信小程序,小程序
flutter可以开发微信小程序吗,Android程序员,flutter,微信小程序,小程序

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
flutter可以开发微信小程序吗,Android程序员,flutter,微信小程序,小程序

学习分享,共勉

Android高级架构师进阶之路

题外话,我在阿里工作多年,深知技术改革和创新的方向,Android开发以其美观、快速、高效、开放等优势迅速俘获人心,但很多Android兴趣爱好者所需的进阶学习资料确实不太系统,完整。今天我把我搜集和整理的这份学习资料分享给有需要的人,若有关Android学习进阶可以与我在Android终极开发交流群一起讨论交流。 点击这里前往我的Git领取资料 的同时,还可以加入一个好的学习交流圈,何乐而不为呢?加入我们和我们一起吧!!

  • Android进阶知识体系学习脑图

flutter可以开发微信小程序吗,Android程序员,flutter,微信小程序,小程序

  • Android进阶高级工程师学习全套手册

flutter可以开发微信小程序吗,Android程序员,flutter,微信小程序,小程序

  • 对标Android阿里P7,年薪50w+学习视频

flutter可以开发微信小程序吗,Android程序员,flutter,微信小程序,小程序

  • 大厂内部Android高频面试题,以及面试经历

外链图片转存中…(img-h8ooJsXA-1710703585087)]

  • Android进阶高级工程师学习全套手册

[外链图片转存中…(img-MmG4PqYM-1710703585087)]

  • 对标Android阿里P7,年薪50w+学习视频

[外链图片转存中…(img-sd6QqnKB-1710703585087)]

  • 大厂内部Android高频面试题,以及面试经历

flutter可以开发微信小程序吗,Android程序员,flutter,微信小程序,小程序文章来源地址https://www.toymoban.com/news/detail-860768.html

到了这里,关于把Flutter扩展到微信小程序端的探索的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 将Vue项目迁移到微信小程序中

    使用 Vue-Cli 脚手架创建一个新的Vue.js应用程序。 启动应用程序 在你的Web浏览器中打开URL http://localhost:8080,你应该可以看到你的vue.js应用程序正在运行。 微信小程序是一个独立的平台,需要自己构建,不能直接将vue.js应用程序上传至微信小程序平台。需要把你的vue.js应用程序

    2024年02月07日
    浏览(33)
  • uniapp运行到微信小程序踩坑记录

    提示TypeError: Property value expected type of string but got undefined 打包时提示以下报错 因为标签绑定绑定一个函数的参数中传入一个函数时,不能直接加入括号传承,不支持方法中套方法的操作, 错误: 正确 应该把参数传入函数中以回调的形式去调用,不能直接在标签上嵌套 Error

    2024年02月16日
    浏览(65)
  • [uni-app]设置运行到微信小程序

    1、设置微信小程序开发工具路径 2、检查微信小程序开发工具是否开启了服务端口 服务端口要是没有开启,会报 × initialize。 3、在uni-app开发工具中点击运行微信开发者工具,微信开发工具运行成功。

    2024年02月13日
    浏览(64)
  • uniapp代码运行到微信小程序报unexpected character ` `

    用uniapp写的小程序,在h5预览正常,在小程序预览时点击按钮发现导航栏跳到了目标页面,但内容没变,同时控制台报目标页面有unexpected character 问题 由于wxml代码是uniapp转换来的,很多堆积在一起,所以报错的wxml:2:0并不是该文件第二行。滚动微信开发者工具内问题wxml,仔细

    2024年02月11日
    浏览(59)
  • h5页面如何嵌到微信小程序中(chatgpt回答)

    将 H5 页面嵌入到微信小程序中需要进行以下步骤: 在微信公众平台申请认证并在其后台添加小程序 打开小程序的 app.json 文件,并配置 web-view 组件 在小程序的 wxml 文件中使用 web-view 标签引用 H5 页面。 发布小程序并测试。  问:H5页面的url只能写成https的形式吗? 答: 在微

    2024年02月15日
    浏览(52)
  • 【uniapp】使用canvas组件编译到微信小程序兼容出错问题

    使用uniapp编译跨平台项目会遇到不少兼容问题,这里主要讲canvas组件的,编译到微信小程序会有兼容出错问题,这里给讲一下解决方案,希望有帮助。 如果使用 CanvasContext 绘制,以下代码,编译到微信小程序上可能发现绘制不出来 看canvas组件的属性 type=\\\"2d\\\" 是否有加,要去掉

    2024年02月02日
    浏览(141)
  • 微信小程序如何跳转到微信公众号文章,小程序如何关联公众号或订阅号

    公众号最高管理权限(或能与最高权限管理者配合操作) 小程序开发权限或最高管理权限 根据官方资料描述,小程序中展示微信公众号中的文章需要使用到 web-view web-view 是一个 web 浏览器组件,可以用来承载网页的容器,会自动铺满整个页面 src:webview 指向网页的链接 特别

    2024年02月14日
    浏览(75)
  • H5页面内嵌到微信小程序和APP,做分享操作

    最近接到项目新需求,H5项目需要内嵌到微信小程序和APP里,然后将H5页面分享出去,被分享的人可以点击消息跳转到H5页面。H5页面不难,难的是要与微信小程序和APP进行交互,因为以前也没有接触过,所以这里卡的时间有点长。现分享出来 介绍 这里小编使用的是 uinapp 写的

    2024年02月06日
    浏览(169)
  • ESP32连接到oneNET云平台,传数据到微信小程序

    学习物联网的同学们在进行毕业设计时都需要面对一个共同的问题:如何使用传感器获取数据并将其上传至云平台,然后通过微信小程序访问云平台数据。在这个过程中,恰巧在课程设计中接触到了ESP32,发现它内置蓝牙和WiFi模块, 这不是天生的上传云平台圣体吗? 因此,

    2024年04月15日
    浏览(43)
  • HbuilderX运行uniapp项目到微信小程序时,自动打开了微信小程序开发工具但是进不去项目

    这样选择之后,运行时一直停在打开微信开发者工具不能进入项目,如图: 这是因为你当前不是这个微信小程序的开发者,联系管理员添加你为当前小程序的开发者就行了。 或者是更换appid

    2024年02月11日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包