|
; d% ` c* Y* k7 ^% S
详细目录:
" u) k) }7 G9 M3 K9 r* h. E0 ~├──01.Flutter移动应用:开发准备 - g) u" @0 i1 P: i8 D7 L1 I
| ├──1.介绍.mp4 3.23M2 G$ `# m8 ]6 u/ Z
| ├──10.在Android模拟器上运行Flutter项目.mp4 4.23M0 y2 V; N1 v) d9 o# r1 E9 a3 r* v
| ├──2.安装FlutterSDK(macOS).mp4 3.87M: M! u9 l0 I7 o4 u7 H2 [
| ├──3.配置iOS开发环境(macOS).mp4 2.40M
5 X9 O2 }8 L) ^/ O$ c) E* Y| ├──4.配置VSCode代码编辑器.mp4 967.52kb
8 K1 G- p. t* L6 W% o }| ├──6.检测问题:flutterdoctor.mp4 2.36M
" O K# \/ V6 {) o, b) l; J' i| ├──8.创建Flutter项目.mp4 1.90M
. S5 T' a7 f8 v' G: L# y4 l| └──9.运行Flutter项目(iOS模拟器).mp4 5.37M9 v3 ~+ k& M" G; ?( s9 i
├──02.Flutter移动应用:快速起步
( ^( n6 S% P4 R4 l| ├──11.介绍.mp4 3.56M
2 b4 z$ R3 \& p: J1 A5 k- @| ├──12.准备项目.mp4 2.67M# a: o, I( c0 i# Y
| ├──13.在屏幕中间显示“hello”.mp4 4.02M
6 \6 U( k+ l0 T; L| ├──14.自定义小部件(Widget).mp4 2.62M- c( R4 p, h' ?7 B( d
| ├──15.文字的样式:TextStyle.mp4 1.40M
2 T, n# z4 ~3 Q- ]9 R, c P/ I" D| ├──16.MaterialApp:使用界面组件与定制界面主题.mp4 4.87M; _" S4 e. ?; q% v+ p: @/ l7 T/ \
| ├──17.列表:准备数据.mp4 3.15M' d* i2 H4 B2 y$ L) K: O/ m
| ├──18.列表视图:ListView.builder.mp4 3.40M
6 ~. r, |' J& R1 e) e; u; r| └──19.列表项目.mp4 5.75M4 c5 z. V b! e( [
├──03.Flutter移动应用:界面结构 6 o" A7 X- j' l8 w. B% B
| ├──20.介绍.mp4 3.82M3 n m0 \6 a0 {" w6 p5 U
| ├──21.准备项目.mp4 3.10M
& ?5 K2 y% X! b" p" y3 T| ├──22.Material应用.mp4 10.84M
5 y7 W$ T5 D% @: f. c2 g| ├──23.AppBar:工具栏上的图标按钮(IconButton).mp4 4.53M
! d) X" ~( l/ d" o& |1 F4 U| ├──24.TabBar:用标签形式展示内容.mp4 5.02M0 e9 W w1 T+ a
| ├──25.TabBar:自定义标签栏的样式.mp4 2.11M
: n! L& R; l$ m" b1 F3 m- G| ├──26.Material:自定义按钮水波纹样式.mp4 1.87M
5 j5 h: ?! M6 h% k/ g$ Y: m+ S| ├──27.Drawer:抽屉(边栏).mp4 2.78M7 @+ l* l; h+ Z4 r
| ├──28.Drawer:在抽屉里使用ListView,DrawerHeader,ListTile.mp4 4.65M
' a6 I3 J, ~# Q+ ~- e, J! i| ├──29.Drawer:抽屉的打开与关闭.mp4 2.63M
5 ^ S7 r7 i& q# }- z| ├──30.UserAccountDrawerHeader:抽屉里的用户帐号信息.mp4 2.81M$ W, _- A3 u) f9 O
| ├──31.用户帐户头部的背景图像.mp4 3.75M% F6 y# N& \* p9 J% ^
| ├──33.BottomNavigationBar:底部导航栏.mp4 5.34M
5 p) n. C2 h$ p2 t/ g6 Z| ├──34.BottomNavigationBar:底部导航栏的激活状态.mp4 2.65M
+ j0 O% l0 I+ _- y| └──35.StatefulWidget:有状态的小部件.mp4 5.74M7 A" O% K) e' ]+ ~1 ~; K; {4 x
├──04.Flutter移动应用:基础部件 3 Y. l0 r3 M- u$ S: L
| ├──36.介绍.mp4 3.08M, R" |' _! R# S5 F8 t
| ├──37.准备项目.mp4 3.62M
6 f& r" ^9 ~) z; \) \/ l0 D, T| ├──38.查看小部件的定义.mp4 2.98M7 V0 L# I1 r; x' }5 }' G$ D( B
| ├──39.Text:文字与文字样式.mp4 3.57M
5 i* l5 }4 N* K2 i$ T3 ?0 `| ├──40.RichText:行内多样式的文字.mp4 2.77M! ?4 f! S2 `! d
| ├──41.Container:容器.mp4 4.17M' Z$ Y+ M3 v8 p$ }
| ├──42.BoxDecoration:装饰盒子.mp4 1.69M% b5 \) z# z. H
| ├──43.BoxDecoration:边框(border).mp4 2.27M$ `# F6 u H! c* X8 i; C8 _
| ├──44.BoxDecoration:圆角(borderRadius).mp4 1.84M6 L- {6 d* t- g$ h- p; j
| ├──45.BoxDecoration:阴影(borderShadow).mp4 3.13M
8 f: v8 Q5 z- U. v" w2 {# }| ├──46.BoxDecoration:形状(shape).mp4 1.04M
1 q8 i. d! Y. f- B& C# g! C| ├──47.BoxDecoration:渐变(gradient).mp4 2.23M1 P8 E% L: y" H% \. ]1 Y" I
| └──48.BoxDecoration:背景图像(image).mp4 4.39M
; E. a$ U5 W! j: k, u# \( e├──05.Flutter移动应用:布局
3 @: j1 j/ x1 a) c- ]| ├──49.介绍.mp4 2.75M
2 @0 }/ o2 ?' q, M4 D, K2 `% U4 o| ├──50.准备项目.mp4 2.03M
( x; U$ e- @& f0 a$ v4 f| ├──52.创建可配置的图标徽章(IconBadge)小部件.mp4 4.28M
5 e, Y# v2 L5 Y! @4 q" E5 k% @5 q- w| ├──53.Row(横排)与Column(竖排).mp4 2.11M* w' q/ v9 _% v# ?" r: R1 Y/ X! A
| ├──54.mainAxis:主轴.mp4 2.18M
9 Q! i! ^) z0 v# H! V| ├──55.crossAxis:交叉轴.mp4 2.47M
5 ?. w# v1 d" G) t/ \( h7 j" z| ├──56.SizedBox:固定尺寸的盒子.mp4 4.22M: ^' ?. O2 n4 i; U
| ├──57.Alignment:对齐.mp4 2.70M
9 w9 f X' r: k! i# m7 t$ Q| ├──58.Stack:一摞小部件.mp4 4.73M( g0 N" m' j( U; E
| ├──59.AspectRatio:宽高比.mp4 1.60M& o( M0 P) K' L u" u) a; P$ F q2 i* a
| └──60.ConstrainedBox:带限制的盒子.mp4 1.71M& u" G5 Z1 R( f$ B; j; R- ~
├──06.Flutter移动应用:视图
/ b* z5 Z5 R) j2 n4 p0 {| ├──61.介绍.mp4 3.27M
9 I7 x! k) j! Q# Z| ├──62.升级FlutterSDK与项目用的Packages.mp4 3.23M
4 [4 y# b/ L/ P% Z/ v( p| ├──63.准备项目.mp4 1.57M% D- x: x- p. a* ^) s! D7 I I
| ├──64.创建ViewDemo小部件.mp4 3.84M
. ]: n9 T8 w: g. B6 I' v| ├──65.PageView:页面视图.mp4 2.93M8 z* R1 {: E2 H ?5 X- W
| ├──66.PageView:页面视图的属性.mp4 3.20M
% \+ k9 K/ I* a' C E| ├──67.PageView:用PageController调整页面的显示.mp4 2.91M
( m4 E: U7 q6 t) E9 H* s% W4 v, n+ ~| ├──68.PageView.builder按需生成页面.mp4 7.51M* k4 ~8 b0 Z8 }& X
| ├──69.GridView:网格视图(GridView.count).mp4 8.22M
: d* W1 E) ^" F. T) f| ├──70.GridView.extent.mp4 3.04M( | V N" X. A0 C% J4 }2 S! b
| └──71.GridView.builder按需生成视图项目.mp4 7.79M X* n9 `6 V: g. X/ \
├──07.Flutter移动应用:Sliver
6 U1 g4 W0 T! s4 f O4 Q| ├──72.介绍.mp4 3.51M5 `6 D* I+ Z; s8 H, r7 y
| ├──73.准备项目.mp4 1.20M
6 h' C" c. v+ m| ├──74.创建SliverDemo小部件.mp4 2.69M( r6 Q$ d+ C- k6 ?3 f
| ├──75.Slivers.mp4 2.01M
8 P" L! K5 k5 d| ├──76.SliverGrid:网格视图.mp4 7.29M
, p; v- ^8 ~' Y Y- |6 ?: E| ├──77.SliverPadding(内边距)与SliverSafeArea(安全区).mp4 4.01M3 h# ~3 e8 F x. c& S# l& \5 G
| ├──79.SliverAppBar:应用工具栏.mp4 3.66M& K- W3 T. ~) s$ H: E+ Z
| └──80.带渐近动画的可伸缩空间.mp4 6.38M8 S* }: M1 `8 m3 O2 ?
├──08.Flutter移动应用:路由 0 \- W1 E) ]. F
| ├──81.介绍.mp4 3.69M! Z* p& w! G! x: y2 Q8 j, A
| ├──82.准备项目.mp4 2.39M% C; o1 }4 }# ]8 W. e. O
| ├──83.VSCode:Flutter代码片断.mp4 2.30M
" D! Z% A& a; M/ F% A8 S| ├──84.一堆路由.mp4 1.16M
- x# f9 z6 z* I' H5 y( K/ }| ├──85.打开新页面并返回(push与pop):准备.mp4 5.32M
$ u" X3 ]+ H( @! ^2 ~2 L| ├──86.打开新页面并返回(push与pop):实施.mp4 4.00M
+ x# f( e0 @8 k; }7 D| ├──87.带名字的路由(Navigator.pushNamed).mp4 2.37M" ^9 \5 P' b$ z, T1 ^0 S9 g% Y7 G( t# ]9 y
| ├──88.初始路由:initialRoute.mp4 1.92M
+ v$ m5 s1 g, i2 Y| ├──89.InkWell:添加溅墨动画效果.mp4 6.45M( w/ S& ^1 x- n T
| └──90.在内容详情页上显示内容.mp4 10.93M
2 I1 n$ m- V" u├──09.Flutter移动应用:表单
5 E/ A" Q0 `! c* i* T| ├──100.Form:保存与获取表单里的数据.mp4 5.12M
; D1 t& b+ _& y# a( ~0 x4 i" Z| ├──101.Form:验证表单里的数据.mp4 4.55M o1 u% n2 b' P5 G2 p/ e- d+ e
| ├──102.Form:自动验证.mp4 3.68M C2 f: q6 W! I7 N& ~3 m4 {
| ├──103.SnackBar:在屏幕底部动画弹出提示栏.mp4 1.50M
% N) U/ m4 x2 Z& B) p! K: D' P| ├──91.介绍.mp4 2.72M
7 A0 u) l0 f3 V7 o- W& V+ R6 v" O/ I| ├──92.准备项目.mp4 1.69M; m: S7 Z& l% {9 A6 I5 \+ g
| ├──93.创建FormDemo小部件.mp4 3.09M9 f, F9 h" { H
| ├──94.Theme:定制、使用、重置、覆盖主题.mp4 3.90M0 Y/ z& F8 P* c: o+ t" ]# f( |
| ├──95.TextField:文本字段.mp4 2.15M: ^9 ], d0 y$ U- t+ c8 A
| ├──96.TextField:文本字段样式(InputDecoration).mp4 3.31M' d8 d3 m* _2 n
| ├──97.TextField:监视文本字段的值的变化与提交.mp4 2.00M/ J( `/ z& m" }
| ├──98.TextField:使用TextEditingController监听文本字段变化.mp4 3.35M( u3 O6 l( C% q4 V+ z
| └──99.Form:表单.mp4 5.56M
4 n- G' k/ t. \0 _├──10.Flutter移动应用:按钮
y; W& D' B' f4 d# y' @5 j( k| ├──104.介绍.mp4 3.00M
5 U; G. O, H, n$ X| ├──105.准备项目.mp4 1.31M
& W+ F/ U, j1 [1 a| ├──106.VSCode:自定义代码片断.mp4 4.23M. n/ U0 b1 R6 n5 v
| ├──107.准备MaterialComponents演示页面.mp4 6.64M
2 a! K/ a: C R( K* P5 d5 c| ├──108.FloatingActionButton:漂浮动作按钮.mp4 5.05M
, y* Y0 o" Y7 M| ├──109.BottomAppBar:底部工具栏.mp4 2.41M
* c5 {5 k# W1 @+ f3 h5 N| ├──110.创建演示小部件用的页面.mp4 3.38M! a( a7 V$ k% J- F
| ├──111.FlatButton:文字按钮.mp4 3.43M
. Z' r# b% K5 o8 S! G| ├──112.RaisedButton:按钮.mp4 1.93M
" }- |! J4 }- p% ?; ^! s: s| ├──113.按钮主题:颜色、形状.mp4 5.82M
/ q! E- K1 u& I# @7 C( j* m| ├──114.OutlineButton:描边按钮.mp4 3.28M
4 J) m2 P: ?: T. d6 T/ w8 k2 q| ├──115.按钮容器Container:有固定宽度的按钮.mp4 1.88M
1 X- l4 ?* S' z5 z7 t m, d9 U| ├──116.按钮容器Expanded:占满可用宽度的按钮.mp4 2.63M
/ ?6 m8 L" Z ?( |+ ?+ L ]| ├──117.按钮容器ButtonBar:一组带边距的横排显示按钮.mp4 5.19M
8 @* [: y/ Q: ~& N+ I0 S, j| ├──118.整理:把演示放在单独的文件里.mp4 6.17M) d7 `- N2 `1 W, g
| ├──119.准备PopupMenuButtonDemo.mp4 2.54M ]* T( k" E. A9 q: \
| └──120.PopupMenuButton:弹出式菜单按钮.mp4 4.63M; l t/ S& L$ c# ?0 t- `
├──11.Flutter移动应用:输入
2 ~% ^3 }& Z0 d6 G' u| ├──121.介绍.mp4 2.65M
; W( L0 k) V4 z| ├──122.整理:在演示列表里添加FormDemo.mp4 2.68M1 B9 d0 ^2 U9 Z6 O0 G. b
| ├──123.创建用户输入相关的小部件的演示页面.mp4 3.27M6 J6 t, ^) E. M" ^" W
| ├──124.Checkbox:复选框.mp4 3.12M8 D! s" i) E( L5 c, ]1 M
| ├──125.CheckboxListTile:带标签与图标的复选框.mp4 2.71M3 _3 S2 f, {. H4 @0 K
| ├──126.Radio:单选按钮.mp4 3.93M
5 {; o# L. G' C8 \7 c, h| ├──127.RadioListTile:带标签与图标的单选按钮.mp4 4.20M0 V/ f5 K( a( e
| ├──128.Switch:开关.mp4 3.20M
; \ B( q$ ]/ Q| ├──129.SwitchListTile:带标签与图标的开关.mp4 3.35M
! u5 x7 L* g0 b4 C$ Z/ N3 s| ├──130.Slider:滑动选择器.mp4 5.27M
% A: j3 I3 ~. I0 i* T( ^7 R| ├──131.安装第三方包(演示安装Intl包).mp4 3.45M
2 w- K* G2 l2 r" A: h- q3 t. \| ├──132.显示格式化日期.mp4 3.27M1 R" O& v% ^) Q2 s* f
| ├──133.showDatePicker:选择日期.mp4 2.99M
7 [" u6 b$ J- e| ├──134.showDatePicker:获取选择的日期(async).mp4 3.42M5 ]0 ?; L+ f4 E. G
| ├──135.showTimePicker:时间选择器.mp4 4.70M
% A+ {0 V4 g" ^- w| └──136.Future:异步程序.mp4 3.39M8 v7 ?- \2 j7 {" G6 l5 D/ g8 S: ]
├──12.Flutter移动应用:对话框
9 M+ i& ?0 |+ m0 d| ├──137.SimpleDialog:显示对话框(showDialog).mp4 3.49M
- F* [/ _+ {) h+ M3 {; W' ?| ├──138.SimpleDialog:选项(SimpleDialogOption).mp4 2.38M n v2 l1 U4 B4 s' \. n
| ├──139.SimpleDialog:获取与使用选项的值.mp4 6.13M
# z, @+ W" `$ Z' \9 A, \| ├──140.AlertDialog:提示对话框.mp4 4.82M3 x1 {, y- B6 W% P) e5 F
| ├──141.AlertDialog:获取与使用动作的值.mp4 5.10M; R; B4 \) ]5 S$ @' W' y; b) ?
| ├──142.BottomSheet:底部滑动窗口.mp4 6.25M+ p% A: V# \' R7 R
| ├──143.BottomSheet:对话框式底部滑动窗口(showModalBottomSheet).mp4 3.86M
$ E, h/ d$ |. |9 e| ├──144.处理使用对话框式底部滑动窗口的数据.mp4 3.07M! _5 B7 i, h! p T- e/ d
| ├──145.SnackBar:操作提示栏.mp4 2.87M
( U6 I, G3 _$ V Q. X0 `+ i| ├──146.ExpansionPanel:收缩面板.mp4 4.30M3 `' D- s% ?- T6 L
| ├──147.ExpansionPanel:面板的收起与展开.mp4 3.02M- u* I4 f0 ?' q: z8 n
| └──148.ExpansionPanel:面板列表项目.mp4 9.83M
/ c/ k3 G! h- D4 A( u/ f8 q( c1 E├──13.Flutter移动应用:MDC 7 v8 r; n8 H8 O! J7 R5 I
| ├──149.介绍.mp4 3.25M, H/ p, n) `: j. c$ @9 X; O, M0 k
| ├──150.升级FlutterSDK后屏幕报错(0.8.1).mp4 1.43M
! n5 f: V) V0 r4 k$ N9 E( W/ E2 o| ├──151.Chip:小碎片.mp4 3.24M% S0 G6 y+ @2 u7 P: p9 x
| ├──152.Wrap:换行显示小部件.mp4 1.78M
" t2 W/ x, w$ ?. o+ F5 [| ├──153.Divider:分隔符.mp4 1.26M7 k/ h! y3 X4 [/ e3 u+ v' s
| ├──154.Chip:带删除功能的小碎片.mp4 2.20M( a$ c& f1 B% U% d
| ├──155.Chip:用列表生成带删除功能的小碎片.mp4 3.89M
. J/ c# j* l) ?1 ?- q| ├──156.ActionChip:动作碎片.mp4 2.87M
1 y) z8 u# t9 w; Y9 n2 k: v: B; \8 ]| ├──157.FilterChip:过滤碎片.mp4 5.48M
! j9 }( G/ X6 S) A' P3 @) y: X| ├──158.ChoiceChip:选择碎片.mp4 3.75M
* w, r9 c. g5 J" n( Z' f$ o| ├──159.DataTable:数据表格.mp4 3.92M
! x' T- V, u; A9 s| ├──160.DataTable:用列表生成数据表格.mp4 5.09M
4 j. `6 K; l' }' ^' B: D1 P. {' h, c( K| ├──161.DataTable:数据表格的排序.mp4 6.16M" C# v5 p0 y7 P2 _2 o. Y6 O
| ├──162.DataTable:选择数据表格行.mp4 3.66M
' \) M/ d/ w- D% i: e| ├──163.PaginatedDataTable:分页显示表格数据.mp4 10.39M% k: J" ?# `; t3 _' E1 G0 e" x- Q
| ├──164.PaginatedDataTable:排序.mp4 7.60M, Z) g% `5 v [+ D
| ├──165.Card:卡片.mp4 7.55M
- k* [2 t' \, w" P# I| ├──166.ClipRRect:圆角(给图像添加圆角效果).mp4 2.28M
. T6 T' A* {+ \& Z: }% Y9 P| ├──167.Stepper:步骤.mp4 4.02M4 N2 n$ i+ I4 |" {2 n
| └──168.Stepper:步骤的行为.mp4 5.32M( r) g& l4 k9 w' r
├──14.Flutter移动应用:状态管理
7 b6 i& C5 N9 |9 U1 O C. X' q/ |/ ^| ├──169.介绍.mp4 2.13M
" L T# x- |8 B U6 m5 e1 @( Q| ├──170.准备项目.mp4 1.41M4 K) b$ S1 V. G: b* b2 W' j
| ├──171.创建StateManagementDemo小部件.mp4 2.31M. H) g* |* B& G3 r
| ├──172.StatelessWidget:无变化状态的小部件.mp4 5.21M2 r4 A+ j; ]% @6 U7 J
| ├──173.StatefulWidget:带变化状态的小部件.mp4 4.37M
' u( z- R& z! l, i| ├──174.状态管理(由父辈管理状态).mp4 2.80M
; W' _6 L; n5 j2 c7 }2 M5 C| ├──175.从父辈那里传递个回调.mp4 2.93M
' ^+ e: A" F+ g t, ~/ e* g% ]3 L| ├──176.小部件树:WidgetTree.mp4 4.01M
* Q2 N( x# y& g| ├──177.InheritedWidget:直接把数据传递给需要的小部件.mp4 838.05kb0 S: m% X7 e$ {( G3 b$ p3 j, ]4 f
| ├──178.创建与使用InheritedWidget有效地传递数据给子部件.mp4 8.12M
/ u2 {& y. L: {7 G1 M# h- D| ├──179.ScopedModel:安装与基本用法介绍.mp4 2.14M2 w8 T2 C" T, \2 _ W6 q
| └──180.使用ScopedModel传递数据.mp4 7.74M
$ Z. K3 w- x# j4 `) X├──15.Flutter移动应用:Stream 9 O3 e j. {5 U+ [% e% Q8 K' m* t0 |! ~* o
| ├──181.介绍.mp4 2.00M- ?! L) m- E. Q9 [' B
| ├──182.准备项目.mp4 1.06M/ ]! k. V1 J* a, A1 S: u+ ~' i
| ├──183.创建StreamDemo.mp4 2.28M
/ C2 A' J. @* M2 |) j4 c| ├──184.创建与监听Stream.mp4 6.99M
& W' F3 K1 H. R" U7 C( y' `; E* G| ├──185.给Stream添加一个订阅(subscription).mp4 3.62M1 z, ^5 q% Q( X8 f; C
| ├──186.暂停、恢复、取消监听Stream.mp4 6.26M: ^3 y! x8 H3 p
| ├──187.StreamController:控制Stream.mp4 6.47M
, \7 i- ], m( u$ U( y| ├──188.StreamController:使用Sink往Stream上添加数据.mp4 2.07M
, [2 k) I9 `* l! ^1 @| ├──190.在界面上显示Stream上的数据.mp4 2.05M
: j4 [) {8 W. e| └──191.StreamBuilder:根据Stream上的数据构建小部件.mp4 2.60M
- n! I% v5 C0 x├──16.Flutter移动应用:RxDart 1 {5 B+ W$ K. k' Q2 Y' I% @
| ├──192.介绍.mp4 1.92M }$ w& F1 u# @- z1 Q* ^; K* N
| ├──193.准备项目.mp4 1.01M2 l6 @! p8 d x
| ├──194.创建RxDartDemo.mp4 2.43M
& H* D9 o/ c1 H' e: a8 S% S| ├──195.安装RxDart包.mp4 1.60M! a3 k. m8 F# ?" ^5 Y; O
| ├──196.Rx,RxDart,Observable与Stream.mp4 847.17kb
3 D6 r3 X, B' D" j. E" C| ├──197.Observables.mp4 3.03M! T E6 i& Q5 e$ a0 O4 s
| ├──198.创建Observables的几种方法.mp4 3.91M Z( W9 i) Y0 u
| ├──199.使用Subjects控制Observables.mp4 4.08M
7 r0 w/ W2 F: A, d7 I4 G| ├──200.BehaviorSubject.mp4 1.37M
+ Z) a, U, @( g, C! a# q i| ├──201.ReplaySubject.mp4 1.79M" h2 a3 g% h- {- R! ]1 E) A P
| ├──202.准备一个文本框往Observable上添加数据.mp4 6.02M
. K1 P% \6 K }/ L| ├──203.RxDart的数据转换方法(map).mp4 1.70M; Z8 w% m; S$ C* I/ j+ A
| ├──204.where.mp4 1.31M
, p/ s- U5 t. B| └──205.debounce.mp4 1.65M
6 X0 y9 [% m2 o/ F1 N. i/ S% u├──17.Flutter移动应用:BLoC . i0 ?, y6 o2 p- V
| ├──206.介绍.mp4 1.96M, L) a# r+ T% c9 @& A+ x1 ]
| ├──207.准备项目.mp4 1.04M8 Q" z* a3 B3 B' K" \3 `9 Q' O% O
| ├──208.创建BlocDemo.mp4 1.73M0 p* O _, @" w) o, W
| ├──209.BLoC:BusinessLogicComponent.mp4 1.93M& `$ a d C3 y0 u- B
| ├──210.BLoC应用案例(记数器):准备基本小部件.mp4 2.92M
# J' M$ o1 B, U. F4 d| ├──211.使用InheritedWidget传递BLoC.mp4 5.12M
+ b4 j2 t- C. P: f; n| ├──212.创建与使用BLoC:用Sink输入数据.mp4 4.58M4 e% _. V6 q% D. J/ X
| └──213.创建与使用BLoC:用Stream输出数据.mp4 5.88M
; J, i9 `8 G5 @; [5 v1 W├──18.Flutter移动应用:网络请求
' l/ C p# |* M| ├──214.介绍.mp4 2.14M
0 I; `+ }4 P7 W4 e| ├──215.准备项目.mp4 1.08M
- J: f4 C) f \( l7 I| ├──216.创建HttpDemo.mp4 1.92M
3 Y: H- l L; G2 h5 \| ├──217.安装http包(升级FlutterSDK).mp4 4.08M
4 V7 |6 ]( M+ B' C1 t3 n| ├──218.使用http客户端请求数据.mp4 5.53M- ?0 u$ R9 |( R" }4 z0 G6 a6 {
| ├──219.JSON转换(dart " w1 n- Q \! j
| ├──220.使用Model类转换数据:fromJson.mp4 3.28M
# z2 s# g# z+ x+ U+ p9 c% S4 t0 t. ?| ├──221.使用Model类转换数据:toJson.mp4 1.69M" M3 e1 ^& g$ E/ N3 Y7 h
| ├──222.使用请求数据:把响应的数据转换成自定义Dart对象.mp4 6.26M5 g# o2 }- g3 d! Y
| └──223.FutureBuilder:使用Future构建小部件.mp4 7.20M" O. p+ \0 P U( K* q
├──19.Flutter移动应用:动画 5 v- Q. Q, Q# R6 Z% R
| ├──225.准备项目.mp4 1.18M" B/ Z! p2 Y: i
| ├──226.创建AnimationDemo小部件.mp4 2.94M$ e% j, ]/ q# C) D, C# w
| ├──227.AnimationController:动画控制器.mp4 4.84M
5 b8 ?& d5 Q' V! ]* q; X| ├──228.使用动画的值.mp4 4.48M
% b {, f- G0 K* a9 Y7 q3 P| ├──229.动画的状态与运行.mp4 5.29M2 p! f5 a9 y2 z% m# \ z5 l
| ├──230.Tween:设置动画范围值(数字、颜色).mp4 6.30M6 k- S i$ a/ n1 z
| ├──231.Curve:动画曲线.mp4 2.30M3 q" r1 K2 p2 V2 ` k
| └──232.AnimatedWidget:动画值有变化就自动重建自己的小部件.mp4 5.12M$ q& B7 x# x' e) @. q9 W: k: G
├──20.Flutter移动应用:国际化
/ V K7 @+ {" f$ u N; {/ C| ├──233.介绍.mp4 2.17M
' y5 S! H) c! w h| ├──234.准备项目.mp4 1.28M
8 V7 K. p/ D0 B' b| ├──235.创建I18Demo小部件.mp4 1.79M0 s/ L' a7 u$ P$ E
| ├──236.安装与配置Flutter应用的国际化.mp4 4.79M" p; |$ j. j3 P$ \" g
| ├──237.配置iOS项目使用多种语言.mp4 1.92M
$ K- l4 q2 S' A9 K| ├──238.演示Material组件的多语言.mp4 4.21M; L* n8 r0 \' b& ~
| ├──239.寻找Localizations小部件.mp4 3.59M
' S, c. r1 p0 g/ @- X8 || ├──240.获取与设置语言和地区(理解Locale类与Localizations小部件).mp4 5.24M
v, k% y/ \9 [5 M| ├──241.定义本地化资源类.mp4 2.85M
1 T# t$ D0 B- R| ├──242.加载本地化资源.mp4 4.97M* s+ W' r ^! Z5 y% p; ~( O
| ├──243.使用本地化资源.mp4 4.22M
3 f% U: d3 ~4 }0 _: U# H; a7 T| ├──244.Intl:定义需要翻译的信息.mp4 3.16M2 P. |: t' X# }
| ├──245.提取信息模板并翻译信息.mp4 3.79M
9 \2 {) E, V4 S n2 `9 }9 L. v1 o| ├──246.基于arb生成dart文件.mp4 1.98M
$ m4 t7 J7 [! g; J# b| └──247.加载与使用本地化信息.mp4 7.85M
; H: o# `1 ?+ Z( {* G: [└──21.Flutter移动应用:测试
6 W4 i+ ?' C( Q) J| ├──248.介绍.mp4 2.41M' A# ~4 e) m7 q9 A
| ├──249.准备项目.mp4 1.15M/ i" g8 W- O( w" `
| ├──251.Unittesting:单元测试.mp4 4.19M
; _3 _: N0 ?& Z3 c| ├──252.运行测试.mp4 2.31M
9 |! l: b2 g1 @& g/ q| ├──253.WidgetTesting:测试小部件.mp4 4.95M2 z6 x' U9 N) J' ]! ~0 k4 s2 C
| ├──254.找到并验证小部件(Finder与Matcher的用法).mp4 2.34M4 c2 z, V+ ^& z, P2 d
| ├──255.测试小部件的点按行为.mp4 5.52M
2 [6 y0 F. k' Q" E| ├──256.Integrationtesting:集成测试.mp4 4.97M0 n( ^% G, a+ n: E
| └──257.编写与运行集成测试.mp4 5.48M ?1 t0 Z( [2 |. [& x
1 ~) B$ X" Y6 y% D
! Y8 P3 K+ m1 m9 W2 L+ [资源下载地址和密码(百度云盘): [/hide] 百度网盘信息回帖可见% F5 ?0 a9 e" j# ~; }1 K
8 s+ }" d9 t4 G; `( O
/ L, Y- v1 Z: L( I
/ W2 }! K/ U* L6 Z# O' ]; U( t本资源由Java自学网收集整理【www.javazx.com】 |
|