|
|
课程目录:
/ _+ c# n/ R7 B8 b A; Y' X" Y( z│ ├─1 Flutter 移动应用:开发准备
1 O' g3 V% `5 U! M│ │ 1 介绍.mp4
& P1 @+ F. W3 a7 h G# H│ │ 2 安装 Flutter SDK(macOS).mp4, s& Z$ c2 k% e, P' z
│ │ 3 配置 iOS 开发环境(macOS).mp4
. o- _! z: m. x4 @8 I│ │ 4 配置 VS Code 代码编辑器.mp4
! P+ y5 L5 u, j" a2 ?9 F│ │ 5 配置 Android 开发环境(macOS).mp4( b; z& @7 |) t+ ^
│ │ 6 检测问题:flutter doctor.mp46 F. c4 W: P+ J9 j7 l, K
│ │ 7 Flutter 在中国地区的特别设置(macOS).mp4
/ Q e Q% G; m$ y8 p# s/ b│ │ 8 创建 Flutter 项目.mp4, i# g! V% O) o
│ │ 9 运行 Flutter 项目(iOS 模拟器).mp4
4 C- s5 z H- P) T) _) _6 p4 ~│ │ 10 在 Android 模拟器上运行 Flutter 项目.mp41 e6 c4 @! O! T2 u8 q& G
│ │ + z2 O* t! G" i4 v- b4 w
│ ├─2 Flutter移动应用:快速起步) o$ ^* a# q1 c9 d' c \
│ │ 1 介绍.mp4
* }( g" j9 o" Y6 |6 J8 H5 n9 p8 a│ │ 2 准备项目.mp4 e y0 \$ H1 d4 z# E
│ │ 3 在屏幕中间显示 “hello”.mp49 U3 d+ R3 y0 C5 G. ^! R
│ │ 4 自定义小部件(Widget).mp4
9 X! |' ?) `# I3 a│ │ 5 文字的样式:TextStyle.mp45 P+ p, `3 ^7 w( W( v: e
│ │ 6 MaterialApp:使用界面组件与定制界面主题.mp4
8 K/ ~% R! U$ z3 [ q6 q│ │ 7 列表:准备数据.mp4
8 @- P+ n8 o! O* b. D ~│ │ 8 列表视图:ListView.builder.mp4
1 i5 a) m8 \, I& ?& r│ │ 9 列表项目.mp4
4 c: L" z0 D! @. I; f9 {8 f│ │
: x- M# S$ b1 B6 a│ ├─3 Flutter 移动应用:界面结构: }1 j* i4 G5 G* @
│ │ 1 介绍.mp4
7 j: z9 k c9 y g1 `$ C- R│ │ 2 准备项目.mp4
& C2 K; ~( d2 }$ x2 S/ y│ │ 3 Material 应用.mp4; d# v$ {6 N# e5 w' h$ K
│ │ 4 AppBar:工具栏上的图标按钮(IconButton).mp43 ?7 G( e. _ C9 I: b" h4 W5 n
│ │ 5 TabBar:用标签形式展示内容.mp4
: |* z! u. d# v│ │ 6 TabBar:自定义标签栏的样式.mp4% h, [$ Z0 g1 L6 u# {2 F- t
│ │ 7 Material:自定义按钮水波纹样式.mp4
# |# H! E6 ~0 U* H) d│ │ 8 Drawer:抽屉(边栏).mp41 X+ ~2 j- M0 n
│ │ 9 Drawer:在抽屉里使用 ListView, DrawerHeader,ListTile.mp4
1 p7 v1 o5 u" t5 _│ │ 10 Drawer:抽屉的打开与关闭.mp4
|$ W# X$ B4 b5 D9 v+ H' n│ │ 11 UserAccountDrawerHeader:抽屉里的用户帐号信息.mp4
+ c$ ] y: A2 H& |3 I) t│ │ 12 用户帐户头部的背景图像.mp4
' o$ B" {2 f2 f% c% s! `2 `│ │ 13 创建 DrawerDemo 小部件.mp4
2 a1 I* _; K% U$ c! o│ │ 14 BottomNavigationBar:底部导航栏.mp4& |! R, E& l0 L; x% o
│ │ 15 BottomNavigationBar:底部导航栏的激活状态.mp4! R0 R; f- y* W/ k* ^
│ │ 16 StatefulWidget:有状态的小部件.mp4
6 M# y0 s1 W" V│ │
& o& C! h% ]9 L5 C9 U/ {2 a│ ├─4 Flutter 移动应用:基础部件
& U; V$ w1 z4 m│ │ 1 介绍.mp40 J# H G+ B& }! M* I+ y8 z0 V
│ │ 2 准备项目.mp4
9 F7 G' |( O! Z│ │ 3 查看小部件的定义.mp4 s5 t, x# Z8 b
│ │ 4 Text:文字与文字样式.mp4! {) O; I# A1 O
│ │ 5 RichText:行内多样式的文字.mp4
5 o: L3 n- J- T1 N│ │ 6 Container:容器.mp4
" p. k& \3 {3 V& S5 \" ?8 c9 X% k) X7 K% N│ │ 7 BoxDecoration:装饰盒子.mp4% A9 J2 f" y/ x& h1 V
│ │ 8 BoxDecoration:边框(border).mp4 `6 ?, \! H/ z( R- `
│ │ 9 BoxDecoration:圆角(borderRadius).mp47 ^) s) `; n" u" a. [: p$ P
│ │ 10 BoxDecoration:阴影(borderShadow).mp4
5 R& l) m2 O1 J( `) }2 p, C3 f│ │ 11 BoxDecoration:形状(shape).mp4
" y1 X: v, q y' _$ d0 X: z│ │ 12 BoxDecoration:渐变(gradient).mp4
, M* v7 Z4 C& N0 l1 \ y│ │ 13 BoxDecoration:背景图像(image).mp4
o/ m) f( P) V0 e: d* s& E│ │ # s6 `& j' _9 ~& z: u% j& \2 B
│ ├─5 Flutter移动应用:布局
7 ]4 s/ H2 H$ U( u│ │ 1 介绍.mp4/ N" m8 j9 w# l
│ │ 2 准备项目.mp4- u9 N, c* K% q0 K: \- O3 C
│ │ 3 创建 LayoutDemo 小部件.mp4) T, e8 x$ h! S& }3 p
│ │ 4 创建可配置的图标徽章(IconBadge)小部件.mp48 L# _6 K4 B4 \8 \
│ │ 5 Row(横排) 与 Column(竖排).mp4
3 L& E# k2 i+ g/ F3 ^8 r* F│ │ 6 mainAxis:主轴.mp4
: ?+ `% D1 g2 y* f5 \! `! O│ │ 7 crossAxis:交叉轴.mp4
" A ` u8 b% m$ ]1 R* o( @│ │ 8 SizedBox:固定尺寸的盒子.mp4
S" N/ `5 i) U% T2 f3 j│ │ 9 Alignment:对齐.mp4
1 G* d: h) S5 O: w│ │ 10 Stack:一摞小部件.mp40 K" g8 B" a' {+ ?
│ │ 11 AspectRatio:宽高比.mp4
. N0 k* S0 g6 I, Q( E: i│ │ 12 ConstrainedBox:带限制的盒子.mp4; y7 D) C: k, ?# `. q( I
│ │
2 X2 G6 O8 R- x3 h" L│ ├─6 Flutter 移动应用:视图, Z, v' y. z! \) y2 N3 y! \
│ │ 1 介绍.mp43 b3 \6 l+ N' `3 L
│ │ 2 升级 Flutter SDK 与项目用的 Packages.mp4
0 ]$ c% Q( r3 ^│ │ 3 准备项目.mp4
* b( E/ t/ d! e$ K: j" G│ │ 4 创建 ViewDemo 小部件.mp4 ], Z- D) S+ q' b7 u \( v
│ │ 5 PageView:页面视图.mp4
9 H' |1 Y: }7 t0 m' A│ │ 6 PageView:页面视图的属性.mp49 N+ {# F: M# w- \
│ │ 7 PageView:用 PageController 调整页面的显示.mp4 ?( t3 X$ c* c2 |- ]
│ │ 8 PageView.builder 按需生成页面.mp4
0 S* x- w3 U- @" a& a│ │ 9 GridView:网格视图(GridView.count).mp4
6 C# u& i; i# w" o│ │ 10 GridView.extent.mp41 e: H, d% P5 z
│ │ 11 GridView.builder 按需生成视图项目.mp4
6 S6 p0 g5 N+ A; z1 i│ │ 9 Z/ s' v7 }9 R. Q6 Y @
│ ├─7 Flutter 移动应用:Sliver# ^- t8 H' n" t5 B4 J$ H6 M
│ │ 1 介绍.mp4+ |4 L/ a; o* _
│ │ 2 准备项目.mp45 f! w7 s8 s; v- b. X8 |
│ │ 3 创建 SliverDemo 小部件.mp4% K2 ]6 l; N: r4 _% Q
│ │ 4 Slivers.mp4% k1 `, u) U( ~3 {- Y! r0 u
│ │ 5 SliverGrid:网格视图.mp4' o3 ]4 ]% v. e- X3 D0 }
│ │ 6 SliverPadding(内边距) 与 SliverSafeArea(安全区).mp4
' b4 Q# M/ o* |; E% G│ │ 7 SliverList:列表视图.mp4 7 {5 b o1 U7 b- [5 Y* w
│ │ 8 SliverAppBar:应用工具栏.mp4# d) @7 P1 f+ _9 |4 N( x, L
│ │ 9 带渐近动画的可伸缩空间.mp4
! |% E6 v$ N) _1 P/ O p+ o│ │ / m2 D" ~7 E2 X% K; ]* s( \1 M' o
│ ├─8 Flutter移动应用:路由9 w5 K: G& }+ Y$ l1 G
│ │ 1 介绍.mp41 z8 X! ^, [/ `0 d
│ │ 2 准备项目.mp4, _2 G2 u: P7 Z( f" m$ ^0 d& \9 G
│ │ 3 VS Code:Flutter 代码片断.mp41 N( n8 h- U9 m4 B; l* i
│ │ 4 一堆路由.mp4
. t' _: ]- W8 w+ K│ │ 5 打开新页面并返回(push 与 pop):准备.mp4
! j. ^4 N4 _6 P# W1 [+ M+ K│ │ 6 打开新页面并返回(push 与 pop):实施.mp4# g/ D. S: W3 t+ K2 G
│ │ 7 带名字的路由( Navigator.pushNamed).mp4
" k( b. e9 q. V│ │ 8 初始路由:initialRoute.mp4. X4 ~9 Z5 @! y0 _9 ^ y* i: c1 |
│ │ 9 InkWell:添加溅墨动画效果.mp4
/ ~( Q, J+ C' I, H2 o│ │ 10 在内容详情页上显示内容.mp4. d* v$ T# n J; g0 c+ P, W# `
│ │ 8 f0 r) `, G$ Y! z# D! `# n
│ ├─9 Flutter 移动应用:表单
+ n) }, _- ^8 m; b│ │ 1 介绍.mp4
% X. d3 w- ~% H# q! D│ │ 2 准备项目.mp4
D- d* r5 ^. r" U" l. m6 M7 p│ │ 3 创建 FormDemo 小部件.mp4
. s8 T5 g0 a8 J# d# C7 Q" R' i& O9 o' G│ │ 4 Theme:定制、使用、重置、覆盖主题.mp4# M; x5 d- g, s/ i9 r1 X: D
│ │ 5 TextField:文本字段.mp4- b" d# Q1 y, O$ f4 X
│ │ 6 TextField:文本字段样式(InputDecoration).mp4* F; i4 R/ h0 G+ L7 o* h
│ │ 7 TextField:监视文本字段的值的变化与提交.mp4
4 I( k, D! E0 M, a│ │ 8 TextField:使用 TextEditingController 监听文本字段变化.mp4
" h) ^. a( R, H+ I│ │ 9 Form:表单.mp44 j, L U: t, _, k7 C+ P6 Y
│ │ 10 Form:保存与获取表单里的数据.mp4& \2 Z- f5 K, k: b5 I
│ │ 11 Form:验证表单里的数据.mp4$ @) x& n% E3 [2 v* v, y0 X
│ │ 12 Form:自动验证.mp4 \$ E8 d* N, f
│ │ 13 SnackBar:在屏幕底部动画弹出提示栏.mp4 ( Q( `6 L, V9 l$ F7 G4 W) J
│ │
5 K. J3 L0 T2 m( l4 L g3 P& I9 e1 {- J│ ├─10 Flutter移动应用:按钮
& t4 z0 ]( E \' ^/ S6 U/ l' ]│ │ 1 介绍.mp4! t, p: m& k2 a ^
│ │ 2 准备项目.mp4
+ _8 {+ N" s+ \2 F5 ~' J│ │ 3 VS Code:自定义代码片断.mp4' Z6 [. z: p! G$ h1 N; n3 U
│ │ 4 准备 Material Components 演示页面.mp4
+ f0 r; ?! |7 Q3 Z1 ^. j│ │ 5 FloatingActionButton:漂浮动作按钮.mp4
; D. }& n; ~! v4 k. z( a8 m. b│ │ 6 BottomAppBar:底部工具栏.mp4
& D; q: {. }# W- L; J0 {- C│ │ 7 创建演示小部件用的页面.mp43 ^; \8 b9 V( G: Y- _, |) H# P
│ │ 8 FlatButton:文字按钮.mp4
2 v- D. b& [0 g3 @) R# Z9 j- M│ │ 9 RaisedButton:按钮.mp4
/ ]0 A7 Z' a; ]8 F. M5 K6 w│ │ 10 按钮主题:颜色、形状.mp49 p- v/ k3 L7 {9 ?( y7 E9 w
│ │ 11 OutlineButton:描边按钮.mp4
! f' l, _- k- M, N- J$ @│ │ 12 按钮容器 Container:有固定宽度的按钮.mp4
/ g) u: H! W. B0 [1 B3 A│ │ 13 按钮容器 Expanded:占满可用宽度的按钮.mp4% \) Y- B: Z* s1 H. u- ]
│ │ 14 按钮容器 ButtonBar:一组带边距的横排显示按钮.mp4
% f" `% J- z2 h6 w5 r. S│ │ 15 整理:把演示放在单独的文件里.mp41 t3 l" x6 ~# n
│ │ 16 准备 PopupMenuButtonDemo.mp4
. B) S% c3 t" C! x9 { h. Q│ │ 17 PopupMenuButton:弹出式菜单按钮.mp4: ?% {: H- B/ D+ z* T! D S: y1 b6 ?
│ │ 5 h6 v6 d' P, p( s
│ ├─11 Flutter 移动应用:输入
/ | |5 {4 `% f. j O0 l8 p0 b0 }│ │ 1 介绍.mp4
3 O& l7 l% B5 \2 W* |% |; E│ │ 2 整理:在演示列表里添加 FormDemo.mp4( T( b- V' w V0 @ e u
│ │ 3 创建用户输入相关的小部件的演示页面.mp48 D! q7 \0 D& r
│ │ 4 Checkbox:复选框.mp4
0 {5 H; H. i/ p/ w9 |- ^& y% q$ J│ │ 5 CheckboxListTile:带标签与图标的复选框.mp49 |6 R& @& h7 W
│ │ 6 Radio:单选按钮.mp4
( i- V' D2 |9 v5 o1 d) p│ │ 7 RadioListTile:带标签与图标的单选按钮.mp4
9 Z5 f- D* G" v2 x3 g│ │ 8 Switch:开关.mp4% P9 `8 @9 `5 c E5 ^' Q* m% M* v9 ^
│ │ 9 SwitchListTile:带标签与图标的开关.mp4/ K$ v/ G/ y& v( D0 S& h
│ │ 10 Slider:滑动选择器.mp4
% G8 h- D/ X" u# z( }8 W' Y5 ~│ │ 11 安装第三方包(演示安装 Intl 包).mp4
* Y2 F9 ^7 N2 o6 t│ │ 12 显示格式化日期.mp4
2 C& ?8 E, B+ u9 S│ │ 13 showDatePicker:选择日期.mp4
( U' C+ `& T A│ │ 14 showDatePicker:获取选择的日期(async).mp4& U$ }" K2 n( ^/ c! T
│ │ 15 showTimePicker:时间选择器.mp4
$ u2 D! P8 _: v3 j0 [│ │ 16 Future:异步程序.mp4# i' {6 _5 S% @
│ │ / w; |/ U! w- v W: j! P
│ ├─12 Flutter 移动应用:对话框4 S% |- i! `, s4 |7 |7 w
│ │ 1 SimpleDialog:显示对话框(showDialog).mp4" e5 d, u( B: u6 s( x4 P
│ │ 2 SimpleDialog:选项(SimpleDialogOption).mp4
2 V+ q( }$ R9 c│ │ 3 SimpleDialog:获取与使用选项的值.mp4: z% x+ ^/ H! Q/ z/ g
│ │ 4 AlertDialog:提示对话框.mp4
& j6 |' w0 e: N" T/ U7 |5 U) i% y│ │ 5 AlertDialog:获取与使用动作的值.mp4
3 I$ `$ }6 `( v& | a/ K│ │ 6 BottomSheet:底部滑动窗口.mp4! i( ?: U+ U& l" J5 [
│ │ 7 BottomSheet:对话框式底部滑动窗口(showModalBottomSheet).mp4) u: r$ g& P/ L7 V1 T. q
│ │ 8 处理使用对话框式底部滑动窗口的数据.mp4
5 }2 C! Z: f5 p│ │ 9 SnackBar:操作提示栏.mp42 c9 u+ L7 N; x+ M! \
│ │ 10 ExpansionPanel:收缩面板.mp45 F: j+ }" j( J* X
│ │ 11 ExpansionPanel:面板的收起与展开.mp4
L+ K0 K& N! b) u: R. ~; q3 }│ │ 12 ExpansionPanel:面板列表项目.mp4
- h' s5 F0 T! Z/ `0 S. C' L│ │
) d: n) q, H8 z. h│ ├─13 Flutter移动应用:MDC
; l" a/ e) o6 u: N3 D1 n│ │ 1 介绍.mp4
- Z, o# Z7 h$ v8 ?: `│ │ 2 升级 Flutter SDK 后屏幕报错(0.8.1).mp47 G- A0 @: g5 ~- Z2 ^" {1 U Z+ c
│ │ 3 Chip:小碎片.mp4! T7 ?; {& K7 G/ x( O5 K( s
│ │ 4 Wrap:换行显示小部件.mp4
# D6 R/ I9 [1 D, T* Z│ │ 5 Divider:分隔符.mp4* ?" Z% [, v& Z
│ │ 6 Chip:带删除功能的小碎片.mp46 a. s0 j* P3 c" x5 ~& ^
│ │ 7 Chip:用列表生成带删除功能的小碎片.mp49 C5 X1 d8 ?: O4 W; L
│ │ 8 ActionChip:动作碎片.mp4* ?5 F5 n5 L5 E
│ │ 9 FilterChip:过滤碎片.mp4
7 h+ x S2 K8 t* }" s( W│ │ 10 ChoiceChip:选择碎片.mp48 \, t; S( D" U/ _* E0 T
│ │ 11 DataTable:数据表格.mp4; x* T" U' B" ]' L, n8 ~( q
│ │ 12 DataTable:用列表生成数据表格.mp4% X( o2 B, L/ C% P2 c; I1 g
│ │ 13 DataTable:数据表格的排序.mp4! t4 o W2 T7 {: N2 O: C( R8 l, ^
│ │ 14 DataTable:选择数据表格行.mp4$ @" S1 d6 M" V1 E: G$ W
│ │ 15 PaginatedDataTable:分页显示表格数据.mp4
! n2 [, x% M$ l& j1 `) m) _5 y│ │ 16 PaginatedDataTable:排序.mp4/ E9 ]! W% Y; {1 @* _
│ │ 17 Card:卡片.mp4
/ g9 c. [9 A- O0 K) D│ │ 18 ClipRRect:圆角(给图像添加圆角效果).mp4
1 T5 z& J) e+ I0 g/ `; B│ │ 19 Stepper:步骤.mp48 K" ?; y5 v3 s, y- L9 K! c$ F
│ │ 20 Stepper:步骤的行为.mp4
0 v- G/ X) D4 |7 j$ m0 L; j│ │ + W4 C0 g3 @+ a8 i0 i
│ ├─14 Flutter 移动应用:状态管理, W$ ~4 \4 ]3 _% @: Z& F2 E4 ? o
│ │ 1 介绍.mp4! u+ U& J0 m+ r Z, r5 I$ O1 U
│ │ 2 准备项目.mp4
. m! g/ X1 M p6 u│ │ 3 创建 StateManagementDemo 小部件.mp4 R, n9 I! \/ s K2 u( ^
│ │ 4 StatelessWidget:无变化状态的小部件.mp4" O+ K7 M' S( V! H; t& S( |& Y: J
│ │ 5 StatefulWidget:带变化状态的小部件.mp47 Z& Q7 [& Y( @" _/ c
│ │ 6 状态管理(由父辈管理状态).mp40 ], s& |8 X0 s) v- b9 p
│ │ 7 从父辈那里传递个回调.mp4
6 y% u5 a7 ^0 k4 j│ │ 8 小部件树:Widget Tree.mp4* l) Z" f6 G$ R4 S. ]
│ │ 9 InheritedWidget:直接把数据传递给需要的小部件.mp4
H# h5 ] [/ I" M5 B! d│ │ 10 创建与使用 InheritedWidget 有效地传递数据给子部件.mp4
! N: p! s) c' s! q, q│ │ 11 ScopedModel:安装与基本用法介绍.mp4
7 N, y1 D6 C9 N│ │ 12 使用 ScopedModel 传递数据.mp4( K5 o+ }3 _* I6 M1 N: }% [& y
│ │
+ r" F* U2 X+ ^% d7 Z# \9 l N│ ├─15 Flutter 移动应用:Stream
6 C$ e, p) Y* U; S& D2 ^. i│ │ 1 介绍.mp4
" K/ F: @, N) |9 k│ │ 2 准备项目.mp4
8 x* ? h4 f/ b, F│ │ 3 创建 StreamDemo.mp4
8 _% V$ U1 i% _; V. l1 f8 G: m│ │ 4 创建与监听 Stream.mp4
0 z8 T" V5 _; ?. s+ e/ n. m│ │ 5 给 Stream 添加一个订阅(subscription).mp4
/ r$ e7 B$ X/ _& `2 R* ]│ │ 6 暂停、恢复、取消监听 Stream.mp4
7 |; T$ X; T9 K; ?│ │ 7 StreamController:控制 Stream.mp4
t5 m. t3 Z2 }│ │ 8 StreamController:使用 Sink 往 Stream 上添加数据.mp4* E) f7 K2 m9 u3 W4 I7 b! H2 X2 p# q
│ │ 9 StreamController:创建可以多次订阅的 Broadcast Streams.mp4
* j% H8 y$ ?6 k8 O) z' K! X q│ │ 10 在界面上显示 Stream 上的数据.mp4& L! d7 c2 I. h# j4 T4 [5 l4 g
│ │ 11 StreamBuilder:根据 Stream 上的数据构建小部件.mp4 [# p7 ]) N8 h6 m0 C6 K! e" a
│ │ 5 d: E# f; L5 Y: z9 m% z. w9 s
│ ├─16 Flutter 移动应用:RxDart# w0 u( w) a3 j) [1 F/ ~
│ │ 1 介绍.mp41 a. j0 u& ?7 \$ G* ?. p
│ │ 2 准备项目.mp4' M9 _& r0 D0 v9 `. s; |' g
│ │ 3 创建 RxDartDemo.mp41 J, ?5 @, [1 u) a6 X1 i9 M, Y
│ │ 4 安装 RxDart 包.mp4
# c( S) C, f) u: f$ b! X│ │ 5 Rx,RxDart,Observable 与 Stream.mp4
! T; r0 a% g* _! M- V4 R0 A Z' d9 T│ │ 6 Observables.mp4
. ?/ e+ }8 q: J% X5 G' W8 l# w% f│ │ 7 创建 Observables 的几种方法.mp4) X7 ]' T$ s0 g3 |
│ │ 8 使用 Subjects 控制 Observables.mp4
3 t, ^( T& ^' _! X) i3 X│ │ 9 BehaviorSubject.mp4
# ~$ F! u2 P* ^$ ?: W! A│ │ 10 ReplaySubject.mp4
/ w% h' B9 i+ c7 A# g8 o% z│ │ 11 准备一个文本框往 Observable 上添加数据.mp41 v( A/ ]7 q5 Z2 P7 F
│ │ 12 RxDart 的数据转换方法(map).mp4
. r! z+ k! U& @; m) D4 w- g& {│ │ 13 where.mp40 }( |2 Q+ y" d# g7 }% e& n5 t
│ │ 14 debounce.mp4! _' ]/ E4 O6 f0 U6 k
│ │ 7 `/ Q8 I- Y# c
│ ├─17 Flutter 移动应用:BLoC( X, n0 N, F# X" f* d. \' q- C
│ │ 1 介绍.mp4
8 h5 v3 r5 U' V# U│ │ 2 准备项目.mp4
& x6 M* _' r" ^* P/ Q( d│ │ 3 创建 BlocDemo.mp4
! h; Y/ {; H' y ?0 r│ │ 4 BLoC:Business Logic Component.mp4- u I0 c0 G4 i* U/ k9 V
│ │ 5 BLoC 应用案例(记数器):准备基本小部件.mp4
/ I9 B( t6 o! u! r# f y) T│ │ 6 使用 InheritedWidget 传递 BLoC.mp4
}% `9 u1 i& Z" A {│ │ 7 创建与使用 BLoC:用 Sink 输入数据.mp47 [: e# F7 i S( s( C
│ │ 8 创建与使用 BLoC:用 Stream 输出数据.mp4) e! r/ F- D, Y$ @
│ │ j, r( X) Q2 i W
│ ├─18 Flutter 移动应用:网络请求7 T! @( o0 p5 a4 B" s' H
│ │ 1 介绍.mp4
; n5 Z: I; U! {$ t& a│ │ 2 准备项目.mp4$ ]# B" A) }1 A0 \" t2 `# N0 e
│ │ 3 创建 HttpDemo.mp4
% x( o3 E3 |! M2 p# j2 h& Q& W│ │ 4 安装 http 包(升级 Flutter SDK).mp4
. C9 U: w6 C4 U; L9 t5 p9 |. Y│ │ 5 使用 http 客户端请求数据.mp4% ^ G3 j/ b7 h: Z4 e
│ │ 6 JSON 转换(dartconvert).mp4
8 P) G) @- f% a. ?│ │ 7 使用 Model 类转换数据:fromJson.mp4
" x" I- ? g- p8 |" e. b│ │ 8 使用 Model 类转换数据:toJson.mp4& B! t5 H4 B6 H. f, [6 c/ m
│ │ 9 使用请求数据:把响应的数据转换成自定义 Dart 对象.mp4
0 B! y s+ f8 s0 t0 J│ │ 10 FutureBuilder:使用 Future 构建小部件.mp4) n3 p7 |7 W) k- m+ m, [+ r o
│ │ ! h& Q# b* K! A% a y
│ ├─19 Flutter 移动应用:动画+ Z% C4 B l/ u
│ │ 1 介绍.mp4) x X" I" B/ E7 w9 T) M
│ │ 2 准备项目.mp4
; N z. w- w7 r5 m4 w6 y7 R│ │ 3 创建 AnimationDemo 小部件.mp4
$ J2 K$ g0 m7 n, f/ b9 N% t8 p│ │ 4 AnimationController:动画控制器.mp4
" E, ^/ [* [% b# a│ │ 5 使用动画的值.mp4
+ ]6 K% |; E! R: M2 f│ │ 6 动画的状态与运行.mp4
1 G6 \' z+ R- Z" X% F7 M+ ]6 O" B0 P│ │ 7 Tween:设置动画范围值(数字、颜色).mp48 {, r$ G) l0 S% u+ b3 r
│ │ 8 Curve:动画曲线.mp4; s O4 O' Q5 G' X
│ │ 9 AnimatedWidget:动画值有变化就自动重建自己的小部件.mp4
/ q$ {; H i7 _6 y$ N, S* b- K2 |! S; w│ │ $ V' g& J0 V# L; ~" a
│ ├─20 Flutter移动应用:国际化; j) {' T3 I5 l
│ │ 1 介绍.mp4
) y5 {+ m( L( E% U5 ~% z) V│ │ 2 准备项目.mp4
, d l6 O! W$ k│ │ 3 创建 I18Demo 小部件.mp44 o% I5 q6 |! V g# ]
│ │ 4 安装与配置 Flutter 应用的国际化.mp4: X; Y5 C) {' C+ n
│ │ 5 配置 iOS 项目使用多种语言.mp49 J d- x. [' R1 S+ h2 i9 l
│ │ 6 演示 Material 组件的多语言.mp4( Y$ }- ~( L7 V2 E V8 V
│ │ 7 寻找 Localizations 小部件.mp4
7 x$ z! ~! p9 }' R│ │ 8 获取与设置语言和地区(理解 Locale 类与 Localizations 小部件).mp4( a. ~$ I# ]) ~1 q. X: a) D# G
│ │ 9 定义本地化资源类.mp4' A* F/ L2 ~) p ~
│ │ 10 加载本地化资源.mp4
3 I1 }: b9 T5 G( B4 i/ |│ │ 11 使用本地化资源.mp4! O+ Q! c% D) c
│ │ 12 Intl:定义需要翻译的信息.mp47 P+ e& U2 x( H6 K8 A. Z
│ │ 13 提取信息模板并翻译信息.mp4
4 D# V# I( ]! d│ │ 14 基于arb 生成 dart 文件.mp4
+ Y% c6 m* H6 y& J│ │ 15 加载与使用本地化信息.mp4
. C0 S- W8 F! v0 [5 |│ │
0 f8 U8 i5 h& z* C" }& F│ ├─21.Flutter移动应用:测试
6 O- r0 r4 q4 M6 b' z& @9 c│ │ 1.介绍.mp43 K' ^2 y7 r5 b" i: V' B0 j4 I
│ │ 2.准备项目.mp4
. D1 B+ u6 l/ V│ │ 3.Unittesting:单元测试.mp4
- M8 y$ [2 x# H, ^% ^│ │ 4.运行测试.mp4; X* Y! [1 H5 C8 s
│ │ 5.WidgetTesting:测试小部件.mp4; L: L& R* y1 C+ E ]
│ │ 6.找到并验证小部件(Finder与Matcher的用法).mp40 w5 Q9 `+ g% W7 Y! C2 m( G$ l$ G
│ │ 7.测试小部件的点按行为.mp4
; j' f4 q: w5 S, A9 l2 x+ G2 h6 ~│ │ 8.Integrationtesting:集成测试.mp4
0 I: L" n2 G/ z: T" _( A2 z│ │ 9.编写与运行集成测试.mp4
) n* Y- c Y4 B: D│ └─源码9 x' m0 e b. q9 P q0 ]
│ ninghao_flutter-master.zip
( s: ^# E1 U- L- l$ J, U* i9 Z" @0 ?7 r* S# ~* n
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|