来看看这是什么,Flutter学习(上)
一、 Flutter介绍与配置
1. Flutter介绍
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。Flutter的目标是使同一套代码同时运行在iOS和Android系统上,并且拥有媲美原生应用的性能,Flutter甚至提供了两套控件来适配Android和iOS(滚动效果、字体和控件图标等等),为了让App在细节处看起来更像原生应用。
2. 下载
https://flutter.io/docs/get-started/install
3. 更新环境变量
mac
export PATH=`pwd`/flutter/bin:$PATH
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
windows
转到 “控制面板>用户帐户>用户帐户>更改我的环境变量”
在“用户变量”下检查是否有名为“Path”的条目:
如果该条目存在, 追加 flutter\bin的全路径,使用 ; 作为分隔符.
如果条目不存在, 创建一个新用户变量 Path ,然后将 flutter\bin的全路径作为它的值.
在“用户变量”下检查是否有名为”PUB_HOSTED_URL”和”FLUTTER_STORAGE_BASE_URL”的条目,如果没有,也添加它们。
重启Windows以应用此更改
4. 运行 flutter doctor
5. 编辑器
VScode
启动 VS Code
调用 View>Command Palette…
输入 ‘install’, 然后选择 Extensions: Install Extension action
在搜索框输入 flutter , 在搜索结果列表中选择 ‘Flutter’, 然后点击 Install
选择 ‘OK’ 重新启动 VS Code
Android Studio
启动Android Studio.
打开插件首选项 (Preferences>Plugins on macOS, File>Settings>Plugins on Windows & Linux).
选择 Browse repositories…, 选择 Flutter 插件并点击 install.
重启Android Studio后插件生效.
6. 模拟器
IOS 模拟器设置
安装 Xcode
Xcode-open Developer tool- Simulator
Android 模拟器设置
在机器上启用 VM acceleration .
启动 Android Studio>Tools>Android>AVD Manager 并选择 Create Virtual Device.
选择一个设备并选择 Next。
为要模拟的Android版本选择一个或多个系统映像,然后选择 Next. 建议使用 x86 或 x86_64 image .
在 Emulated Performance下, 选择 Hardware - GLES 2.0 以启用 硬件加速.
验证AVD配置是否正确,然后选择 Finish。
二、 Flutter HelloWord
1. 项目文件
—Android 安卓配置文件
—ios IOS配置文件
—build 打包生成目录
—lib 开发目录
—main.dart 入口文件
—pubspec.yaml 项目依赖配置
2. HelloWorld
项目入口文件 main.js
启动方法 void main()
void main(){} //定义入口方法
根函数 runApp()
void main(){
runApp(
//定义内容
);
}
一切皆为widget(组件)
在 Flutter 中,一切的显示都是 Widget 。Widget 是一切的基础
Widget 和 Widget 之间通过 child: 进行嵌套。
你需要做的就是在 widget 中堆积你的布局
UI库 material
import 'package:flutter/material.dart';
Material
是一种标准的移动端和web端的UI框架,是一套google的设计规范,flutter项目以meterial为基础
3. Flutter 部件
Center小部件:定义一个居中的部件
Center(
child: //部件
);
Text小部件
Text(
'hello',
textDirection: TextDirection.ltr,
)
若不写textDirection会报错
自定义部件
class Hello extends StatelessWidget{ //创建一个继承自无状态部件的自定义部件
Widget build (BuildContext context){ //实现一个build函数, 构建自身
return Center( //返回一个部件
child:
);
}
}
StatelessWidget:无状态部件
4. 文字和文字样式
Text(
'hello',
textDirection: TextDirection.ltr,
style: TextStyle(
fontSize: 40.0,
color: Colors.red,
fontWeight: FontWeight.bold
),
),
文字内容
TextStyle,用来定义Text中文字的各种属性。
文字颜色
文字大小
文字粗细
属性值 | 意义 |
---|---|
color | 字体颜色 |
fontSize | 字体大小 |
fontWeight | 字体粗细 |
fontStyle | normal或者italic |
fontFamily | 字体 |
letterSpacing | 字母间隙 |
wordSpacing | 单词间隙 |
文本方向
属性名 | 意义 |
---|---|
TextDirection.ltr | 左对齐 |
TextDirection.rtl | 右对齐 |
三、 Flutter界面
1. MaterialApp 界面
MaterialApp构成
MaterialApp 代表使用纸墨设计(Material Design)风格的应用。里面包含了纸墨设计风格应用所需要的基本控件。
title :在任务管理窗口中所显示的应用名字,这个 Title 是用来定义任务管理窗口界面所看到应用名字的。在原生 Android 系统中点击圆圈 Home 按钮右边的方块按钮就会打开多任务切换窗口。
home :应用默认所显示的界面 Widget,用来定义当前应用打开的时候,所显示的界面。
MaterialApp(
title: 'Flutter Tutorial',// 指明了这个控件的标题
home: Scaffold( // 指明了这个控件的主体
appBar: AppBar(),
body:
),
)
2. 顶部工具栏和功能按钮
leading
部件创建一个menu部件
使用Icon部件,以及预置图标
actions
部件创建一组actions动作
使用小图标
appBar: AppBar(
title: Text(
'demo'
),
leading: Icon(Icons.menu),
actions: <Widget>[
Icon(Icons.search),
],
elevation: 0.0,
),
三、 Flutter界面 - 边栏
1. Drawer
添加使用一个Drawer左侧边栏部件
2. DrawerHeader
添加一个 `` 边栏头部部件
定义装饰部件
decoration
定义边栏头部的颜色
3. 使用列表项的边栏小案例
使用ListView部件来构建一个简单列表项
设置列表标题 title
设置列表小图标 trailing
设置点按动作 onTap
标题内容
标题对齐方式
预置图标
图标颜色
图标尺寸
设置装饰 decoration
设置背景颜色 color
设置padding内边距
定义children 一组列表
定义边栏头部 DrawerHeader
定义列表项 ListTile
drawer: Drawer( //边栏插件
child: ListView( //构建列表
children: <Widget>[ //列表项
DrawerHeader( //边栏头部
child: Text('头部'), //头部文字
decoration: BoxDecoration( //头部装饰
color: Colors.blue, //背景颜色
),
),
ListTile( //列表项
title: Text( //列表项标题
'列表', //列表项文字
textAlign: TextAlign.right, //文字对齐方式
),
trailing: Icon(Icons.message), //列表小图标
onTap: () {}, //点击动作
),
],
),
)
五、 常用组件
1. 使用和查看组件
可以在VScode或者AndroidStudio中直接查看组件的构造函数
2. 文字组件
style 文字样式
maxLines 行数
overflow 溢出
Text(
'Hello',
style: TextStyle(
fontSize: 40.0,
color: Colors.yellow,
fontWeight: FontWeight.bold
),
maxLines: 3,
overflow: TextOverflow.ellipsis,
),
3. 文字组件
RichText
TextSpan
RichText(
text: TextSpan(
text: '你好',
style: TextStyle(
color: Colors.red
),
children: [
TextSpan(
text: '世界',
style: TextStyle(
color: Colors.blue
)
)
]
),
),
4. 常用布局组件
Column
设置垂直对齐组件
设置主轴对齐方式
设置交叉抽对齐方式
Row
设置水平对齐组件
设置主轴对齐方式
设置交叉轴对齐方式
6. Container
Container
设置padding
设置margin
设置color
设置尺寸 width height
Container(
width: 100.0,
height: 100.0,
color: Colors.red,
padding: EdgeInsets.all(10.0),
margin: EdgeInsets.all(10.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
],
),
)
decoration容器装饰
border属性
分别定义边框效果
统一定义边框效果
Container(
decoration: BoxDecoration(
color: Colors.red,
border: Border(
top: BorderSide(
color: Colors.blue,
width: 3.0,
style: BorderStyle.solid
)
),
border: Border.all(
color: Colors.blue,
width: 3.0,
style: BorderStyle.solid
)
),
child: ...,
)
7. 圆角
borderRadius only 分别定义圆角
borderRadius circular 统一定义圆角
Container(
decoration: BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(10.0),
topRight: ,
bottomLeft: ,
bottomRight: ,
)
borderRadius: BorderRadius.circular(10.0)
),
child: ,
),