Flutter环境变量配置
1、下载安装flutter SDK,放在“家”目录下。
SDK官网去下载
2、环境变量配置:
来到对应shell
的配置文件进行配置,如果使用默认的bash那么配置~/.bash_profile
;如果使用zsh(Mac新系统默认是zsh),那么配置~/.zshrc
。(我这里当时还新建了一个~/.zprofile
文件,里边放的内容和zshrc的文件内容是一样的)。
Flutter镜像配置:
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
export PUB_HOSTED_URL=[https://pub.flutter-io.cn](https://pub.flutter-io.cn)'
配置Flutter环境变量:
接下来,将Flutter命令行工具的路径配置一下,还是对应的shell文件中
export PATH=/Users/dongao/Documents/flutter/bin:$PATH
(如果当前电脑有多个环境变量配置则中间用:隔开就可以,最后边加一个:$PATH,例:
export PATH=/Users/dongao/Documents/flutter/bin:绝对路径:$PATH)
配置完成后,重新打开终端输入 source ~/.zshrc
bash则使用source ~/.bash_profile
接下来可以验证Flutter是否配置完成,在终端输入
flutter doctor,看到下图勾勾就是差不多了。
环境搭建补充知识点
Linux环境变量的配置问题
(1)你要让shell
能够找到你的工具(shell是我们的操作系统,mac上的shell:早期的shell是bash,现在的新款电脑默认的系统是zsh),所谓的环境变量配置意思就是,把谷歌开发的flutter包下载下来,安装到电脑上,然后shell去用它,不同的shell会有自己的配置文件,早期的bash配置文件是~/.bash_profile
,现在的zsh配置文件是~/.zshrc
,<波浪线为家目录,Linux中,文件名称前面有一个.这个文件是隐藏文件>,把环境变量的配置代码写在配置文件中。如果电脑系统是由bash升级到zsh,在zsh的配置文件里可以配置一句代码source ~/bash_profile
,命令意思是去执行bash_profile里边的配置
配置安卓环境
1、安装android studio
2、配置SDK
根据安装向导,需要安装Android SDK,Android SDK Command-line Tools ,Android SDK Build-Tools,如下图
3、安装Android Studio的插件
来到Studio的偏好设置里面,如下图,点击dart和flutter插件install,安装完成后重启Android Studio
4、android studio的一个bug机制:
command+q,强制退出之后再打开android studio可能会锁死,会锁住当前运行的环境,为了保护数据有一个缓存机制,如果锁死,则在删除缓存文件,在flutter/bin/cache
里边有一个lockfile
删除掉
进行flutter检测flutter doctor
如果出现下列问题是许可证问题,打开终端输入下列命令行:
$flutter doctor —android-licenses
4、配置安卓模拟器
此处选择下载了“夜神”模拟器
创建一个flutter项目:
1、终端创建:$flutter create flutter_demo(iOS默认swift语言,安卓默认Kotlin,如果需要指定语言,则flutter create -i objc flutter_demo
)
2、Android Studio创建:file-> new -> new flutter project
project type:
Flutter Application:Flutter工程
Flutter Moudle:用于混合开发
Flutter Plugin:带有iOS和安卓原生的代码
Flutter Package:类似于iOS中三方库(只有dart代码)
Empty Projec:空工程
3、VS_Code创建
注意:flutter创建文件名不允许用驼峰,用小写+下划线
Flutter的特点:
(1)不依赖原生UI:拥有独立的渲染引擎
(2)界面更新逻辑和原生不一样(增量渲染):重新创建一个新的Widget。
(3)为什么Flutter中大量final修饰的属性,const修饰的构造方法(常量对象),final修饰的属性是只能赋值一次的最终变量:因为Flutter的渲染逻辑,是增量渲染。Widget结构是树状结构。想改变屏幕内容就直接改变Widget对象(干掉原来的重新创建新的widget对象)。常量对象的创建效率更高!
弊端:包体积大
ReactNative:是原生UI的基础上进行的包装,弊端:性能问题+对原生UI依赖性大,原生UI有更新,RN代码也需要更新