|
|
课程目录:. Y! S+ L8 v* [* w2 T/ G
│ ├─1 Flutter 移动应用:开发准备$ Y& @; Q. E& _2 M5 G/ s6 }
│ │ 1 介绍.mp4) M3 J2 ^; O* R/ h) F
│ │ 2 安装 Flutter SDK(macOS).mp47 G% K& u0 j+ K' V0 h. s
│ │ 3 配置 iOS 开发环境(macOS).mp4
9 G" h* P/ l& r: H7 A│ │ 4 配置 VS Code 代码编辑器.mp4
2 d' I4 Q7 _% p1 i( i( n' S│ │ 5 配置 Android 开发环境(macOS).mp4- h( f3 U% d+ A* A! \
│ │ 6 检测问题:flutter doctor.mp4
7 t6 d# ^1 g4 k# t( ^1 N│ │ 7 Flutter 在中国地区的特别设置(macOS).mp44 [! E* S- p% T0 Q" _ H4 K
│ │ 8 创建 Flutter 项目.mp4
* w6 K* v. O+ @. R/ B1 w, c│ │ 9 运行 Flutter 项目(iOS 模拟器).mp40 R- h; ?! z. N
│ │ 10 在 Android 模拟器上运行 Flutter 项目.mp42 t8 Z w* o7 L; t$ O$ A
│ │ . \4 |3 W; k( t8 g
│ ├─2 Flutter移动应用:快速起步
/ u2 t7 O1 N: R7 r+ | `: \2 s│ │ 1 介绍.mp47 w+ u( v2 z- [) b/ x3 w
│ │ 2 准备项目.mp40 S% _+ L& B. `- j# Z
│ │ 3 在屏幕中间显示 “hello”.mp4
5 i) [4 X! _( `+ _│ │ 4 自定义小部件(Widget).mp4$ P* d( p, o' z' k. W
│ │ 5 文字的样式:TextStyle.mp4; J0 V& @9 F' x( F3 O
│ │ 6 MaterialApp:使用界面组件与定制界面主题.mp40 B/ [: b ~1 o) f# h4 ^
│ │ 7 列表:准备数据.mp4
: J9 }9 m' N( _│ │ 8 列表视图:ListView.builder.mp4
. u1 @# S @2 p# o$ v4 ]2 T│ │ 9 列表项目.mp44 ` t$ I5 x+ u; W4 a/ c1 T3 `0 Q
│ │ 7 Q( R$ j/ s: W! d
│ ├─3 Flutter 移动应用:界面结构
_, d$ v7 H3 ^1 d. @│ │ 1 介绍.mp4
7 S5 r7 {9 B0 H+ u6 P% K$ T│ │ 2 准备项目.mp4
2 v3 Y, |6 n& i+ O) J( I& N# S- T" {│ │ 3 Material 应用.mp4$ C. k# {9 P! G( _2 I4 [1 P5 O
│ │ 4 AppBar:工具栏上的图标按钮(IconButton).mp43 B* Q) o; c8 P9 t7 {( |0 k
│ │ 5 TabBar:用标签形式展示内容.mp47 ^( d F( }4 p0 [' e" _
│ │ 6 TabBar:自定义标签栏的样式.mp4
: a: Y: ~+ w- t0 e( \4 v│ │ 7 Material:自定义按钮水波纹样式.mp4
( |% T! i: j0 N3 k! ]) q│ │ 8 Drawer:抽屉(边栏).mp4
- B, K3 \- w% t6 b( h│ │ 9 Drawer:在抽屉里使用 ListView, DrawerHeader,ListTile.mp4
/ x7 u) N0 Q. ?$ V, i│ │ 10 Drawer:抽屉的打开与关闭.mp43 r' e9 i! d3 I e! S, P3 X/ t
│ │ 11 UserAccountDrawerHeader:抽屉里的用户帐号信息.mp43 n3 K9 F$ R5 x
│ │ 12 用户帐户头部的背景图像.mp4
# e8 S6 D8 Q2 j2 T+ z│ │ 13 创建 DrawerDemo 小部件.mp4
) h7 q+ M+ U; p│ │ 14 BottomNavigationBar:底部导航栏.mp4
- Z. Y$ t! A9 }8 J# V│ │ 15 BottomNavigationBar:底部导航栏的激活状态.mp4, R7 N+ N) O3 A9 k9 O) k. [
│ │ 16 StatefulWidget:有状态的小部件.mp4
; Q: Y0 d9 ^ d. y# b& w2 p│ │ 5 T1 q4 a; \/ n- } D p& k( ]
│ ├─4 Flutter 移动应用:基础部件
- w; m, H/ e% a) K- x# c4 }│ │ 1 介绍.mp4* y$ w* X$ [2 T5 p7 A
│ │ 2 准备项目.mp4/ r8 Q V: r6 K% t. H8 v! ~: v
│ │ 3 查看小部件的定义.mp43 k) N2 R O; W$ H4 V2 Q( b3 a
│ │ 4 Text:文字与文字样式.mp4/ Q2 Z% @4 J. U) O
│ │ 5 RichText:行内多样式的文字.mp46 j) X, ~% B e# U
│ │ 6 Container:容器.mp4, w. X' }1 R$ a) S3 q. C# n
│ │ 7 BoxDecoration:装饰盒子.mp46 S! j+ v( D. I3 H
│ │ 8 BoxDecoration:边框(border).mp4 `
+ I3 e- z, ^7 O4 |) B& Z0 C│ │ 9 BoxDecoration:圆角(borderRadius).mp4
2 L( k2 r; O$ N& J' g│ │ 10 BoxDecoration:阴影(borderShadow).mp47 r$ ]6 ~2 }9 E7 M W, b; m
│ │ 11 BoxDecoration:形状(shape).mp4
$ c4 @/ g% j/ X% L4 q│ │ 12 BoxDecoration:渐变(gradient).mp4+ ?/ e, P( }! I- E, h& m
│ │ 13 BoxDecoration:背景图像(image).mp4
. A7 E' A; x$ _: ~│ │ : y& }3 Q, S3 \5 w# c
│ ├─5 Flutter移动应用:布局
2 L& N" ]. k! m4 ^; X: F" D│ │ 1 介绍.mp4
, U: c9 i) b( n" {% r5 F│ │ 2 准备项目.mp40 K( D) M4 K9 S+ J8 T9 p+ ~
│ │ 3 创建 LayoutDemo 小部件.mp4; `: M$ m* I* f( f
│ │ 4 创建可配置的图标徽章(IconBadge)小部件.mp44 ` X, M: u' ?9 X, u4 _5 V
│ │ 5 Row(横排) 与 Column(竖排).mp4
5 I& x- H) v, |1 v, I│ │ 6 mainAxis:主轴.mp4
' \$ |: j$ _1 h7 k1 I! @│ │ 7 crossAxis:交叉轴.mp45 U, V' `2 O6 L8 A
│ │ 8 SizedBox:固定尺寸的盒子.mp4
; j# B K% m" {; a│ │ 9 Alignment:对齐.mp4 O$ ~2 R4 g" d$ N% x% B: v; ?' Q n" j
│ │ 10 Stack:一摞小部件.mp46 P9 y; \* y3 X$ i- N' v
│ │ 11 AspectRatio:宽高比.mp4$ {. |8 k0 ?* X# D8 I+ C
│ │ 12 ConstrainedBox:带限制的盒子.mp4& R* I. ?. h8 Q/ F1 v k) U
│ │ 9 i* S' h/ W# J" H8 W, s0 U
│ ├─6 Flutter 移动应用:视图
4 C. s+ d8 F5 Q│ │ 1 介绍.mp42 a& C" i6 T9 t7 ^! M+ l% Y$ _
│ │ 2 升级 Flutter SDK 与项目用的 Packages.mp4+ S* \3 K s& w+ q
│ │ 3 准备项目.mp4" y( W) ` o* F2 K( X
│ │ 4 创建 ViewDemo 小部件.mp44 V* Q8 E G2 z
│ │ 5 PageView:页面视图.mp45 ^2 ?( D& P4 \+ L! \; _
│ │ 6 PageView:页面视图的属性.mp4
( Z7 V7 j5 a2 s# e$ R8 d│ │ 7 PageView:用 PageController 调整页面的显示.mp4
+ O- a) q o0 E# G* A0 w│ │ 8 PageView.builder 按需生成页面.mp4
{- ?4 K7 F% J3 d3 d8 F7 x. l T│ │ 9 GridView:网格视图(GridView.count).mp4- P; n% R G; m' W; I/ L
│ │ 10 GridView.extent.mp4
4 U% A3 K8 |, |7 o- p) e│ │ 11 GridView.builder 按需生成视图项目.mp4+ h0 Q8 B1 p4 s& p7 G9 P3 A
│ │ % b& p7 E& n' N" `
│ ├─7 Flutter 移动应用:Sliver
7 q! f/ q. P( v( b" F│ │ 1 介绍.mp4
9 C# v4 S( G& \- t│ │ 2 准备项目.mp4; I5 q! ^9 h3 p1 {6 I8 ^: |6 c
│ │ 3 创建 SliverDemo 小部件.mp4
' C# r Q& `/ G* T ~│ │ 4 Slivers.mp4
5 l% [3 G6 P& C* F' G8 k1 ?% `│ │ 5 SliverGrid:网格视图.mp4
- h% B! e& t: P4 I│ │ 6 SliverPadding(内边距) 与 SliverSafeArea(安全区).mp4) |7 t4 P' b( o. m* j! p
│ │ 7 SliverList:列表视图.mp4
/ T' N2 H6 D& [. u4 ~│ │ 8 SliverAppBar:应用工具栏.mp4
) T9 a) X$ X3 p7 E1 x│ │ 9 带渐近动画的可伸缩空间.mp4
/ M! M- n4 g; @3 t5 e% E) c5 i│ │ ' W2 L- u+ R2 {7 a( q5 T
│ ├─8 Flutter移动应用:路由
1 d) k0 r3 a6 w0 c7 M2 m│ │ 1 介绍.mp42 i- h$ d+ x' c$ h6 Y2 h* v
│ │ 2 准备项目.mp4
$ I$ K2 G8 X) W- D! ]- T6 x4 f│ │ 3 VS Code:Flutter 代码片断.mp4& q& d' h! I, S* w+ I
│ │ 4 一堆路由.mp4, s ]* }3 R& d, J- A
│ │ 5 打开新页面并返回(push 与 pop):准备.mp49 ?) x9 p9 D0 T$ E) v
│ │ 6 打开新页面并返回(push 与 pop):实施.mp4
4 y# }$ s) I1 T w8 e│ │ 7 带名字的路由( Navigator.pushNamed).mp43 _' d! i- c9 C
│ │ 8 初始路由:initialRoute.mp4, d* ]. c6 D) W3 Y- X
│ │ 9 InkWell:添加溅墨动画效果.mp4' @; ]+ q& G- {- f! i
│ │ 10 在内容详情页上显示内容.mp4
$ d! b* q! }/ f% d( R5 p" b. I$ D│ │ 3 V; f3 J' l# N6 a
│ ├─9 Flutter 移动应用:表单
9 l( C6 n" i4 d0 C) n│ │ 1 介绍.mp4
# f V) Q) D# m9 G. U: U) k; |│ │ 2 准备项目.mp4
2 G% \ A+ r& M│ │ 3 创建 FormDemo 小部件.mp4
8 |' K. a1 _2 d; l9 k+ C2 M+ [│ │ 4 Theme:定制、使用、重置、覆盖主题.mp44 G9 Q) v' H- T
│ │ 5 TextField:文本字段.mp4
+ Y1 f3 q9 S! s│ │ 6 TextField:文本字段样式(InputDecoration).mp4
3 n# M$ W& B% a, m% g│ │ 7 TextField:监视文本字段的值的变化与提交.mp4/ i+ R) D4 d0 j5 U7 m' \
│ │ 8 TextField:使用 TextEditingController 监听文本字段变化.mp4
9 J0 U+ c3 {6 t5 q- r9 n n│ │ 9 Form:表单.mp4
5 l e4 N) f, T2 ^│ │ 10 Form:保存与获取表单里的数据.mp4
) R# F6 M/ g. z2 c6 D│ │ 11 Form:验证表单里的数据.mp4
2 | q! w' I6 f& ~% ~│ │ 12 Form:自动验证.mp4
_- q' S* f: L" F7 Y% ?│ │ 13 SnackBar:在屏幕底部动画弹出提示栏.mp4
) w+ e+ L+ \4 O+ y4 f7 E│ │ 4 f! [5 N [+ t( ]
│ ├─10 Flutter移动应用:按钮
2 M* B9 d- v, n; C: i& j9 V4 {) y+ f│ │ 1 介绍.mp4/ i$ q5 u3 F* I& c" \( Q4 a
│ │ 2 准备项目.mp4
9 m4 b: o6 o9 [! e" |% _) m* Q│ │ 3 VS Code:自定义代码片断.mp4
8 v$ r( T* |7 y$ k9 o+ j│ │ 4 准备 Material Components 演示页面.mp4
6 q; V& J9 P6 ]1 W+ M│ │ 5 FloatingActionButton:漂浮动作按钮.mp4
. q% Y; ]" ?" w: I│ │ 6 BottomAppBar:底部工具栏.mp4; l4 ^- p. ?7 n* G
│ │ 7 创建演示小部件用的页面.mp47 N6 f- H" h1 _0 p
│ │ 8 FlatButton:文字按钮.mp42 A5 F/ H- G. v K9 I
│ │ 9 RaisedButton:按钮.mp4
2 Q: X$ k1 T. W1 A) }4 }* M3 {: K7 Q7 q│ │ 10 按钮主题:颜色、形状.mp4# w/ E4 o' M) g
│ │ 11 OutlineButton:描边按钮.mp4, s4 Y$ s+ c v, m) y' Z' [& Z9 L N
│ │ 12 按钮容器 Container:有固定宽度的按钮.mp4
7 q& M/ O1 E5 @/ v) k7 T s8 @│ │ 13 按钮容器 Expanded:占满可用宽度的按钮.mp4; s1 F4 k8 S5 z" a0 a
│ │ 14 按钮容器 ButtonBar:一组带边距的横排显示按钮.mp4) E* M1 I! U5 q1 t
│ │ 15 整理:把演示放在单独的文件里.mp4
( j2 O: I# a+ E% A( |│ │ 16 准备 PopupMenuButtonDemo.mp4
8 ^0 \9 u5 w4 M│ │ 17 PopupMenuButton:弹出式菜单按钮.mp4$ {: o7 V4 m* W# m0 i( g# _
│ │ . F' i5 `8 ]) c$ Q7 U& J6 u
│ ├─11 Flutter 移动应用:输入+ z& W# N! k' I$ d$ |! u
│ │ 1 介绍.mp4
/ H! m1 [. G$ K2 f; b│ │ 2 整理:在演示列表里添加 FormDemo.mp43 p8 L' {+ }" h0 L: D% S
│ │ 3 创建用户输入相关的小部件的演示页面.mp4
( w$ T9 H4 I/ D; j7 }$ Q│ │ 4 Checkbox:复选框.mp4
0 i/ G* [7 S0 l│ │ 5 CheckboxListTile:带标签与图标的复选框.mp4
: z( B! [. M r+ r' f7 @. g! T│ │ 6 Radio:单选按钮.mp4
* D+ R+ z- _+ n9 @" x: N│ │ 7 RadioListTile:带标签与图标的单选按钮.mp4
3 ?4 l+ o! @4 V0 a' _3 \│ │ 8 Switch:开关.mp4
& b- s# F+ I* L( r1 p: l* Y: z6 G│ │ 9 SwitchListTile:带标签与图标的开关.mp4' ^ s/ B F) m/ u# A' l
│ │ 10 Slider:滑动选择器.mp4
; G# _- V8 ?% N9 P* V│ │ 11 安装第三方包(演示安装 Intl 包).mp4
0 L6 W. P: y- z/ ]9 w1 P│ │ 12 显示格式化日期.mp4& [5 L% l( u9 y% @8 e% V7 M
│ │ 13 showDatePicker:选择日期.mp4- ~( W( H' A4 o! M+ |& r
│ │ 14 showDatePicker:获取选择的日期(async).mp4* S- Y) C; Y( b" J, O# V
│ │ 15 showTimePicker:时间选择器.mp4- r& v3 e& g+ ~3 Q
│ │ 16 Future:异步程序.mp4" I" j8 G2 \3 ^
│ │
/ x6 S$ b" J0 W│ ├─12 Flutter 移动应用:对话框+ I% S0 }! A% ?0 D
│ │ 1 SimpleDialog:显示对话框(showDialog).mp4
' B" X# n3 E3 \$ s1 I+ [# u ?│ │ 2 SimpleDialog:选项(SimpleDialogOption).mp47 f) e7 v) ]% j8 l# Y
│ │ 3 SimpleDialog:获取与使用选项的值.mp4
9 W# ?; k+ y+ Z│ │ 4 AlertDialog:提示对话框.mp4
. o2 w/ p4 r% M' e% K│ │ 5 AlertDialog:获取与使用动作的值.mp4
# b1 a, K( |0 Z3 Y6 L$ Y) U│ │ 6 BottomSheet:底部滑动窗口.mp4
& O6 E7 Q5 r$ c- T2 t│ │ 7 BottomSheet:对话框式底部滑动窗口(showModalBottomSheet).mp4
, t6 v; I7 S- Z3 r' c# [) Q│ │ 8 处理使用对话框式底部滑动窗口的数据.mp4
7 v2 \" i: O6 R! X( F% ?│ │ 9 SnackBar:操作提示栏.mp47 v! X' N" t0 R+ O7 z
│ │ 10 ExpansionPanel:收缩面板.mp41 d6 \) @9 T4 m
│ │ 11 ExpansionPanel:面板的收起与展开.mp4
' b/ i5 t5 b9 D2 N4 {6 T$ q│ │ 12 ExpansionPanel:面板列表项目.mp4
n/ t: D ?7 {│ │
& v# V% r6 c9 k! ]5 F: u( C│ ├─13 Flutter移动应用:MDC
+ D0 q1 T# Y& d. W( D7 u│ │ 1 介绍.mp4
$ [$ p; M, ]. t3 Z: Y& `│ │ 2 升级 Flutter SDK 后屏幕报错(0.8.1).mp4" |/ Z/ U! U( `, \1 i
│ │ 3 Chip:小碎片.mp4) ?9 ^* L& W+ v1 Q
│ │ 4 Wrap:换行显示小部件.mp4/ |! j1 B0 l) z! s; z
│ │ 5 Divider:分隔符.mp4
3 H% ^/ u/ ]% l+ ^" C m│ │ 6 Chip:带删除功能的小碎片.mp4, a9 Y% a+ k4 a
│ │ 7 Chip:用列表生成带删除功能的小碎片.mp4
+ s5 R& F4 U% c( Z+ d7 H! a- F+ p, N│ │ 8 ActionChip:动作碎片.mp4
% s! P) ]2 h+ L m: ^% I2 v│ │ 9 FilterChip:过滤碎片.mp4
2 L1 a2 I! d) o│ │ 10 ChoiceChip:选择碎片.mp4+ R6 Q1 v' C+ X' L8 r I1 ^% }
│ │ 11 DataTable:数据表格.mp4- w/ B) l- _1 ?
│ │ 12 DataTable:用列表生成数据表格.mp4* M& c$ F- J, T% l8 K7 }! h. `
│ │ 13 DataTable:数据表格的排序.mp4
5 e$ A* _6 [4 R8 _" }* K- B, M│ │ 14 DataTable:选择数据表格行.mp4% m6 ]/ V+ f6 F3 \. A5 L V
│ │ 15 PaginatedDataTable:分页显示表格数据.mp4
% n: c) f4 G; W" O1 R1 q│ │ 16 PaginatedDataTable:排序.mp4" Y- t, |6 r1 x6 A, p( a6 X
│ │ 17 Card:卡片.mp4; ` N+ X* C- c" p1 V G, z
│ │ 18 ClipRRect:圆角(给图像添加圆角效果).mp4
5 W6 [ c8 f5 t1 D& y! t│ │ 19 Stepper:步骤.mp4, X/ f5 N+ k1 I4 ~8 {$ J# u6 q( H
│ │ 20 Stepper:步骤的行为.mp4
d& D/ m% z+ Q& ?" b│ │
$ L: J9 ]- _/ x, }9 `* S0 W- d2 w│ ├─14 Flutter 移动应用:状态管理
C" C( ]) e+ y* t+ D# T( I: i│ │ 1 介绍.mp47 y' ~( D5 Z0 i- z, N' U
│ │ 2 准备项目.mp4
: v3 c! d/ J9 r│ │ 3 创建 StateManagementDemo 小部件.mp41 y- X+ U2 D% N' e# n
│ │ 4 StatelessWidget:无变化状态的小部件.mp40 Y2 l, ^& M' z" q+ w! P
│ │ 5 StatefulWidget:带变化状态的小部件.mp4
$ c# ^- j4 m( x│ │ 6 状态管理(由父辈管理状态).mp41 E8 p! [; o! i+ K
│ │ 7 从父辈那里传递个回调.mp4
7 S* D9 P# I- {9 [& m. L: C- i│ │ 8 小部件树:Widget Tree.mp4! z& m1 j; H. g3 k' |+ f' ]* A
│ │ 9 InheritedWidget:直接把数据传递给需要的小部件.mp4% B+ `6 p( l0 D) L
│ │ 10 创建与使用 InheritedWidget 有效地传递数据给子部件.mp4 7 C1 t( l9 _7 I1 {# H9 ]
│ │ 11 ScopedModel:安装与基本用法介绍.mp4
) H0 p7 ?, }& n& T1 V7 i9 [│ │ 12 使用 ScopedModel 传递数据.mp4
V8 T6 \" c& }! u1 l│ │ 3 g+ r. S% a- {4 h( l+ g1 J
│ ├─15 Flutter 移动应用:Stream
2 E# [$ j5 W- N8 I; r; b" k$ W│ │ 1 介绍.mp4
6 t- `) _' N3 z. D c' u5 i; m│ │ 2 准备项目.mp4) r% e. n6 b5 h6 P4 B# {
│ │ 3 创建 StreamDemo.mp4* q9 j8 u& }* v$ u
│ │ 4 创建与监听 Stream.mp4
9 q2 S7 P! H8 s7 ]1 g7 N- I│ │ 5 给 Stream 添加一个订阅(subscription).mp4
1 _# K0 P$ P, v& g& r) X│ │ 6 暂停、恢复、取消监听 Stream.mp4$ \1 d8 ?# ~- r! p
│ │ 7 StreamController:控制 Stream.mp4/ Y! j! h- K6 s- P
│ │ 8 StreamController:使用 Sink 往 Stream 上添加数据.mp43 ], R1 q+ r! R; F
│ │ 9 StreamController:创建可以多次订阅的 Broadcast Streams.mp4
6 m( a3 W+ P2 i U7 R4 ]6 D│ │ 10 在界面上显示 Stream 上的数据.mp4
- ?; s- }7 H% z. `6 h# [│ │ 11 StreamBuilder:根据 Stream 上的数据构建小部件.mp4
, | {, ]* {& T0 _4 n- u3 S% e( t; u│ │ & L; H' w% }+ l: x3 C/ O
│ ├─16 Flutter 移动应用:RxDart; J: e4 U7 E" I5 O
│ │ 1 介绍.mp4
q. N1 ]/ L7 W8 {- O2 @│ │ 2 准备项目.mp44 ?/ }7 H, R. `# |2 d" m
│ │ 3 创建 RxDartDemo.mp4
# G* T6 E0 e( H. x6 o│ │ 4 安装 RxDart 包.mp41 P* M/ g% P+ l4 y: S
│ │ 5 Rx,RxDart,Observable 与 Stream.mp41 D0 Y# ~2 X1 n: E; U7 f( I2 v
│ │ 6 Observables.mp4
2 M9 U& o d- C( G, e( U│ │ 7 创建 Observables 的几种方法.mp4
0 s7 e* G; B$ X# m│ │ 8 使用 Subjects 控制 Observables.mp4
. B4 ~3 R4 f7 O; I/ O. ]; {│ │ 9 BehaviorSubject.mp4
5 F' d# ?/ z3 f+ z, j│ │ 10 ReplaySubject.mp4
b3 |: D/ ?) S! P│ │ 11 准备一个文本框往 Observable 上添加数据.mp4
- G# d! o6 ?1 C0 [- {│ │ 12 RxDart 的数据转换方法(map).mp41 d( b2 h/ n& ]3 \
│ │ 13 where.mp4$ ], z) W7 I6 Y. W3 F3 G6 L1 Z
│ │ 14 debounce.mp4* D; E. Q5 {$ R8 c% R+ ~+ [
│ │
) D7 c$ ]( V5 K│ ├─17 Flutter 移动应用:BLoC( b5 h5 C. Q- `8 p: `$ D" d7 c+ p
│ │ 1 介绍.mp4
$ }+ Z6 B/ {* g8 w& e" s) e│ │ 2 准备项目.mp4
( p* m9 E5 m( Z6 c. |7 _* U1 O│ │ 3 创建 BlocDemo.mp4
! i9 R% ^/ i) t% |│ │ 4 BLoC:Business Logic Component.mp4
3 ^0 }; u$ a' b# T/ I│ │ 5 BLoC 应用案例(记数器):准备基本小部件.mp4
' x4 [2 J$ m S. `+ X│ │ 6 使用 InheritedWidget 传递 BLoC.mp4- i- c9 s' ]2 r9 Y8 Y1 I% T* ]
│ │ 7 创建与使用 BLoC:用 Sink 输入数据.mp4
/ v# B9 U$ `; \) s+ G. u│ │ 8 创建与使用 BLoC:用 Stream 输出数据.mp4
2 o3 [ E# G' H0 _$ M; p& E3 y. M│ │
0 q2 U* c% {# i8 e7 z│ ├─18 Flutter 移动应用:网络请求. r; S1 Q" Q& j0 K) w: q
│ │ 1 介绍.mp4
, z' e& m5 G3 _8 h$ `. l│ │ 2 准备项目.mp4
+ ^3 o$ v6 U( ?3 U$ y│ │ 3 创建 HttpDemo.mp4
' I4 e% W5 Z" C│ │ 4 安装 http 包(升级 Flutter SDK).mp4" }* Q' t8 H/ z
│ │ 5 使用 http 客户端请求数据.mp4# s$ U2 Q {$ K5 \4 d
│ │ 6 JSON 转换(dartconvert).mp49 k/ B( Q; S; W+ J
│ │ 7 使用 Model 类转换数据:fromJson.mp4
0 g8 ~1 _) l+ ^4 Z$ y i3 z│ │ 8 使用 Model 类转换数据:toJson.mp4
7 x: K/ R& _+ @ N' G) W│ │ 9 使用请求数据:把响应的数据转换成自定义 Dart 对象.mp45 p Q M1 W, j/ S8 R( h* a
│ │ 10 FutureBuilder:使用 Future 构建小部件.mp4; b* b/ v/ Q# `3 V8 E* v/ c Z$ {' z7 P9 A
│ │
. S- _6 Q8 j( k& w) g5 ^│ ├─19 Flutter 移动应用:动画+ q& V% W# Q$ N$ `+ }) `' r/ t
│ │ 1 介绍.mp4" g, K; J/ n1 _
│ │ 2 准备项目.mp49 L$ o( W9 t0 t( Y( c+ a& V
│ │ 3 创建 AnimationDemo 小部件.mp4
, P% \( c' G5 ~! z│ │ 4 AnimationController:动画控制器.mp4! N' g& [) t5 }- r y2 I2 Z
│ │ 5 使用动画的值.mp4
3 j+ D! R& Q9 G" U& J│ │ 6 动画的状态与运行.mp4
& P: l+ e' F! g' a9 r│ │ 7 Tween:设置动画范围值(数字、颜色).mp44 S4 |: g& Z& {1 ^5 U ], H
│ │ 8 Curve:动画曲线.mp4
3 N- N9 I; Y. A& H" J) H) G│ │ 9 AnimatedWidget:动画值有变化就自动重建自己的小部件.mp4/ {) \6 S7 n" D4 N! x1 u' l
│ │
6 c8 m$ i) v2 F│ ├─20 Flutter移动应用:国际化
5 p0 |* Q/ c3 m: G% Q│ │ 1 介绍.mp4
* t% R1 a2 w4 l G, I│ │ 2 准备项目.mp4& g7 B2 C% |' P9 a7 @
│ │ 3 创建 I18Demo 小部件.mp4$ P; x B: @+ {/ u
│ │ 4 安装与配置 Flutter 应用的国际化.mp4 O6 W0 M1 n4 u
│ │ 5 配置 iOS 项目使用多种语言.mp4/ f' g5 v4 d* Z/ P/ o; R3 ]5 c* L
│ │ 6 演示 Material 组件的多语言.mp4* x; o8 l; S% g1 o0 g# V& ?
│ │ 7 寻找 Localizations 小部件.mp4
3 X( B. D* }$ p/ j; W│ │ 8 获取与设置语言和地区(理解 Locale 类与 Localizations 小部件).mp4
4 R: |7 B" H* g0 U% \( a│ │ 9 定义本地化资源类.mp4' s& K: G2 I3 @* p9 K: |
│ │ 10 加载本地化资源.mp4. C% U ^ @4 T" p
│ │ 11 使用本地化资源.mp4
9 U5 A$ I7 J- x1 n: P/ K' h│ │ 12 Intl:定义需要翻译的信息.mp46 _( R9 Z' G3 N7 n4 r; S
│ │ 13 提取信息模板并翻译信息.mp47 i5 R0 b8 Y6 O. S/ G" ^* m8 s
│ │ 14 基于arb 生成 dart 文件.mp4
: w, X/ { F6 i* E/ \ ^│ │ 15 加载与使用本地化信息.mp4* E! U( \$ [6 F: Y( `" b3 g/ l
│ │
8 ^! }& d$ }$ c9 j2 {│ ├─21.Flutter移动应用:测试
; P5 M: c9 K0 I0 o0 H) i│ │ 1.介绍.mp48 O" V0 S, d6 \1 O
│ │ 2.准备项目.mp4# U( h& O+ u( n5 T# ~+ G" q
│ │ 3.Unittesting:单元测试.mp4
" c4 p/ k7 j& C! I% u│ │ 4.运行测试.mp4! f, z: o# [: q6 X# b# ]2 l% ~3 P
│ │ 5.WidgetTesting:测试小部件.mp4
1 N* [- G4 n) {* y) g│ │ 6.找到并验证小部件(Finder与Matcher的用法).mp4: }: @) F' c, f7 p
│ │ 7.测试小部件的点按行为.mp4
- j1 K; ^& D6 o/ }3 j/ R4 q│ │ 8.Integrationtesting:集成测试.mp4
M7 c/ ^% M# m7 p# n│ │ 9.编写与运行集成测试.mp49 e2 H. M3 R. E5 S/ n6 |" g) S a4 I
│ └─源码
: v( D6 t+ x" F│ ninghao_flutter-master.zip2 H' m+ I" e u3 Y
' ?7 R. H" N7 R' x( R
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|