Flutter 介绍
Flutter 环境搭建
Windows 系统安装 Flutter
Mac 系统安装 Flutter
准备工作
- 升级 MacOS 至最新系统
- 安装最新版本的 Xcode
- 运行一次 Xcode
- 电脑上安装brew
安装 Flutter
下载 Flutter
将 Flutter 解压至安装目录下
配置 Flutter 环境变量
- 打开环境变量配置文件
1 | vim ~/.bash_profile |
- flutter 环境变量配置
1 | 注意:下面第一行的环境变量需要改为自己flutter的安装目录 |
- 让环境变量立即生效
1 | source ~/.bash_profile |
- 验证 flutter 是否配置成功
1 | flutter -h |
注意:如果
flutter -h
提示 flutter 不是内置命令之类的错误,可能是 sdk 没有配置成功或者 sdk 下载时出错,需重新下载并配置。
运行 Flutter doctor 检测环境
1 | 检测flutter环境 |
根据 Flutter doctor 报错提示进行修复
直至只提示缺少安卓环境为止
生成 Flutter 项目
通过以下步骤来创建你的第一个 Flutter 应用并进行测试:
- 通过运行以下命令来创建一个新的 Flutter 应用:
1 | 创建项目 flutter create [项目名称] |
- 上述命令创建了一个 my_app 的目录,包含了 Flutter 初始的应用模版,切换路径到这个目录内:
1 | 进入项目目录 |
- 确保模拟器已经处于运行状态,输入以下命令来启动应用:
1 | 运行flutter项目 |
修改 Flutter SDK 目录权限及项目权限
如果项目运行提示权限不足可使用如下指令进行修改
1 | sudo chmod -R 777 [对应项目文件名] |
Xcode 打开 Flutter 项目模拟器运行项目
- Xcode 运行项目双击项目目录下的文件
- 运行模拟器
可能会有报错导致模拟器启动失败
Runner.app/Info.plist does not exist. The Flutter "Thin Binary" build phase must run after "Copy Bundle Resources".
解决方法:打开 Xcode 菜单,选择 “Product” > “Clean Build Folder”. 清空项目预览文件,再重新启动模拟器。
- 打开项目后项目白屏
解决方法:再重新启动模拟器,重新打开项目。
Vscode 配置及开发 Flutter 项目
安装 Flutter 插件 Dart 插件
安装 Flutter、Flutter 插件提示插件
安装 Dart 插件
启动模拟器
1 | 启动模拟器 |
运行应用
1 | 运行应用 |
模式切换
- R 启动热更新,重新加载项目
- O 切换为安卓/iOS 模式
- P 打开/关闭网格,可以方便掌握布局情况
- Q 退出调试预览模式
Flutter 目录结构
1 | 项目目录 |
Flutter 入口
每一个 flutter 项目的 lib 目录里面都有一个 main.dart 这个文件就是 flutter 的入口文件
main.dart
里面的
1 | void main(){ |
其中的 main 方法是 dart 的入口方法。runApp 方法是 flutter 的入口方法。
MyApp 是自定义的一个组件
首个 Demo Center 组件
main.dart
里面的
1 | import 'package:flutter/material.dart'; |
执行 R 进行重新编译
自定义 Widget
main.dart
里面的
1 | import 'package:flutter/material.dart'; |
执行 r 进行重新加载
Text 组件简单介绍
给文字调整字号和颜色
1 | import 'package:flutter/material.dart'; |
textDirection
文本显示方式TextDirection.ltr
从左到右
style
文本样式
MaterialApp 组件
MaterialApp 是一个方便的 Widget,它封装了应用程序实现 Material Design 所需要的 一些 Widget。一般作为顶层(根) widget 使用。
常用的属性:
- home(主页)
- title(标题)
- color(颜色)
- theme(主题)
- routes(路由)
- …
Scaffold 组件
Scaffold 是 Material Design 布局结构的基本实现。此类提供了用于显示 drawer、 snackbar 和底部 sheet 的 API。
Scaffold 有下面几个主要属性:
- appBar - 显示在界面顶部的一个 AppBar。
- body - 当前界面所显示的主要内容 Widget。
- drawer - 抽屉菜单控件。
- …
1 | import 'package:flutter/material.dart'; |
Flutter 组件
Container 组件
名称 | 功能 |
---|---|
alignment | topCenter:顶部居中对齐 topLeft:顶部左对齐 topRight:顶部右对齐 center:水平垂直居中对齐 centerLeft:垂直居中水平居左对齐 centerRight:垂直居中水平居右对齐 bottomCenter 底部居中对齐 bottomLeft:底部居左对齐 bottomRight:底部居右对齐 |
decoration | decoration: BoxDecoration( color: Colors.blue, border: Border.all( color: Colors.red, width: 2.0, ),borderRadius: BorderRadius.all( Radius.circular(8.0) ) ) |
margin | margin 属性是表示 Container 与外部其他 组件的距离。 EdgeInsets.all(20.0), |
padding | padding 就 是 Container 的 内 边 距 , 指 Container 边缘与 Child 之间的距离 padding: EdgeInsets.all(10.0) |
transform | 让 Container 容易进行一些旋转之类的 transform: Matrix4.rotationZ(0.2) |
height | 容器高度 |
width | 容器宽度 |
child | 容器子元素 |
1 | import 'package:flutter/material.dart'; |
Text 组件
名称 | 功能 |
---|---|
textAlign | 文本对齐方式(center 居中,left 左 对齐,right 右对齐,justfy 两端对齐) |
textDirection | 文本方向(ltr 从左至右,rtl 从右至 左) |
overflow | 文字超出屏幕之后的处理方式(clip 裁剪,fade 渐隐,ellipsis 省略号) |
textScaleFactor | 字体显示倍率 |
maxLines | 文字显示最大行数 |
style | 字体的样式设置 |
下面是 TextStyle 的参数
名称 | 功能 |
---|---|
decoration | 文字装饰线(none 没有线,lineThrough 删除线,overline 上划线,underline 下划线) |
decorationColor | 文字装饰线颜色 |
decorationStyle | 文字装饰线风格([dashed,dotted]虚线, double 两根线,solid 一根实线,wavy 波浪 线) |
wordSpacing | 单词间隙(如果是负值,会让单词变得更紧凑) |
letterSpacing | 字母间隙(如果是负值,会让字母变得更紧凑) |
fontStyle | 文字样式(italic 斜体,normal 正常体) |
fontSize | 文字大小 |
color | 文字颜色 |
fontWeight | 字体粗细(bold 粗体,normal 正常体) |
1 | import 'package:flutter/material.dart'; |
v1.4.14