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