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