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