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