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