|
|
课程目录:
* X a! k0 i& O/ J: }7 d│ ├─1 Flutter 移动应用:开发准备 r: ~8 ?* r- L) p
│ │ 1 介绍.mp4
: L8 M* T& ?* H1 \9 Q8 |│ │ 2 安装 Flutter SDK(macOS).mp4
& ~8 \1 G2 I3 c│ │ 3 配置 iOS 开发环境(macOS).mp4) U2 n$ n& l% Y6 V2 T) s
│ │ 4 配置 VS Code 代码编辑器.mp4
& N: k1 F% P& B+ X5 E+ z5 z' G│ │ 5 配置 Android 开发环境(macOS).mp46 t! }: Z: M5 N% g+ i) w" q( @9 p2 D
│ │ 6 检测问题:flutter doctor.mp4
$ o$ w8 t. e! g P( O3 p+ F. y│ │ 7 Flutter 在中国地区的特别设置(macOS).mp4( K( Q/ v) Q0 ~+ q( a
│ │ 8 创建 Flutter 项目.mp4
1 |& ~3 N' p( d5 \. h) F$ `│ │ 9 运行 Flutter 项目(iOS 模拟器).mp4
# R/ s" A" \) A- p1 t) O& f│ │ 10 在 Android 模拟器上运行 Flutter 项目.mp4
8 {9 w9 }- o& v8 c* H9 D│ │
$ ~0 Z- I! h+ n9 [ }│ ├─2 Flutter移动应用:快速起步/ b+ l, o5 H- k- y9 e
│ │ 1 介绍.mp49 Z: z6 n- i: `: P- j8 S/ o7 Y
│ │ 2 准备项目.mp44 Z1 _3 d- q" o) H2 ^4 V
│ │ 3 在屏幕中间显示 “hello”.mp4
O! m( h; o/ r' B│ │ 4 自定义小部件(Widget).mp4. j: U8 l* q9 r* {
│ │ 5 文字的样式:TextStyle.mp4* C! c$ f$ Y3 `4 | c
│ │ 6 MaterialApp:使用界面组件与定制界面主题.mp44 y% g1 w- Y: L, e2 h Z7 r q5 S
│ │ 7 列表:准备数据.mp4. S T" k5 V5 \3 A& L: g" c
│ │ 8 列表视图:ListView.builder.mp4
2 s; d( C4 y3 W% |7 j│ │ 9 列表项目.mp40 Z1 C7 y, g/ F
│ │
- u5 m8 [% \4 d! `& U @, H1 S7 J│ ├─3 Flutter 移动应用:界面结构
3 r3 t6 i5 p- `- m `1 X; k3 I* t│ │ 1 介绍.mp4
/ J( C: P5 m3 R│ │ 2 准备项目.mp4
. D5 L" K% X" J9 C│ │ 3 Material 应用.mp4
) A9 D `& K5 r6 b0 z│ │ 4 AppBar:工具栏上的图标按钮(IconButton).mp4
4 B9 C# @- F* I. S$ C# D8 ~! A) T! J│ │ 5 TabBar:用标签形式展示内容.mp4- n4 y+ b8 c$ e3 l5 w6 P
│ │ 6 TabBar:自定义标签栏的样式.mp4( ]0 @/ ~7 A0 }" t+ u# I
│ │ 7 Material:自定义按钮水波纹样式.mp4
U) O+ |, }0 V6 m7 z│ │ 8 Drawer:抽屉(边栏).mp4- k' a$ N( ?* x- R* ]2 B
│ │ 9 Drawer:在抽屉里使用 ListView, DrawerHeader,ListTile.mp4% f! T u K$ U
│ │ 10 Drawer:抽屉的打开与关闭.mp4. {# f" K) o, X( X& m2 Q
│ │ 11 UserAccountDrawerHeader:抽屉里的用户帐号信息.mp4
8 ~/ ?+ T2 ?* `; U7 Z( @" i3 C│ │ 12 用户帐户头部的背景图像.mp4% e( s' U; i- [
│ │ 13 创建 DrawerDemo 小部件.mp4
. |' O) Z; z0 Y' l" r) x│ │ 14 BottomNavigationBar:底部导航栏.mp4
$ U# A& `/ ]2 v- S. r│ │ 15 BottomNavigationBar:底部导航栏的激活状态.mp4
/ `! |. }# |4 U# J: E3 t+ J& O" q│ │ 16 StatefulWidget:有状态的小部件.mp4+ g/ ]& r" G1 i# u" L
│ │ 3 u1 d6 z- X9 \- ? y1 h
│ ├─4 Flutter 移动应用:基础部件0 z/ r" s5 ]; w* `# B# @2 ^. z
│ │ 1 介绍.mp4- d9 z* N. ?8 C7 \, S! X: [
│ │ 2 准备项目.mp4% L! v# a+ a' [ n! `( V8 \ R
│ │ 3 查看小部件的定义.mp4
) Y( p% g z0 \) b│ │ 4 Text:文字与文字样式.mp4
7 n% _. n$ m8 b# m* T8 |' v& J! k│ │ 5 RichText:行内多样式的文字.mp4$ ]: S' A" u3 @' Q% j8 L: E
│ │ 6 Container:容器.mp4
/ F$ z4 o( H2 \│ │ 7 BoxDecoration:装饰盒子.mp4
8 x9 O- W9 f) A0 Y│ │ 8 BoxDecoration:边框(border).mp4 `
+ @- p3 U- \8 T8 G# o; \8 t│ │ 9 BoxDecoration:圆角(borderRadius).mp41 Y1 s( [; f) |; \- w
│ │ 10 BoxDecoration:阴影(borderShadow).mp4
! R6 K. z* P5 R) s( ~" m│ │ 11 BoxDecoration:形状(shape).mp4( P7 V$ n5 K) |; O2 F, m3 V6 _ \
│ │ 12 BoxDecoration:渐变(gradient).mp4
3 H: K- N% H2 x C│ │ 13 BoxDecoration:背景图像(image).mp4
1 ]- t- ?$ d& h& p│ │ 5 h4 B x9 D( P+ ^
│ ├─5 Flutter移动应用:布局; K c7 K5 ?4 w/ f2 ]# H5 ]
│ │ 1 介绍.mp4
5 ?( @3 H! H3 u o│ │ 2 准备项目.mp4/ ^7 B2 Q1 w$ C2 S" C
│ │ 3 创建 LayoutDemo 小部件.mp4/ j5 T9 B# ~" k( A
│ │ 4 创建可配置的图标徽章(IconBadge)小部件.mp4" f/ j1 u! p- U+ B: _% U; F4 y
│ │ 5 Row(横排) 与 Column(竖排).mp4
6 Y3 M1 G( a" z0 R│ │ 6 mainAxis:主轴.mp4
0 V! |0 R. q9 y# E5 I0 x2 o│ │ 7 crossAxis:交叉轴.mp4
, i' w7 r% ]) h9 x│ │ 8 SizedBox:固定尺寸的盒子.mp4% m# C6 S+ V( v; E
│ │ 9 Alignment:对齐.mp4
1 p! q; {2 ~" X6 |$ ]4 n/ h Z│ │ 10 Stack:一摞小部件.mp4: P: F) v) n& @3 F- C# L) i% q' ]
│ │ 11 AspectRatio:宽高比.mp4
2 S# y4 m3 c5 c3 ?2 \│ │ 12 ConstrainedBox:带限制的盒子.mp4
6 Z' C0 ?% v5 b% X8 I1 u│ │ 2 ~6 i5 W7 a, X7 Q% Z
│ ├─6 Flutter 移动应用:视图& F$ U* n7 |5 ~( N
│ │ 1 介绍.mp4
9 q; G1 L1 h7 W" d# |, L8 f) F│ │ 2 升级 Flutter SDK 与项目用的 Packages.mp4
, F" P( J0 W0 h: B7 Q, I│ │ 3 准备项目.mp48 O: G, A4 Z% n% B9 p
│ │ 4 创建 ViewDemo 小部件.mp4
# O. \6 I& n6 c3 r│ │ 5 PageView:页面视图.mp48 J) v$ `4 D/ x" a
│ │ 6 PageView:页面视图的属性.mp40 [, {7 O E# {9 z- f$ F
│ │ 7 PageView:用 PageController 调整页面的显示.mp4
% c T* O2 h# o8 [6 p│ │ 8 PageView.builder 按需生成页面.mp4& b4 E1 Z6 u8 n( ~0 b# s9 ~' E! q& z2 c
│ │ 9 GridView:网格视图(GridView.count).mp4' Y4 X: s5 g T( m' v% t% h( u+ g
│ │ 10 GridView.extent.mp4; n/ E. [* z/ S5 ^# }) ]4 F/ t
│ │ 11 GridView.builder 按需生成视图项目.mp48 \ y. g) Q* {% _) \" o' n
│ │
6 }7 _4 x) m$ n+ w8 T│ ├─7 Flutter 移动应用:Sliver7 l9 G3 [3 i {2 T2 O0 R
│ │ 1 介绍.mp44 x1 i$ @, r' |/ ~ E1 @8 ~' \4 ]
│ │ 2 准备项目.mp4& ~" [# J1 R, |* i: P" s1 Q) ]
│ │ 3 创建 SliverDemo 小部件.mp4% @1 z; c2 }" g
│ │ 4 Slivers.mp4
, o/ i; u* |3 o& A│ │ 5 SliverGrid:网格视图.mp4
( N+ t/ D2 w0 O+ T+ v│ │ 6 SliverPadding(内边距) 与 SliverSafeArea(安全区).mp49 u* |: A, g* p1 W0 T
│ │ 7 SliverList:列表视图.mp4
0 |: x4 ?- H( r3 E│ │ 8 SliverAppBar:应用工具栏.mp4- Q' X: M3 u6 u3 L
│ │ 9 带渐近动画的可伸缩空间.mp4; h8 d6 P Q$ z7 l2 P
│ │ 8 {5 Q. q/ N0 q% s
│ ├─8 Flutter移动应用:路由
6 J0 _( a. Q+ A; m& b5 s│ │ 1 介绍.mp4
$ X' e: X7 a0 m& { A: w│ │ 2 准备项目.mp4
7 @! Y. N$ t4 O9 [% U* O│ │ 3 VS Code:Flutter 代码片断.mp4
5 d% {- W0 R+ p1 f( ^│ │ 4 一堆路由.mp4
. `2 Z: A( L% A. o& B- e│ │ 5 打开新页面并返回(push 与 pop):准备.mp4. l+ G. y+ b; s z
│ │ 6 打开新页面并返回(push 与 pop):实施.mp4/ P( R- K/ D9 M: d+ G
│ │ 7 带名字的路由( Navigator.pushNamed).mp4
4 `0 b! n0 x2 z6 F# H, w│ │ 8 初始路由:initialRoute.mp4' Z. Q& z! d( S+ n: ?5 v! A
│ │ 9 InkWell:添加溅墨动画效果.mp4- F' ]6 W/ o0 W% E& L$ {+ c
│ │ 10 在内容详情页上显示内容.mp4
4 b, x; Y! A* G│ │
7 A1 C2 c$ J, @+ a│ ├─9 Flutter 移动应用:表单7 F% L. Y+ A. C+ I
│ │ 1 介绍.mp4
2 B' c1 _* [- K# t5 Y( n& \6 w│ │ 2 准备项目.mp4# U7 O- u9 x7 T. \
│ │ 3 创建 FormDemo 小部件.mp40 O+ V c1 b# `; y, d
│ │ 4 Theme:定制、使用、重置、覆盖主题.mp4, M2 }( E3 R! G* R
│ │ 5 TextField:文本字段.mp4
1 a) S. R" k% Q, O9 o│ │ 6 TextField:文本字段样式(InputDecoration).mp4
! K) r1 L4 T, O│ │ 7 TextField:监视文本字段的值的变化与提交.mp4
$ u1 {1 B* f; Z* @4 A; i) }│ │ 8 TextField:使用 TextEditingController 监听文本字段变化.mp4
9 ?! x n' g: Z; s& `6 n│ │ 9 Form:表单.mp4! b% h- H" L" p/ V" h C
│ │ 10 Form:保存与获取表单里的数据.mp4
; I: u8 c. k" W9 ~8 J. o! t│ │ 11 Form:验证表单里的数据.mp4
) n' A8 A+ {; {' J│ │ 12 Form:自动验证.mp46 p7 d( w2 e+ Y3 R
│ │ 13 SnackBar:在屏幕底部动画弹出提示栏.mp4
$ L; x5 E5 e% ~2 U# G│ │
' ^1 O$ H7 l4 e }8 l+ H0 Y│ ├─10 Flutter移动应用:按钮
" ]! Q6 `! \, _6 @│ │ 1 介绍.mp4
! E7 [! X9 N6 |9 D( j5 N/ R s│ │ 2 准备项目.mp4
% o! I! U1 F% L4 s. ~% O5 H│ │ 3 VS Code:自定义代码片断.mp4: _7 F2 |; \$ b" A2 c5 w& t
│ │ 4 准备 Material Components 演示页面.mp4
. O/ O( X4 k7 k│ │ 5 FloatingActionButton:漂浮动作按钮.mp4) P5 {( u! l- G% t: T# L; J$ U+ `
│ │ 6 BottomAppBar:底部工具栏.mp4
+ O' r# [! H- D: Y }* z│ │ 7 创建演示小部件用的页面.mp4: j& w; K! N+ n0 }* Z0 p# c6 f1 k
│ │ 8 FlatButton:文字按钮.mp47 |" Y& F1 k$ m+ |
│ │ 9 RaisedButton:按钮.mp4
, p2 g* [* P& S& i│ │ 10 按钮主题:颜色、形状.mp4& |! }9 `+ t7 I9 c3 i, w6 J. F
│ │ 11 OutlineButton:描边按钮.mp4
' g* |" i% N$ w│ │ 12 按钮容器 Container:有固定宽度的按钮.mp4
s$ O- F: p& K# t j" R* W│ │ 13 按钮容器 Expanded:占满可用宽度的按钮.mp4
) ]: G8 G5 M6 O& `% x, h: x│ │ 14 按钮容器 ButtonBar:一组带边距的横排显示按钮.mp49 x( s% n/ B" o
│ │ 15 整理:把演示放在单独的文件里.mp4
% e7 ]0 ]' y Q# h w+ P/ X│ │ 16 准备 PopupMenuButtonDemo.mp4
h8 W1 }/ i* f$ Z; C│ │ 17 PopupMenuButton:弹出式菜单按钮.mp4
) C+ d8 m1 F: l) q5 N│ │ 8 I" Z/ @ [7 A5 \
│ ├─11 Flutter 移动应用:输入. S# ^! O* n' j: F7 H, [& w& B
│ │ 1 介绍.mp41 L" \/ h( U" H4 {6 j& M
│ │ 2 整理:在演示列表里添加 FormDemo.mp4
+ E+ J' d3 o0 t; S1 Z7 [% _│ │ 3 创建用户输入相关的小部件的演示页面.mp4* M( \; e# j, r: m
│ │ 4 Checkbox:复选框.mp4+ I2 r/ f; a; ?, v7 s
│ │ 5 CheckboxListTile:带标签与图标的复选框.mp4
9 n0 g- R" y4 {│ │ 6 Radio:单选按钮.mp45 H8 H+ B* c5 p
│ │ 7 RadioListTile:带标签与图标的单选按钮.mp4! u- G6 ]9 _& I
│ │ 8 Switch:开关.mp4$ n! U* {- @! r
│ │ 9 SwitchListTile:带标签与图标的开关.mp41 g" z5 I A" \" ]5 D# r
│ │ 10 Slider:滑动选择器.mp4
, G! i9 N5 U7 i. K! b8 {" V# r│ │ 11 安装第三方包(演示安装 Intl 包).mp4' z* U: w1 q6 A$ Y2 x, Q
│ │ 12 显示格式化日期.mp44 w( n/ e+ y1 X, w
│ │ 13 showDatePicker:选择日期.mp4' _$ i1 i$ u* `; m. n7 ^2 _: n
│ │ 14 showDatePicker:获取选择的日期(async).mp4
[, K6 k Z @│ │ 15 showTimePicker:时间选择器.mp4
2 ~. P5 U4 w0 L A( |7 F; N│ │ 16 Future:异步程序.mp4, Q* m D) }/ t- A7 T
│ │ ; [6 E. E4 o9 {2 j/ N! w( i
│ ├─12 Flutter 移动应用:对话框/ j+ U9 Z* @- ~/ i$ N1 J
│ │ 1 SimpleDialog:显示对话框(showDialog).mp4" M4 `7 M8 t3 a" f* y
│ │ 2 SimpleDialog:选项(SimpleDialogOption).mp4
# L& {+ X! z$ z! o Y8 Y│ │ 3 SimpleDialog:获取与使用选项的值.mp4. V1 y+ G3 Q$ A3 Z3 r( _
│ │ 4 AlertDialog:提示对话框.mp46 o6 R) P Z! I3 g/ Z6 T
│ │ 5 AlertDialog:获取与使用动作的值.mp41 F1 F/ K% d3 u* v `
│ │ 6 BottomSheet:底部滑动窗口.mp4/ L; q! ?! w" w! i
│ │ 7 BottomSheet:对话框式底部滑动窗口(showModalBottomSheet).mp4
M! `- x6 D" K│ │ 8 处理使用对话框式底部滑动窗口的数据.mp4* B, P! U- i1 @# ~( J/ ^& i
│ │ 9 SnackBar:操作提示栏.mp4
8 O0 ]2 [& @! M' N3 d) A, p& s/ b│ │ 10 ExpansionPanel:收缩面板.mp4& V, b m9 l7 u3 T9 H( F1 h7 g
│ │ 11 ExpansionPanel:面板的收起与展开.mp4
' q; o E: e# p( |│ │ 12 ExpansionPanel:面板列表项目.mp42 U6 c) G: H6 J& R
│ │ % X6 b' P, V) d3 U; b! j! c# Z5 p
│ ├─13 Flutter移动应用:MDC2 q: u. g, L/ N) M3 B: J/ i5 O6 z
│ │ 1 介绍.mp4; A' s0 k" q5 c) V8 @+ c( f# i
│ │ 2 升级 Flutter SDK 后屏幕报错(0.8.1).mp4
4 u3 C8 W& I- V# c8 v│ │ 3 Chip:小碎片.mp47 c a" k) `( i) Y2 c9 K/ f
│ │ 4 Wrap:换行显示小部件.mp4
6 k: E" p0 G t2 L5 L8 G4 d│ │ 5 Divider:分隔符.mp4) }& N+ C R W2 `9 M7 t* I
│ │ 6 Chip:带删除功能的小碎片.mp42 |) ?# ]* A' U( D" [8 s
│ │ 7 Chip:用列表生成带删除功能的小碎片.mp4 [+ z5 D1 [+ o1 R
│ │ 8 ActionChip:动作碎片.mp4
5 a, K, D+ ^( S' o│ │ 9 FilterChip:过滤碎片.mp48 Z8 m+ F% a: U% |% M- R
│ │ 10 ChoiceChip:选择碎片.mp49 e; ~, E# |" e2 G& j
│ │ 11 DataTable:数据表格.mp41 g+ X' b8 j; R& s+ C$ y
│ │ 12 DataTable:用列表生成数据表格.mp4
2 } O& D h7 H9 T5 \' s! K│ │ 13 DataTable:数据表格的排序.mp4
+ S1 U* C: P4 ?8 q# J│ │ 14 DataTable:选择数据表格行.mp4
+ n8 ~+ @+ b" O9 U│ │ 15 PaginatedDataTable:分页显示表格数据.mp4: g( \( ]8 ]! F, C
│ │ 16 PaginatedDataTable:排序.mp4) L" m, q+ M ]) y! f8 c7 c+ z
│ │ 17 Card:卡片.mp46 ~0 e9 X. C& L0 L
│ │ 18 ClipRRect:圆角(给图像添加圆角效果).mp4
6 E- n) s8 i+ M' x1 X. M│ │ 19 Stepper:步骤.mp4
2 {4 o, M! M ~( P│ │ 20 Stepper:步骤的行为.mp4
0 _3 B, y. n# w& [1 _/ o! L. b$ L│ │
/ b9 M d/ r. p* R6 _9 S( y│ ├─14 Flutter 移动应用:状态管理
+ R0 r3 O! T. X+ Z│ │ 1 介绍.mp4& B. G& N4 @( |$ M
│ │ 2 准备项目.mp47 s$ e# f" L3 R; l* R! o
│ │ 3 创建 StateManagementDemo 小部件.mp4
% x. U7 p! ~( `4 W, m│ │ 4 StatelessWidget:无变化状态的小部件.mp4; g/ _3 d0 ]" A W7 |' d" C, {
│ │ 5 StatefulWidget:带变化状态的小部件.mp4
9 a- I6 Z1 ]3 E│ │ 6 状态管理(由父辈管理状态).mp4
6 i: ~8 }3 W1 Q4 |- S. ^│ │ 7 从父辈那里传递个回调.mp42 u: F+ L' V/ @4 \8 L
│ │ 8 小部件树:Widget Tree.mp4
+ K4 F- w; o1 j+ }│ │ 9 InheritedWidget:直接把数据传递给需要的小部件.mp41 N8 j+ y6 g2 l' l# S. U# V
│ │ 10 创建与使用 InheritedWidget 有效地传递数据给子部件.mp4 6 ~. @3 d; f) u4 C
│ │ 11 ScopedModel:安装与基本用法介绍.mp4
) E, ]1 D) r) \/ M' A│ │ 12 使用 ScopedModel 传递数据.mp4
7 `8 E6 O' c. x1 }│ │
) o) b( m5 Y5 L, j; {% s& |│ ├─15 Flutter 移动应用:Stream9 g f$ z) H( V$ N( X+ U4 r
│ │ 1 介绍.mp4
& p+ h" H% ?: u1 T; t. z) X│ │ 2 准备项目.mp4
' A2 \5 h. i+ w- u│ │ 3 创建 StreamDemo.mp4
! n8 k8 i% s' q" {' W5 y+ m. e1 \│ │ 4 创建与监听 Stream.mp4
6 G: }) g/ H$ u/ P/ G/ h│ │ 5 给 Stream 添加一个订阅(subscription).mp42 p7 r3 l$ z5 q7 a9 G( {% M
│ │ 6 暂停、恢复、取消监听 Stream.mp4, f @7 Q+ }% ~$ \0 T
│ │ 7 StreamController:控制 Stream.mp4
1 Y- g6 z7 L! Y6 R8 S│ │ 8 StreamController:使用 Sink 往 Stream 上添加数据.mp4
1 @/ t1 a7 j9 D( Y│ │ 9 StreamController:创建可以多次订阅的 Broadcast Streams.mp4
: y& `* k; {2 P- w│ │ 10 在界面上显示 Stream 上的数据.mp47 u; F6 s8 g7 d5 J" S) s& B, n4 g
│ │ 11 StreamBuilder:根据 Stream 上的数据构建小部件.mp42 v4 }# t8 H( f; G
│ │ : a* @* i# r f
│ ├─16 Flutter 移动应用:RxDart% ]# L W: W l% M4 P- c) h0 y$ O
│ │ 1 介绍.mp4
: w- k9 | W( F! [3 J1 j6 h' Y6 n) ?│ │ 2 准备项目.mp4
7 t) p8 V7 k! s/ f│ │ 3 创建 RxDartDemo.mp4. [" t) t9 f7 J v4 X y6 U+ z! O
│ │ 4 安装 RxDart 包.mp4* y, v/ |0 |/ E) a6 j* K$ ^7 m
│ │ 5 Rx,RxDart,Observable 与 Stream.mp4$ Y4 J# G# {/ u0 G0 B- K
│ │ 6 Observables.mp4
; V+ }. S# P' L- ]2 W0 c│ │ 7 创建 Observables 的几种方法.mp4+ n9 B, i9 H6 V/ G; n0 z4 @ y, T
│ │ 8 使用 Subjects 控制 Observables.mp4
/ S$ a& J9 C; N& S; Y$ @│ │ 9 BehaviorSubject.mp4
9 _5 b3 O9 Z. m( }( G3 i0 H│ │ 10 ReplaySubject.mp42 t* F* i1 E4 B( F3 G0 U' x @# I
│ │ 11 准备一个文本框往 Observable 上添加数据.mp4" X6 E+ i: W: `8 i* y* J
│ │ 12 RxDart 的数据转换方法(map).mp40 R0 y1 U" V( `8 M4 K q6 v9 s
│ │ 13 where.mp4
( j# ]8 b3 N( i7 L' p* i U" T% F│ │ 14 debounce.mp4
: C) a1 b# m/ ]! r- E│ │
- ?6 w" ?8 d* x* J! Y; {: O6 C│ ├─17 Flutter 移动应用:BLoC
5 f; Y. W9 H+ [% E- T! t: @6 j% t│ │ 1 介绍.mp4) W0 U- d& Q S
│ │ 2 准备项目.mp4
( k# z d' n; u ?0 A) Q, x$ n│ │ 3 创建 BlocDemo.mp4
4 c1 A3 v" |& l& A6 z│ │ 4 BLoC:Business Logic Component.mp4
- ~" R `! B0 ` E1 G0 h│ │ 5 BLoC 应用案例(记数器):准备基本小部件.mp4
5 F5 e6 S8 G% R/ {0 O* a│ │ 6 使用 InheritedWidget 传递 BLoC.mp40 Q7 ^. \/ ^3 J
│ │ 7 创建与使用 BLoC:用 Sink 输入数据.mp4" C9 o( }2 t: s8 I! i; V6 U
│ │ 8 创建与使用 BLoC:用 Stream 输出数据.mp4" t! S# n$ G6 N; l4 ~2 g
│ │ / {0 R/ i5 f: b h, t8 F6 R, I* k
│ ├─18 Flutter 移动应用:网络请求
9 |1 I! m! ?# T& a* V" c│ │ 1 介绍.mp4( d$ }2 o/ t( z& W* o- F; J9 Z
│ │ 2 准备项目.mp4: l. Y0 ~4 _5 e* Y8 R* z2 R
│ │ 3 创建 HttpDemo.mp4
4 Q! k; O$ ^/ L( W. U│ │ 4 安装 http 包(升级 Flutter SDK).mp4
' Z: u/ R! f0 D│ │ 5 使用 http 客户端请求数据.mp4
& L# c* u" @& @& R$ I! F6 i│ │ 6 JSON 转换(dartconvert).mp4
" Z1 P$ w! ?" l) r│ │ 7 使用 Model 类转换数据:fromJson.mp4
+ g$ \3 _9 n9 ]# a│ │ 8 使用 Model 类转换数据:toJson.mp49 P5 p* y9 j k7 z
│ │ 9 使用请求数据:把响应的数据转换成自定义 Dart 对象.mp4. t% G F+ w* ?8 R% h, l5 ?5 k% {/ l
│ │ 10 FutureBuilder:使用 Future 构建小部件.mp44 i4 L' l/ `5 A) K! ^+ b
│ │ ' X' ]" X+ A, |1 i
│ ├─19 Flutter 移动应用:动画# @* M: t1 m$ L5 B) w
│ │ 1 介绍.mp4; N$ s3 J Z5 v; I- I; h
│ │ 2 准备项目.mp4
1 @; L: p! {+ R8 z4 H│ │ 3 创建 AnimationDemo 小部件.mp4: _& m$ ]1 f' u! y2 `
│ │ 4 AnimationController:动画控制器.mp4- J k d( x& U$ M* `9 _& x$ w( U; c
│ │ 5 使用动画的值.mp4
7 r! i# |# f% s7 H- P│ │ 6 动画的状态与运行.mp4
% O( f: Q7 I; M% ?% ]│ │ 7 Tween:设置动画范围值(数字、颜色).mp46 M1 z+ n$ E, a* ?- U6 e
│ │ 8 Curve:动画曲线.mp4
( n3 l. A; [/ D│ │ 9 AnimatedWidget:动画值有变化就自动重建自己的小部件.mp4
0 x8 g3 F# a- Z7 {6 C8 n$ |1 r9 k│ │ " ]. }" G' P7 l P. ^# k; B
│ ├─20 Flutter移动应用:国际化. L, H T( t8 p8 E" ~
│ │ 1 介绍.mp4
: q% g5 ]5 Q+ o3 r# j│ │ 2 准备项目.mp48 r+ S4 h8 w9 ~ z+ z {' G
│ │ 3 创建 I18Demo 小部件.mp4' {# g- K+ ]) L3 X( m: \2 d9 f; P
│ │ 4 安装与配置 Flutter 应用的国际化.mp45 J" V" j$ w) ]. \! ^ u* j
│ │ 5 配置 iOS 项目使用多种语言.mp4
( M5 @1 e" e4 k9 i8 A) Z% J( f│ │ 6 演示 Material 组件的多语言.mp4
# ~8 {4 t' ^+ s: @│ │ 7 寻找 Localizations 小部件.mp4
/ O9 s" [) H5 e; y4 B$ X│ │ 8 获取与设置语言和地区(理解 Locale 类与 Localizations 小部件).mp4
; S J+ T8 ]: r. V│ │ 9 定义本地化资源类.mp4
2 J) L/ e8 p) v# W│ │ 10 加载本地化资源.mp43 \: k. ]" C+ ]8 {+ H; A+ C
│ │ 11 使用本地化资源.mp4
3 `8 W: d, z8 }5 R5 i% I$ ^0 m│ │ 12 Intl:定义需要翻译的信息.mp4
$ u8 l5 y9 p9 A9 }│ │ 13 提取信息模板并翻译信息.mp4$ I* D& _- P$ m+ e3 e: Z6 B
│ │ 14 基于arb 生成 dart 文件.mp4
7 N6 N: [/ N6 w& @# \3 F4 P8 v+ _│ │ 15 加载与使用本地化信息.mp4
4 ]& r9 k% |8 F( i, p! v( ~/ D│ │" @9 O8 R& n4 X; C2 K
│ ├─21.Flutter移动应用:测试
* c9 ]% N4 [) b5 H, J' ?0 [│ │ 1.介绍.mp4
+ H, W' u/ {) ?3 u│ │ 2.准备项目.mp49 K6 ~2 b+ M% G; a' ~
│ │ 3.Unittesting:单元测试.mp4! V# g, W! i2 @& H# x5 W9 z
│ │ 4.运行测试.mp46 N$ t ^/ g$ x" k, H+ ~: @
│ │ 5.WidgetTesting:测试小部件.mp4
- Q& r; @+ c! i9 @$ W$ k│ │ 6.找到并验证小部件(Finder与Matcher的用法).mp4( [" B9 t3 T8 `
│ │ 7.测试小部件的点按行为.mp4$ Y: M) r# q) {( p! F
│ │ 8.Integrationtesting:集成测试.mp4
/ d/ M7 K: |: l. Y, V$ c│ │ 9.编写与运行集成测试.mp4
8 y* A) f, q% w! w' d/ J│ └─源码$ @$ F8 F( V3 l
│ ninghao_flutter-master.zip
" V1 i. x! r- w- w, ?5 d! {
% E, |8 X8 ^( U6 D: @# t |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|