Skip to content

Commit 926dd0b

Browse files
author
zzq
committed
yoyiyi
1 parent dc4b221 commit 926dd0b

File tree

1 file changed

+164
-0
lines changed

1 file changed

+164
-0
lines changed
Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
# 第一章 起步
2+
3+
跨平台技术:
4+
5+
- H5 + 原生(Cordova、Ionic、微信小程序)
6+
- JS + 原生渲染 (RN、Weex、快应用)
7+
- 自绘UI + 原生(QT for mobile、Flutter)
8+
9+
# 第二章 第一个 Flutter 应用
10+
11+
## 路由管理
12+
13+
路由管理:管理页面跳转,也被称为导航管理。
14+
15+
```dart
16+
//导航到新路由
17+
Navigator.push( context,
18+
MaterialPageRoute(builder: (context) {
19+
return NewRoute();
20+
}));
21+
```
22+
23+
Navigator:路由管理,入栈和出栈
24+
25+
```dart
26+
Future push(BuildContext context, Route route) //入栈,打开新的页面
27+
bool pop(BuildContext context, [ result ]) //出栈
28+
```
29+
30+
### 路由传值
31+
32+
```dart
33+
//跳转
34+
RaisedButton(
35+
onPressed: () => Navigator.pop(context, "我是返回值"),
36+
child: Text("返回"),
37+
)
38+
39+
//返回
40+
var result = await Navigator.push(
41+
context,
42+
MaterialPageRoute(
43+
builder: (context) {
44+
return TipRoute(
45+
// 路由参数
46+
text: "我是提示xxxx",
47+
);
48+
},
49+
),
50+
);
51+
```
52+
53+
### 命名路由
54+
55+
```dart
56+
MaterialApp(
57+
//注册路由表
58+
routes:{
59+
"new_page":(context) => NewRoute(),
60+
"/":(context) => MyHomePage(title: 'Flutter Demo Home Page'), //注册首页路由
61+
}
62+
);
63+
64+
//跳转
65+
onPressed: () {
66+
Navigator.pushNamed(context, "new_page");
67+
},
68+
69+
//参数
70+
Navigator.of(context).pushNamed("new_page", arguments: "hi");
71+
//获取参数
72+
class NewRoute extends StatelessWidget {
73+
@override
74+
Widget build(BuildContext context) {
75+
//获取路由参数
76+
var args=ModalRoute.of(context).settings.arguments;
77+
}
78+
}
79+
```
80+
81+
通过`onGenerateRoute`做一些全局的路由跳转前置处理逻辑。
82+
83+
## 资源管理
84+
85+
资源管理:assets包括静态数据(例如JSON文件)、配置文件、图标和图片(JPEG,WebP,GIF,动画WebP / GIF,PNG,BMP和WBMP)。
86+
87+
```dart
88+
flutter:
89+
assets:
90+
- assets/my_icon.png
91+
```
92+
93+
加载图片
94+
95+
```dart
96+
new AssetImage('icons/heart.png', package: 'my_icons')
97+
new Image.asset('icons/heart.png', package: 'my_icons')
98+
```
99+
100+
# 第三章 基础组件
101+
102+
Flutter 中几乎所有的对象都是 Widget。
103+
104+
Widget:描述一个 UI 元素的**配置数据**
105+
106+
Element:显示元素,一个 Widget 可以对应多个 Element。
107+
108+
StatelessWidget:无状态
109+
110+
StatefulWidget:有状态
111+
112+
113+
114+
生命周期:
115+
116+
* initState(): Widget 第一次插入到 Widget 树时调用。
117+
118+
* didChangeDependencies():State 对象的依赖发生变化时会被调用。
119+
120+
* build
121+
122+
* 在调用`initState()`之后。
123+
124+
* 在调用`didUpdateWidget()`之后。
125+
* 在调用`setState()`之后。
126+
* 在调用`didChangeDependencies()`之后。
127+
* 在State对象从树中一个位置移除后(会调用deactivate)又重新插入到树的其它位置之后。
128+
129+
* reassemble():调试,热重载(hot reload)时会被调用。
130+
131+
* didUpdateWidget():Widget.canUpdate、
132+
133+
* deactivate():State对象从树中被移除时。
134+
135+
* dispose():永久移除
136+
137+
### 获取 State 对象
138+
139+
```dart
140+
// 查找父级最近的Scaffold对应的ScaffoldState对象
141+
ScaffoldState _state = context.findAncestorStateOfType<ScaffoldState>();
142+
143+
//自己暴露
144+
145+
146+
//通过GlobalKey
147+
//定义一个globalKey, 由于GlobalKey要保持全局唯一性,我们使用静态变量存储
148+
static GlobalKey<ScaffoldState> _globalKey= GlobalKey();
149+
...
150+
Scaffold(
151+
key: _globalKey , //设置key
152+
...
153+
)
154+
_globalKey.currentState.openDrawer()
155+
```
156+
157+
158+
159+
160+
161+
162+
163+
164+

0 commit comments

Comments
 (0)