开始之前:
开发模式:H5+原生【混合开发模式】
框架主要原理就是将 App 中需要动态变动的内容通过HTML5(简称 H5)来实现,通过原生的网页加载控件WebView (Android)或 WKWebView(iOS)来加载
h5的特点是:1随时改变无需发版2只需开发一次【成本低】
混合开发模式的技术难点:实现一系列 API 供 JavaScript 调用,让 JavaScript 有访问系统功能的能力
DOM树:html渲染树
响应式编程:ui界面随状态(数据)变而随时改变
diff算法:计算出改变的部分去更新,避免树重构
虚拟dom:每次改变先同步到虚拟dom,最后批量同步真实dom,避免浏览器重绘【树外观变化,例如颜色,字体大小】或回流【树结构变化:例如布局变化,节点增加隐藏】
RN和react的区别:虚拟dom最终映射对象不同:RN是原生控件【依赖JavaScriptCore解释器】,react是浏览器dom树
RN和react开发模式:js+原生【跨平台复杂】
QT开发模式:自绘ui+原生【不同平台实现一个统一接口绘制ui】c++
框架图:框架层+引擎层+嵌入层
框架层:基础库
引擎层:是核心,实现绘制和显示
潜入层:【跨平台】将引擎安装到不同平台【安卓是java+c++,ios是objective-c,windows是c++】,如果需要支持新平台,再编写一个潜入层即可
开始
看源码+注释:app实例源码:在flutter源码‘examples’目录下
如果不会:1.stackOverflow找答案 2.github flutter下提issue
安装flutter:遇到的坑
Flutter 报错 zsh: command not found
解决办法:
1 、执行:【open ~/.zshrc 】
open ~/.zshrc
2、如果 提示文件不存在,则执行:【vim ~/.zshrc 】新建一个新文件
vim ~/.zshrc
3、新建窗口再执行【open ~/.bash_profile 】
open ~/.bash_profile
4、把 打开的bash_profile 中的内容copy到 上一个窗口新建的zshrc 文件中,保存: 【:wq回车】 5、再使用source命令重新加载一下:【source ~/.zshrc】,下次再编辑这个文件就可以直接执行:【open ~/.zshrc】
source ~/.zshrc
6、运行【flutter -h 】看是否生效
flutter -h
dart语言
var 声明后类型也确定
var t = 'hello'
Object 类型 Object t = 'hello'
t = 1000 不可以打印t的长度 t.length 报错
dynamic 类型 dynamic t = 'hello'
t = 1000
可以打印t的长度 t.length
常量const const t = '敞亮'
?空安全
fun?.call() // fun 不为空时则会被调用