From 94bd8510c0f1c4cae4272d2baed4de7a1e919fee Mon Sep 17 00:00:00 2001 From: "jianping.xwh" Date: Tue, 8 Jan 2019 19:18:12 +0800 Subject: [PATCH] merge devlop --- .gradle/3.5.1/file-changes/last-build.bin | Bin 0 -> 1 bytes .gradle/3.5.1/taskHistory/taskHistory.lock | Bin 0 -> 17 bytes .gradle/buildOutputCleanup/built.bin | 0 .gradle/buildOutputCleanup/cache.properties | 2 + .../buildOutputCleanup/cache.properties.lock | 1 + .vscode/launch.json | 13 + .vscode/settings.json | 4 + assets/app.db | Bin 45056 -> 45056 bytes assets/images/btn_icon_dingyuehao_normal.png | Bin 0 -> 2779 bytes assets/images/food01.jpeg | Bin 0 -> 21485 bytes assets/images/food02.jpeg | Bin 0 -> 25171 bytes assets/images/food03.jpeg | Bin 0 -> 27898 bytes assets/images/food04.jpeg | Bin 0 -> 24675 bytes assets/images/food05.jpeg | Bin 0 -> 18556 bytes assets/images/food06.jpeg | Bin 0 -> 12162 bytes assets/images/normal_user_icon.png | Bin 0 -> 8419 bytes assets/images/paimaiLogo.png | Bin 0 -> 9850 bytes assets/images/timg.jpeg | Bin 0 -> 120536 bytes ...reenshot_20181121-170331_Samsung Notes.jpg | Bin 0 -> 196274 bytes docs/jiegou.png | Bin 0 -> 108487 bytes lib/common/Style.dart | 8 +- lib/common/high_light_code.dart | 359 ++++++++++++++++++ lib/common/iconNames.dart | 15 + lib/common/myListView.dart | 70 ++++ lib/common/net_utils.dart | 17 + lib/common/provider.dart | 8 +- lib/common/sql.dart | 41 +- lib/common/util.dart | 90 +++++ lib/common/widget-demo.dart | 75 ++++ lib/common/widget_demo.dart | 99 +++++ lib/common/widget_name_to_icon.dart | 144 +++++++ lib/model/cat.dart | 2 +- lib/model/story.dart | 12 +- lib/model/widget.dart | 102 +++-- lib/routers/application.dart | 10 +- lib/routers/router_handler.dart | 2 +- lib/routers/routers.dart | 6 +- lib/views/FirstPage.dart | 54 ++- lib/views/FourthPage.dart | 4 +- lib/views/ThirdPage.dart | 1 + lib/views/category.dart | 208 +++------- lib/views/widgetFeature/FirstPageItem.dart | 51 +++ lib/views/widgetPage.dart | 103 ++--- lib/views/widgetPage/cate_card.dart | 127 +++++++ .../Form/Button/DropdownButton/demo.dart | 143 +++++++ .../Form/Button/DropdownButton/index.dart | 102 +++++ .../elements/Form/Button/FlatButton/demo.dart | 129 +++++++ .../Form/Button/FlatButton/index.dart | 189 ++++++++- .../Button/FloatingActionButton/demo.dart | 117 ++++++ .../Button/FloatingActionButton/index.dart | 193 ++++++++++ .../elements/Form/Button/IconButton/demo.dart | 94 +++++ .../Form/Button/IconButton/index.dart | 168 ++++++++ .../Form/Button/OutlineButton/demo.dart | 122 ++++++ .../Form/Button/OutlineButton/index.dart | 217 +++++++++++ .../Form/Button/PopupMenuButton/demo.dart | 144 +++++++ .../Form/Button/PopupMenuButton/index.dart | 90 +++++ .../Form/Button/RaisedButton/demo.dart | 130 +++++++ .../Form/Button/RaisedButton/index.dart | 218 ++++++++++- .../Form/Button/RawMaterialButton/demo.dart | 85 +++++ .../Form/Button/RawMaterialButton/index.dart | 189 +++++++++ lib/widgets/elements/Form/Button/index.dart | 36 ++ .../elements/Form/CheckBox/Checkbox/demo.dart | 74 ++++ .../Form/CheckBox/Checkbox/index.dart | 112 ++++++ .../Form/CheckBox/CheckboxListTile/demo.dart | 130 +++++++ .../Form/CheckBox/CheckboxListTile/index.dart | 93 +++++ lib/widgets/elements/Form/CheckBox/index.dart | 20 +- .../elements/Form/Input/TextField/index.dart | 67 +++- .../Form/Input/TextField/text_field_demo.dart | 48 +++ lib/widgets/elements/Form/Input/index.dart | 22 +- .../elements/Form/Radio/Radio/demo.dart | 57 +++ .../elements/Form/Radio/Radio/index.dart | 57 +++ .../Form/Radio/RadioListTile/demo.dart | 47 +++ .../Form/Radio/RadioListTile/index.dart | 56 +++ lib/widgets/elements/Form/Radio/index.dart | 21 +- .../elements/Form/Slider/Slider/demo.dart | 89 +++++ .../elements/Form/Slider/Slider/index.dart | 93 +++++ .../Slider/SliderComponentShape/index.dart | 0 .../Form/Slider/SliderTheme/demo.dart | 63 +++ .../Form/Slider/SliderTheme/index.dart | 75 ++++ .../Form/Slider/SliderThemeData/demo.dart | 63 +++ .../Form/Slider/SliderThemeData/index.dart | 71 ++++ lib/widgets/elements/Form/Slider/index.dart | 24 +- .../Form/Switch/AnimatedSwitcher/demo.dart | 52 +++ .../Form/Switch/AnimatedSwitcher/index.dart | 47 +++ .../elements/Form/Switch/Switch/demo.dart | 76 ++++ .../elements/Form/Switch/Switch/index.dart | 99 +++++ .../Form/Switch/SwitchListTile/demo.dart | 28 ++ .../Form/Switch/SwitchListTile/index.dart | 45 +++ lib/widgets/elements/Form/Switch/index.dart | 25 +- .../elements/Form/Text/RichText/index.dart | 86 ++++- .../elements/Form/Text/Text/index.dart | 110 +++++- lib/widgets/elements/Form/index.dart | 10 + .../elements/Frame/Box/Fittedbox/demo.dart | 49 +++ .../elements/Frame/Box/Fittedbox/index.dart | 108 ++++++ .../elements/Frame/Box/RenderBox/demo.dart | 22 ++ .../elements/Frame/Box/RenderBox/index.dart | 63 +++ .../elements/Frame/Box/SizeBox/demo.dart | 20 + .../elements/Frame/Box/SizeBox/index.dart | 68 ++++ .../elements/Frame/Box/TextBox/demo.dart | 1 + .../elements/Frame/Box/TextBox/index.dart | 50 +++ lib/widgets/elements/Frame/Box/index.dart | 1 - .../Material/MaterialAccentColor/index.dart | 41 ++ .../themes/Material/MaterialApp/demo.dart | 32 ++ .../themes/Material/MaterialApp/index.dart | 53 +++ .../themes/Material/MaterialButton/demo.dart | 51 +++ .../themes/Material/MaterialButton/index.dart | 47 +++ .../themes/Material/MaterialColor/demo.dart | 230 +++++++++++ .../themes/Material/MaterialColor/index.dart | 44 +++ .../Material/MaterialPageRoute/demo.dart | 103 +++++ .../Material/MaterialPageRoute/index.dart | 40 ++ .../Material/MergeableMaterialItem/demo.dart | 70 ++++ .../Material/MergeableMaterialItem/index.dart | 45 +++ lib/widgets/themes/Material/index.dart | 45 +++ lib/widgets/themes/index.dart | 14 + 114 files changed, 6715 insertions(+), 336 deletions(-) create mode 100644 .gradle/3.5.1/file-changes/last-build.bin create mode 100644 .gradle/3.5.1/taskHistory/taskHistory.lock create mode 100644 .gradle/buildOutputCleanup/built.bin create mode 100644 .gradle/buildOutputCleanup/cache.properties create mode 100644 .gradle/buildOutputCleanup/cache.properties.lock create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 assets/images/btn_icon_dingyuehao_normal.png create mode 100644 assets/images/food01.jpeg create mode 100644 assets/images/food02.jpeg create mode 100644 assets/images/food03.jpeg create mode 100644 assets/images/food04.jpeg create mode 100644 assets/images/food05.jpeg create mode 100644 assets/images/food06.jpeg create mode 100644 assets/images/normal_user_icon.png create mode 100644 assets/images/paimaiLogo.png create mode 100644 assets/images/timg.jpeg create mode 100644 docs/Screenshot_20181121-170331_Samsung Notes.jpg create mode 100644 docs/jiegou.png create mode 100644 lib/common/high_light_code.dart create mode 100644 lib/common/iconNames.dart create mode 100644 lib/common/myListView.dart create mode 100644 lib/common/net_utils.dart create mode 100644 lib/common/util.dart create mode 100644 lib/common/widget-demo.dart create mode 100644 lib/common/widget_demo.dart create mode 100644 lib/common/widget_name_to_icon.dart create mode 100644 lib/views/widgetFeature/FirstPageItem.dart create mode 100644 lib/views/widgetPage/cate_card.dart create mode 100644 lib/widgets/elements/Form/Button/DropdownButton/demo.dart create mode 100644 lib/widgets/elements/Form/Button/DropdownButton/index.dart create mode 100644 lib/widgets/elements/Form/Button/FlatButton/demo.dart create mode 100644 lib/widgets/elements/Form/Button/FloatingActionButton/demo.dart create mode 100644 lib/widgets/elements/Form/Button/FloatingActionButton/index.dart create mode 100644 lib/widgets/elements/Form/Button/IconButton/demo.dart create mode 100644 lib/widgets/elements/Form/Button/IconButton/index.dart create mode 100644 lib/widgets/elements/Form/Button/OutlineButton/demo.dart create mode 100644 lib/widgets/elements/Form/Button/OutlineButton/index.dart create mode 100644 lib/widgets/elements/Form/Button/PopupMenuButton/demo.dart create mode 100644 lib/widgets/elements/Form/Button/PopupMenuButton/index.dart create mode 100644 lib/widgets/elements/Form/Button/RaisedButton/demo.dart create mode 100644 lib/widgets/elements/Form/Button/RawMaterialButton/demo.dart create mode 100644 lib/widgets/elements/Form/Button/RawMaterialButton/index.dart create mode 100644 lib/widgets/elements/Form/CheckBox/Checkbox/demo.dart create mode 100644 lib/widgets/elements/Form/CheckBox/Checkbox/index.dart create mode 100644 lib/widgets/elements/Form/CheckBox/CheckboxListTile/demo.dart create mode 100644 lib/widgets/elements/Form/CheckBox/CheckboxListTile/index.dart create mode 100644 lib/widgets/elements/Form/Input/TextField/text_field_demo.dart create mode 100644 lib/widgets/elements/Form/Radio/Radio/demo.dart create mode 100644 lib/widgets/elements/Form/Radio/Radio/index.dart create mode 100644 lib/widgets/elements/Form/Radio/RadioListTile/demo.dart create mode 100644 lib/widgets/elements/Form/Radio/RadioListTile/index.dart create mode 100644 lib/widgets/elements/Form/Slider/Slider/demo.dart create mode 100644 lib/widgets/elements/Form/Slider/Slider/index.dart create mode 100644 lib/widgets/elements/Form/Slider/SliderComponentShape/index.dart create mode 100644 lib/widgets/elements/Form/Slider/SliderTheme/demo.dart create mode 100644 lib/widgets/elements/Form/Slider/SliderTheme/index.dart create mode 100644 lib/widgets/elements/Form/Slider/SliderThemeData/demo.dart create mode 100644 lib/widgets/elements/Form/Slider/SliderThemeData/index.dart create mode 100644 lib/widgets/elements/Form/Switch/AnimatedSwitcher/demo.dart create mode 100644 lib/widgets/elements/Form/Switch/AnimatedSwitcher/index.dart create mode 100644 lib/widgets/elements/Form/Switch/Switch/demo.dart create mode 100644 lib/widgets/elements/Form/Switch/Switch/index.dart create mode 100644 lib/widgets/elements/Form/Switch/SwitchListTile/demo.dart create mode 100644 lib/widgets/elements/Form/Switch/SwitchListTile/index.dart create mode 100644 lib/widgets/elements/Frame/Box/Fittedbox/demo.dart create mode 100644 lib/widgets/elements/Frame/Box/Fittedbox/index.dart create mode 100644 lib/widgets/elements/Frame/Box/RenderBox/demo.dart create mode 100644 lib/widgets/elements/Frame/Box/RenderBox/index.dart create mode 100644 lib/widgets/elements/Frame/Box/SizeBox/demo.dart create mode 100644 lib/widgets/elements/Frame/Box/SizeBox/index.dart create mode 100644 lib/widgets/elements/Frame/Box/TextBox/demo.dart create mode 100644 lib/widgets/elements/Frame/Box/TextBox/index.dart delete mode 100644 lib/widgets/elements/Frame/Box/index.dart create mode 100644 lib/widgets/themes/Material/MaterialAccentColor/index.dart create mode 100644 lib/widgets/themes/Material/MaterialApp/demo.dart create mode 100644 lib/widgets/themes/Material/MaterialApp/index.dart create mode 100644 lib/widgets/themes/Material/MaterialButton/demo.dart create mode 100644 lib/widgets/themes/Material/MaterialButton/index.dart create mode 100644 lib/widgets/themes/Material/MaterialColor/demo.dart create mode 100644 lib/widgets/themes/Material/MaterialColor/index.dart create mode 100644 lib/widgets/themes/Material/MaterialPageRoute/demo.dart create mode 100644 lib/widgets/themes/Material/MaterialPageRoute/index.dart create mode 100644 lib/widgets/themes/Material/MergeableMaterialItem/demo.dart create mode 100644 lib/widgets/themes/Material/MergeableMaterialItem/index.dart create mode 100644 lib/widgets/themes/Material/index.dart diff --git a/.gradle/3.5.1/file-changes/last-build.bin b/.gradle/3.5.1/file-changes/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/.gradle/3.5.1/taskHistory/taskHistory.lock b/.gradle/3.5.1/taskHistory/taskHistory.lock new file mode 100644 index 0000000000000000000000000000000000000000..1a1ada5203be8e7b6e776c64bbe342499620c2d2 GIT binary patch literal 17 TcmZQ}US2Noawhu}1}FdkEbs%G literal 0 HcmV?d00001 diff --git a/.gradle/buildOutputCleanup/built.bin b/.gradle/buildOutputCleanup/built.bin new file mode 100644 index 00000000..e69de29b diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 00000000..061d565e --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Thu Nov 22 22:29:42 CST 2018 +gradle.version=3.5.1 diff --git a/.gradle/buildOutputCleanup/cache.properties.lock b/.gradle/buildOutputCleanup/cache.properties.lock new file mode 100644 index 00000000..40fdece9 --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties.lock @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..bbfd110a --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,13 @@ +{ + // 使用 IntelliSense 了解相关属性。 + // 悬停以查看现有属性的描述。 + // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Flutter", + "request": "launch", + "type": "dart" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..9a7349a6 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "editor.fontSize": 14, + +} \ No newline at end of file diff --git a/assets/app.db b/assets/app.db index dd2875926c520559625e0940b790eff2dfe7478a..730461b2edc4ec80bf1dfc0a6b47904762789e97 100644 GIT binary patch literal 45056 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 diff --git a/assets/images/btn_icon_dingyuehao_normal.png b/assets/images/btn_icon_dingyuehao_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..669f76fe4e06288fa3b762ba80b9ec710f0e16b2 GIT binary patch literal 2779 zcmaJ@dpwkB8=lSil;bie#u&et&#@@9+1%&vQS&>$>jyx$oP^6@4G$ye(7tEw#jCKe-|Uw_v^<9DC8qV z5bqBCt0*cZ5JKee00;(-aiAm7D2NLVj>0(MP$+u{8i{g5ppXbO&H;tOJGtOd&X7+J zRGy8;h{gwzygucUNAA#Afq;ugAd-`l;mMA04lf3Q!r^cTBpQK6JIE0Z{1mo;CUju) zEk7%e06v|^y`(dC1Swp>re#S?h|O~B!Wa5xE{yBHYD5peji z94>@NglwhI=uGx{Z1a&oq2PVkd;yJ32Yg8GP`L!0$zIP%bDG*@-~H zk;!Bf361e2;LvF2&s-9Ret-qA1)sT$zqyWI<*s{y#g%6!0X$|B!0_U6Sdfo*#xuWO z3-YUapSX;#*Mj;g7a=bOu|C=Vn)K%*xqa5RUwkVMzBnIX%k9pS`?}* z(z18|?knX>`sfXn7f)Hyg`-c^$G?QjshTULMq_%FjvEoke-p zS5J*;{M1{XfOt%7iWb-SFRnF(N~x_6AJOiPnQpfG;JxYhreY^U4aMdq=e9&U#coPN zZP^Y5i=d*;a?hc}bZpYuVoW|WJwjOBzGRm}{~-J2;r-r`XwM46D8)P`EPciEXV;#|CXcCICng#k?zLcV54`*!9c@eL z5~NvZh@StR>eiGx{jG$!YsA8&{JY7hKla~UUh$IS?M|K{?xpl2j55!OImQ>Hk!{iNQNt_6$2*b z=j!afk#*lrPzXI=t#R))Mg~(aZ#v6IczK}ipiJ*7R$9ws;8T*#`Q|ADU5`OZ#~M4V zR=10D57mq)K2zIyN4jhTem~`}9q`sxB)w=7u4r&;eA52)o2LuWlS;h-u)dk^WhegC zRr(&6D#&|{ZStb)91G?06;6l_Z@N5Dd2vT7GBws=_Vq?n*Md5hqx4Syy&|k*dAm*z zN%L6Lwt(8gZe46*H1o#jv4tBL%WLpJ#AOe{%k<4NSybW86n*Jc2Q2KMrN^^DFs7ip zCnBVB?Q{l$zX~19>i{=LnR=$Z^p*{o;is*0#+&y)R$ZRh4}*@EU6=~>={!tmxUL2! z<&oeN$HZaZ&fl({ooE%WWRa%dFd=N~&=u0uk=(%&=jcfBiEGdpdZ9OrEqbbXlS-H- zHwQk;!_C2_%vxXcV%Vp$HEpIIM!?wLR2nHj-6W9G#EdY#!b4PH4C80It+h8a(ZZ;4 z=(u*dgRb#vf_mN|muSiP-=AhIbhvmBW_IT2R@V&OD#Pm2sbNdXaGNG&&O1omh=2Y&F8?6u59hkYA4+w>+5bH6&)5nrw!)>X2DVAhMRYetfOtzT zrB8zHpM;H4uS7n*5-_JunA~Lu#|Lkj=&rqG8=*I%)VsSk*y@_Z3R`&bhuGmwY5VRT z!KH5ZsG<@2qk{F6u64k2Y8?Q@vK?+8P#PSHuVKZjo5T}8UdV49YVN;bGI1wPiS1x@ zVoNqE%Q$kJ)CN0Uq`u*_&K7QGMSFmX#)~eqBaPXnIkR(Gx{W&`d$le@kihh5<$_w} zekn~8lJ)|cIgS<0O9&$)(YIPF!TX9|Mb)Ig)6NwYJ0QJ*e`mvzrbrli;_p* z9Qvt>w%{UqNq_Y&2s|s&$eA_W*ELk*b_et!iz4F|P7(YM|EB7nk!Z7Jk)XmNs0l1% zwER+!-!CjN4&_Hg|J)i;Sqe_NwfC)& zmO0L(_O6)~P@Q*2a`x*hmHA8R?^}h{+)h0g89i*Fx||v1G~ijkEB1WricZ&K)njRM zbD`+BNs3GP;jl}uB2=}?X;bm5aoO}mS*JYmSfna z`I2m05$s%o`l34#V6 z+ZHK~U4zW)_dRv3#3~IL+Zu#-Clx8OVfk*kIhi@VlcQi_a59(W)HAZ`VV+db@hZU3 z(LAuVB`+iI?cnSHJ2wqy|Hq2GZ&=*gNkBO>d2nxd0XRj8npM(%P#dB=)~+`$qG){3 aK!Q3R>fP|xHql@I-Si;`kgj<~rvC>=oSb+7 literal 0 HcmV?d00001 diff --git a/assets/images/food01.jpeg b/assets/images/food01.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..da111751137cb6d20c771fb876b03cb90fec8a73 GIT binary patch literal 21485 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%0AF`}cC; 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 UD{A+BNT{NU@y|#oqKW|j*;i9|hX4Qo literal 0 HcmV?d00001 diff --git a/assets/images/food02.jpeg b/assets/images/food02.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..7bb62d1714a942060dad10222f89bc78cd749afb GIT binary patch literal 25171 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 Bw#@(l literal 0 HcmV?d00001 diff --git a/assets/images/food06.jpeg b/assets/images/food06.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..53ce675c0060af2f30a96118ae9befa30b0e46f8 GIT binary patch literal 12162 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

hpb!~D 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 literal 0 HcmV?d00001 diff --git a/assets/images/paimaiLogo.png b/assets/images/paimaiLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..0df24bcf991f9506baff2ebf9c62645f9be2e2bc GIT binary patch literal 9850 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 Z>(&jaxvMa5(q%F-107TCI!(ve{{zW(j#U5v literal 0 HcmV?d00001 diff --git a/assets/images/timg.jpeg b/assets/images/timg.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..418bbc7c173d96d4266c4ce231c84de528996e20 GIT binary patch literal 120536 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%0DB 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%0D_)XpFQNxXv`)z ziRE1rkMNRbJ_n8vPLY1!^=gwMO5UbdYK3T1?*^MGUC*NIa>ENGDzEP~7l%0DO_eS-z3==KlbzN7lGH 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⁡W^U-#q(i zA8b+{$?~O2k^n1jeI7~jG^tR^3EG;UX;i6Hh;jhTebm$YO)6DG-cEroe>RkN6Yix- zk~3q|vb^c(-r)X?Dph-kW103*@25MXtj9F#N|jlg+Q7f2JZb^#k9{gsBIB_C*~8O1 AvH$=8 literal 0 HcmV?d00001 diff --git a/docs/Screenshot_20181121-170331_Samsung Notes.jpg b/docs/Screenshot_20181121-170331_Samsung Notes.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fbff9a55ffe5fceb40574c2f8df86e393a7a44b9 GIT binary patch literal 196274 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

$F0POumg0NgutNhrNW~ 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%0AX>^ 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

pf# zC9=WtA$`Wv2ll}Tsx^jg6)O8mowvxg8B_vp6juUkr)iE|lkgpp{DT#!j$elq3D;&B z9R&v|0|0zKsUZO~%Gajj6$6|c%q4)hux^TVlLe<9M;%(^nJsQPBU|Me+l5j%#FKhobo@)3T~f}eW$T7U^a*>d zHddKr|MboFN9iu3WQuV+_u8U&H4@>7Ho*odorpjI$BtHy7DJ~+?B#Kt{33Y=D#dvr}E3~&^L-jVI~-C zk0=@++_>F}>t#rE)gz>7dyQ>`x467Xs=$nPurWS5WX1xF_L{U#(PTZz>m%F1)H7d> z&WZDRusE%4VLW>JVs&o~FMj{?-|%M@0f3(tkRtw zh=t0&@m6l*-#P%W)&u+$4FK(P9sNbdX$#a?uo}dvC(PKNyu+R*%zzNhwTRDavH7h{wu8wn78ChG&u3p-9}s>W!X*)mt9WS@+8?=V zF{HorTVSctuN2>3s{DS5Vb7W68rEwj`-A!CKeIy#RMTSPTn!Veb#xfYziTy3{$e_O z%>~xVCxLg#)qg0cfv)*IV=F4kp5^gv5lo~0RdZwkO~?^I-;Alz$6L=ZkVjf2*UN-^ z!;Nqd#6V?(J^@fbHHjpmD1xXwu;?{~NQ#SlOwng|>G1n^@jcprKq8!Jk;72kul28! zG~;F})kuwA=NsZ+M)+!o2QC!Rtq;U|Ia_T3^PzfSbxnfye#v#hP=PUDR}t~1GM$sx zETKsAgj#H_clDm$(;6Ib$1j!7JLmo4TJIZ{r*#$#gtf}H@*YWkV>3c2VPE15c1<|j zrw5mo^Yj(;*8!#dZ>sXkAe`~xqVmM)m1yU`!NgpnHY&oE@XGZ1@OrNZT?+F-QG>ry zX*ArJSY*bApM7aIbt?Q0fpmll&EER-SloKR66jC@6` zF5I$vY-pzn6z>XX*F+m_Fi<#B5YHyu!{LF3(T*~=9MPOQli=9SNW%)A5>R(GjRyBG zj~*{xvOO)&k`vA=g5aH@A0!Y$+9`iu)^*j>beHAZK2!o`PhMJb)Q4Vd=9|wi=4BwJ z7I4W)A?^_2U?BJ8iX4$pxDsS|w-p|gYqz49ySh4(y^L;VN?tYgclDzjBHW=3_S>qJ zeol2UA-DxoNsF$UzcrT$+RD|$<09hh^uMC~i5%t|BMx4@mVKNHsK}tAGO!Sh#HR`h zO>RKDEdxfIhMDR!TqZ>Z1Ri8IN@C0u$G?>uiBE-zPyxgPpD4PGx~OeDdn{77Fr33M zTQZ(18@m>~0Sm&C4x=G~fjK{Z?D7cRv|~QKtH|S!f}+;Up|Rp!q-YMmMes+e!e&*0 ztWU{%TpvA74+^sfssD}vV>n9)0d5l}TZMswtaCq9ghZb;-HB`<_ z0htUP4U7=^A`JcTb*qkydt39VCcS$me#JE+Qg|Ys@|D+N@z0;PpKg?VkaYjFyKCn= zF&UE}3k$yCw#KO7W1g+GT~TL$mE}~`dEz+8~ooudbsg;NkT9Ajq z|0K0-17h(K`4K+-KZOto9$51r*mYVwGTd>xONCh8*!H<*)ixfU!xv*s$dJO6BAn_j zy$$#JZp&myCP!Lhp$U;HccBE)IgZnJQ23y>WL2ks5dFNYL|!y*@e|9NV&sxf)c_x) z*C$@Fup*14C@*F{ty)P6B_sWbR6bQrD=NtJo;6Fr<)}Ebo*o5NbbFpHXr#h9j$T_Bc@g#2u#~OeA9gt`Mtf@9Fm}bfE<((B=xG<2RdS9smzc)(=qEU-H z>wv-Cig*DIYRnj+alrxxjXaP7OZ7J`qS#8|pyo|n{A=i#|C{fIS1|bGLNpl2+GW1u z7KGjL2eg~aq5K0`bE$zqVF!7D%}WJaG!yhqk}R-ZLbRv>JDBm7iv3ei?3w^;?N#O+ zwRc?XRSxSy|8Q9gn7G88vtjjxAufNiX}R6LU&T~H#1{1d-M^j{Ryap<|B=E3=XWdk zOYl5p#9GkxWc3kXX{OB?R@m7?sWuPxOSJW)oIebOZ|Mshs?NBQo-8ad10uLSc3jXO zPgdGB><_`XEja!rYGy?6!GoCG%V(XWM-cgL=;3cqn4khz1gOza?U`l!#CjqjrZa!HWHGDopz#;GgE1 zv}>G}Ulb^`q5Zpu9U=1MzV3LWVGa1()k~|I&kJf*&im7)W=yxM0pZpKex|iD*Id`q zS*L0^N<4+4CquK!FkOP}ABrT>kA}sd-;9JoQ-!Aa)qko=r@u=D z+4KMiu^oT07xj^2^#7@89tXC9^nV}?pQ`;ZU@$2o6`d77sUY1;`I#Plx&7eRAlH25 zY{5N(i|m)jqkXniu>d}XuyEhUno^U+e0}LOdTyqzJZvj*HlsZbru8uoa{5p0HeE;P zKdjRl=BV++3(H;1qva9*)Ma_E?xS-zv&_UM@Z;ifG%g3Yn%DV_>3{h)5`6H;h-CJp zg^z;`6lunqeU)+EB+#TCf*BkL3-z^Qon&&f)4-7iertMsHLg=Bdc|oC%kXE1#ls_r z7U^&kvds`B25JO$TIPu19()#qhT6+XIdtU}dvptnLUowsMeRVF4W7J(EU=d9yYBu1Ej{8U@yYQ|to{K>}0^U_My!IvzA_H6t|_ zHq+sAA5%T7YKN{2yN|&In^e8EH#L^YONT$2+voI zOc?c;yU+94BE=S)ZT_a*JUn=we5?L@fPGCJ9lE{p_H*`MCDlZTFClsXYr5lan%AI~ z+Yt(6ZhJ7Yy3$r7Us3brQB0m~<5X^_~B}RfCE@7rYuuuI(;Sqo}U}iQ#dbT#G zJXmhd{=1Lu_xd98SmOcbPxdgUs5#kz49UV{m4xg>BYN*P+SvV!k$ILjKf{)rmM7UNMfo)|yWMgY zHGh6j9)iLN6>Yk)gB%an!lQIO&AcfT+a+!2O3>VWo!S}urv}O=f6r5=%>M922+0K! zjavvNc}d+%$j=lhU9^LK%D=E+noyV-vyeG(By-=*{_|2o$0%6Y(mJv|xEkf1=N?yJ zLJfYWQEMq>PNFE}YrW?g0JS;7;E<>OC)M);sT`(}m-ZmrxOeG&Fw}vE{^XB*^OzX@ z`F8=nuzDDI*H%y&2BbN!;iFzkt7gL*PTZvDhkHM|dYeDn)vlklXI+3HIq>%X;xDY| z`{qZEBomY(nsYUZjPkvCBojRa$ZMCb5^ELc;qXaCuQUzpTw@mNRlE`H3~RwMI87} zH@aaNP}RiWj1v(k3=FdPm~@MP#_3ZL|c$eQB+W{>x4jHKvlg2Du2Fr6Se zw$WfY%~o=>BqjtxRx0%;i6yrGPAdX27Y0+M;h)wZnV^M=f(e50oBDghVlAn10~eF` zfpuzjSGCa!@*vI+^_wQ193ApOf_6;lPL&m^|55$ISpmXHh?T(^_=v^K1 zsK5_6qSy%X&)aY9CTw4EMU|bCG^CnqJtz`;hvr$0P8s%|fFy6@!G}Zif&{+9&2VL`N9K^ln zIQa+!=?7jQ?=9TunTwb3ta%ixnQiMYKpqt{e4gCmFt=Zq6E08Ietmi~p=5n1HS{mZ z{IjFuxm5nv_xL&}LbTGLC6UHChDlpdy12Z%WeH?8`Xb_ZkYOF;%eK}`mC)bF*$@Z6 zFo*1*nVm0j^AS*>Fa;)?#vFU0m`q*NfLW$yd2hI8tzriw#Ac5>de3`1z+= zfWC9k;!VMEl3U@|fF6w&DpM{;lVShY7PdBtB^;mPne00m3oBX?31Swa_sT4#xhH8< z=?>+-EL_mKfumQ;uNqSL2ByCuCXV$}uOsZ8e&Gp=h^=8S%ffVmUXu&BmhFGG^;pp3 zWJ3vY$}h=0V^1f7(f@EaxjtIT{C1`%e}*8(izBXf-WL9jY8ccQU!CW2JV2v6}&ti9tuB9)63<{Or7hxf~L&I3sr`C4>>5QgD{ z5aYYao4^x3*5SP%Rcwt%ZZxx2tZj{yv@9Ymm=PeT0cl#g7vG}ejOO@EMQ~!`J3M^j zI!oo9a^~Hnl|rWAV}bHqcHi{p-k$X|x#T5R!#uZ88tsCNOl{!F*S$TP=?_iy&f3*H ze>qDI=x5iN2vw*RB({E{oosEV&Fjy2VvhL4+k)4@71r|@?Jrj1b& zZUsJA&ouZzQ~4!gP8g0O%5|EHMsE9KY#WaTvhu5Oa6&v*lb5wwC)v_dL6gQ-ngZUf zjEz?g5uV^bi4gL37>VZ^O|7634h85~9L z|MgKd778fuW3OVJv{^F!@O3FHBu|EmoX|auJzLX>Gm=16wy2FrvoDa_g7|Mvolg$$ zjTAX(5V*0|`V^^aA4%2KkHyZ79q0Rclj?=1%n?q6L_}{54a9dBa`#1%*CD0Gw0G<{b9gS9$~Ybw3SH;LC*559GOGY+BZ&U=>;`GY;=1w=_62M(@Q_LsZ9G zx6@%9Jbo}!y-+<%krPH$3W?Y80r%iWMYoPhI$H29uri}@_5KuokfRdr8agGjr+v;$ z^`=PqEH=f3E=LOwQJPB&7HOHtE%|Tt)qo#s)x~!uKvOf{HxLNz{W+gl;jwH=BVHOC z@%b=>*i1c2UC->hE*E$nkBj``miOjc-mUq2r$LH0b%c6>TbFlCNRG@q1bFMN;^hGN zwFDVaPpmlD`!5w8HqzphaiM(5DpbQiG?IRwDTczN<77l6e=zD>vQa|7ueV`nzXwmB+aSr*!udU|LU7OBmn+*56!y z*ZoA(A}(oBbM$vV4oZLkio7LVy*8LmvWLOS-{tQRIu@yK+Y%+PrF)a3+i{obHh?nq zLQ7Y%hVC)?IG(R4E#5mVHoP*&4C^zsb#G1>DP~&`eT3iRTVXDTia*@CRoqRf_jOzr zhQMI3zT_4XLwB$2i%)Vc88I5S6tc^V7IxgGgCr&+q*0RlEoX_Pi=mQiEWHWycnWmz zB1pYii;6;z7v#nnvD6vrG>?TV(Q-S5pw2X+w@l$}d00@_M__p^t|38zCv0^*YK-zf zXd?A<^-j6P7^=15lt>SaZ=sL+SM3?s(cY@mbenAeuc4P zr_y6e|Hsm_{f;Y6T?H;GMBfwqM!k9COZ}hWg+caeQncR-j!*tKXAfW+o_;2uD{r?Y z9}gaAFMXA>F!6c}z*K@b$5@^eIUCs}*Aj12A^Cns-fFp(?fv(*!p+UTco&Ff-A8cb zUM?~jXP#b_&wZ_rHtN~Or+xkBJMz(%NDg<7dcmX>n(W^^gUm=3$byXSTJ#96=k3uG zE;gmEcPzO_qo#k;Nljm2+?+YIxy&&C&5KUO^)*}%LJq4wO_yx}8?>=<9kM+?F?SHe zV*rtKJ)~7Kt5Ry1ry6Rg8K%NL$mO{G{3ArD_o2FQv%j`kntRbbAYt$)0LejG-=jd_ zJ|MF{?66Tp&?Zj3b%%7jsUnqraDVfm&n$=3{#!R8sTD@cUZm<&5D7Kgoz?6R_h$vo z?W@f?F65auKegv?>Dwgt;x+-wf{(#E7a|ryaTc-VFN~8#xTU3-XVI?Ht@pG!G!$=# zRMsVh9l@y3hJNhiT|+~IUglA-VuPT-?AqNB&7utg7K&0vnY4N_-XI15`^o6^OZwpK zsC(rGvpEaizXo2Cy#a5yI2P@Kq=kRv*Kt2Zw|!P4^;?K7`R1%G$5Z%|;$70A*dU=! zcb7?!E^Mp=j1U~y)iFLZ_ZbScmmuT>b17+PF{(yv%OZwCr#fEuF)*^4WVIG*>$$C4 z%mrCoqL;?)iwK%0Nf?Q86o=PODe+-aZFbSYU>G`R^B`Ov(Ji&hP7~A~XFNG{xXaDS8{*AjS*}uBK8d}S>Fm$@ z(aF{$lf0{8We`5a8?>#FAcQDuo1`(OL(DM9p7p^G?svQV7o!fkh+r=2Ruaw(#koZm z&oxx57_#?wPO6Wmf? zJ~eMnDz9Ew1=PTo%Dq%0l7h3O4V6pxp}G$^TVlXXEDSpPBaXgwapXeqD4Qnrr`;! ztmBrry(-<`*%dY0T+dkd*mvVH;A4}^m&1x!aZv1y_<|hn4{OPT3DrPapuiU+rO>xV z8gWikzsy(h6x7yR{21beD~656rNKZnJbEOdjGrFM4tG2_6XY)V;vU8@8oF9UW-9l? zW0W8LzN@1xmp$-Xbl?dY$^r8F+Yvxo@Dw!BEyQN4u!5ilHx{Qz;>AA>=> zGCL00P!Y|96ApoKWN8Y{&}NKpvDg3NU8?m^Tq-u zyW#7DNJ+p#o#i2Si2Yo^xh!h4(kn;$%y-O!>S)nj_I=udQsM82OrC-^;>h=U!jQuP z#m1Yi%baR55_v_pzNGUZ<%KEgowqcaJnri=nbyqVF(~@Vb>*-H9-|MO9yYErC_(Tp zt53)^>1LWXxN%B&f**m>3}e7;jS^r@#Lff!T#SJP7GV*{U}RRWAeq^aF|PB3^`gVf z${@~*+yDJ5azvyjgA@mI^V6sk+9j436?-;`Fl9U&`ZkcfH*M7KxkEff(3h^*^w-NL zJqJCD|EkOjs;e!2M1EvIU|5bUbCXkydkh*m?XD-QZ}PUTttjS!_?U-7rNEc89NZ+X zOy<0K<>QoT`vOY4j?%cT#mzfLXGZ70HYqEQ)X1COA1O)8kH=lKC9<@1C%*7RWb{Fr%@3 z(*ddxXQK6MC|Bm2tylR9wJiOj!y`heb%#q6aK-ZsMQGF4Gv@LU(?785WUf)@iyhPgKNA}J{`TCHNPzs}+J zD3bmnbnBt{m}*58JvNG3pfIp#8i5|R*F0+RS{jG9mIzP9=_;ahC;1?b+JY8x>S_K3 z{MG$kOhg*d*TJ_fcDzl0UfQO~&+VArb}}j)#_?J`@WG$GRc~B;u3gerr870#%MESt zw44IO3)NP!s(sKlcC~59WJK+jJTseIntkMk7Lc=jM(TI#kbz_Lzju4A@b5Nb?2BLJ znVcKxv0@%#>Wd54mFCYfU6-5>6w7)l`F+H(6oSg!@N2R4P|ggW_wN(9Z8g3VJF`~i z^pFlM{oo(PV+=6PtP4mtZoqVh{q2q`NL#3SdtNOR;rLO9@j>By!ArGSYPn^c<@~gm z_Ous~j@1Z9Xq7IaZ_USg!{w14E%-_Vry`Gs zo0^n3FB9U9M(x0Nf(~$hkWD8DmV2|3DI1rkdi@InqJK$gp=#V zv-NIfT&}{{M4U&_8DMKP+AK6xw@q>gJkqT*tR``@eQTfgG!>Xx4@g=JANwboX9hcF(@#bG}trMNF=tMV|I@MF)$m z?h(&Sr9LGuJ^ZD4f4jz};4jN(;O55BROmnyw-T2}5r@s6k?V#**{H+i4;zUw`fG7V zcEVqbCQUe%OWM`@zH#yANHHYIn73al+1;=SBf$P6MQ`FGoIGa1-V|#9aB?8zEsV!> ztqYFfIu6vpu5>V&RpI*%TdvmU0Ga*;KrvHbV_Du2owm*c;3?Je5N1^sR;O$m|RE1U@|-> zlQQEbv&e>WhVwK+S`m{;2@_C1@LrenHrxK`#y4vH}~PJ%k0 zn9y-m(66wKl`Rk?wWYMJG3bG<;}meC?GlPK#>J5>9QMKW>R@grhe@bQC6I0d8Ok

zMO#`=EK3QY8nA!s z&3iZ0-f(g}r#8upo_o==O=R)>)p}PxU7;0Jc^N^uimdgZ)XUFco)8v59&N(iIcdq& z;9}AVfk@+()@k~R?YjFXGlpu_zY{!;1X!zl76b}57|9bY?xY7{c!#X`9=}Hxr$5aK z!+T2m+-{Dr*>-l{8}jfmV<#AGoxQ?8mN2pm-SP9_ewMV`af84dfa6r3B)YdWIxz2L z&O_;S0FW&q5a#PTmX&`L%9i4OpQ=>v;T1NS=$cJRsIWcD`KQ=mz0=J~Et&38n5T+_ ziuhYF1LqojaVllZbEZ$?qmOH!_!NC{1|^>9tBUO|y+{tpE$9+Ia@r3aM6R-+pGt$S zP-sz|8iK4%!gt*j0)h_oPr|37=T#5-Ph0x zorEedHO}*9Z>4cMh9Gq2#-?c$J9Z@_vcK8tA-L>BRID@+Qyyii%t^)A4VNVy$t5Ij zpvhI(Kp3X*^0TGuv!vFKW=(*z)#q{s4`iTT&RE55H>A1jn2}^W8~Z<9S{M%S%>)B) zhSUK5YT75S1&3^7DwMP+G#D*|p{PVk#~x{z)EhJ8`>f{Kd7{LPGNav)LM1al@4 zeHcYAc@S^G_cm%PVWW}&3+GpiVBVWvcc{&D`?#SuGQj)B&)dbL7fn3QJ=tHA9+~b! z8{*z5MuEQNU2o;}b1*>Cqyd$*dj~Al8|C8=b3r+;HsD8z9dJwF7XqXy($rnC@Iv2wN=t)b?jXdxG{V!yhM zO%QNkWxTjv)r(FjLvvwDH5o#z2WByG{&a`0$y$2DCjFip@Okg3lC8cOiwb3i@%LMl z94n0t#{54;_r}=DLycNZ1Q@c*eJhl?dSo(pJOes-M-Zpf3DPD{@MA{j#b2jCm ze2r?^?E&ZG7O{+*>1(+QMq8|fcvzG92epj%2H(9%OK6d$6`hJS?9&5xbg7r4jn_N4 z%o=>1HapSwiK;dVl6P+s$^n7gM*o`frrb$U;x%gjffq*dVpAw?^y^$wD){Z_ZKUCk zXmQB+;&B}FSmN=-;s|vylq8WxzsI8TT(Q!3!w2xis~jH0e|*`J-G%237xJOE)Dx}- z6Xf80x9Fe2;!R_II4F zfH7u1jlLgART^2=B93n{7?fJFZh6Gc;&Q95do}@_)U9F$DK4c$@%!0W*>ha2ft*X< z!|L)x99p7sMcyW#zSRrycvCZteowtk|E+KR^!8<1UXnfq9N3(p6 zRNhVSEIjlg1O^_?W?vpJI*rN6Apt|rr#U{A~LMd9Hl=qXDo9&S(qPJ zHh-P>{tLclNC@TY^{$z%szzH8Cp6?o5nr2mPX;Fa;X6v3apPjF@#`ywBi^R4-L5S7 zS773!P!UXOOj2S`dnQZs7{TJq)S_TamaM)|h7e`eTftC~e#B&6U$=1#?#f0c8vQ>g zy=*rz%at@EpagP}w6o6l5G$QwR`i{P7qQq3?Q-CioSESH4L;b(R$4U=aG#74pm4%Q zSHc*dIHOA^ReP8uJ|TFXD5TWN&9tq-mh32HsTNVY52ylLDD%nzq06YrhIsF9Rs;51 zFY;JE!$bTG(c&s{vvZ?-%RZXNJda6{FGY6GDJm0b@%GUto3bz3aaEC9?Ej(CPFS8G z%=5=sV|0Q(Q}TK)wG4h;>^?+u@#r}V6tEYdSXsb}%OQAu9}0tGW$Cr67lG0=WNS*l zn7niP_=f8e(6^w6b?-qQIYtOLwOKvCD5^c>Q=zHNp!5U^nPtHjmWJ${Pr?v zV{DS$X#s{zK7FtmvT~CaSYqOsI^1;r`HIi&jH>xD_CW59WD>GEjqW&I;>5Gq{QSHm zrZnpwO-wUFs*VImI|Xv?P=2x_gAVlKtZTwYc)YVL9djiKdhMTs6R~ztjj@o-c~T?U z%6F8;@+yk*M$VvPEP>&);;t=NfWu#OqL5Z3(%XZ?OrK*ci>`qNnWZwVA@*nWYTHN` zp7g-6bGTOF)Zbqw-@LqI-!|nGO!Z%Ag%oxagaEC~@aBlEo#~l7sm#Cgf$OUKZ zUB;|L2|{i12Hjgp*Q?(cvZQb4*2*5%!2lPHkDlaIftMKfQLUkYA2LKt7l$o^WvPHh zHO>W9WCE5Id8Hmp&J_p0&PNMac>SVuFc3!Ju!nMIZh3^tn-e1J??pJY$C=mvgD zrRZYwr!_@>YB#u^NJeBJc7$ykauXy)Rv6@e-OqMy8IEc4J&QHH+hO!NV04T-4(sg= z@zyS)J}8C+C2dn^2kR(l9+lsFX+Bgu$d!)O`Uo9L1ugi0WPN2oT-nks?tunEaA=@` zV8PuRcXxujy95dD?(PuW9fG^N2ZB2Uck-A!GxyGX?@ymU-KY22yLQ#uRkhanMX9$s z9I-R2AXr!U%C%o@~mYriBMN15_k?>y?gEuyN zSM`yvv8}Lj?;^=&4zAYt3Ea0_=VvJH5rm+G86sLa903pCcwcyfQKDl^l%)OKo7{7l#o=J3evx-5b|DqPm0?N* zXq)nlP@q*MXklBrN#blXu zf$}=avVk+!7qodea#&Q1M(}_eWJkgEgPGqsd_d-^90yqwe&R*qmjWK@I(zNqI~-r7ZLs^zCmquFB*y8 zfx2~)+>lYep~xPs*!2ROeXs}I(q^Hr^b>l*VJ__O*Za-jF$22`~$7kX=qDaK_N>+3>?K>*6r#n~x%n0FRu8ta}q zCw16U8uH=G0t+rGb7jRB-7j6XG&pQ$uhWcHE~6;X@DtYVUcdI%Zcl%UIGJfbuMT*G zqk;7Vl9XxP-HF$`UFs~b0Z6Hc$F^jDK)!?#JciGs;NyFjR~rT*-h3*Yw$EUio-^R(KD z`Ec}9$g*2YyUcXVJ`BWkZusnNi+k`?2%FNL zriL22sd1EkPTXqqO39k0{=Iur>3LK5essxM5Wo5TqaH)k|H7BkBQ zp%Dv5Oh;&*>VEQmyW+{))$w zrBWBQ3I26;AB$9G8D!k!>Jl*KvvY+o-buJ&-5BT~Mq(6VAnv7o?n^ELQF}pygYxnl zaC5|ad==BoKs}jJ9YuVIM`kk!3s*0D(m$3ovqDW(S;~-xX2CO&ZI!g)eFyJgFi3Q9 z?}g!W9^6?iA4W4$06lSln2%^5jy+wb+RK=^Ye$%8_?8VH%UW(4Ct%hda5}&RX}9Sh zp}i8AsDIvTPJM*l+Vv0bN7Bxg`8Jl#2-EkhIo+Jd3_CG(ELy56-fky5;?Hv(a-wTG zN5d7u7|&TRf9bJv=!Q-oma7S{;MnUanx!%YSchrMYBZlaa727Z_a;@&T=>u;Gm}ev z-jFen;Yh)>KWayI^xB8zE^&FWbr|xz-55h4V4^a(?nLTry3P4q42x%*h(lV3Mes%0 zbN_DpozYjX+8Uu1lmB3!T0%&1@7SYxhQx;a&oY92(%z=~Kr3s+KDNQsbiR~R2A!Nh zC@J)Ez+P8CsDBtO=%W{Ua)v*f?_gY)axN;;t1RJWiqxl{o|KBlh#CEdcM|+4-=ear zkxiD9(|HP0Om)BVeaqFwVzW@9=vy; z&Fg7MAXA+rzQGAkHP6S}D5Oz`jD1JhQ*&CF{Lw>f%In~|7Rj;ty!q+V-H;%{?KR{k z7qTwit{c^l=AmRyb4EsBJX+1KrU?Zc3yPGQgk#@12KNR1?N_PG8q~DtXn)W0U^4tw zp-aK>LHz*8J-9||vrYRJ?G%M%4cYDfhN%D^5_g$N^MG>gj?ESJw`CYohrv0duK%eb zdWBA>#bLbpD1oCG3Jpmjk+aM^o_YU+=2GLsJJh%I4T6CVcN7`qCcCp4A&BO>*A4;U z*l`H{*uHX=ZwWlq($~D#4;0UCzgZKNQVtH7Or-@8(>@FK)|(usB8TTFI{FQBjwt8tIuy{1BZj%MH|(G-ci|8RQ-; zvT=-ZzO|ot>9v;QHK844!LszHD1^v^>AavVvKazs8I2}V|0*+2GdI7mUNQg^Fw$VN-rjeKI zsfR!TL4!^-c9V7heDxK#*kfA~1o68ZRB1bMYnYu_F{0FHwt}(_M3+G>I=IcK2_tBi zfcVl+hH`t*ZTNinDBnFM@j7u4-A5fd@v{n+{?-DJ;2Anl_vD;QZZ0hCvKAG2{MGx) znP>DJN`>m{Pg(uToZrFn&1mj1AOt3cy6kT!E~xld8D!+Hxx90p9Q38No=xqxUa!SB z-h?Z$*=J3pUm_n2G`;}iHOVh&-g2>U`8sqQ&olw6tJG%z??p-B+UrV-y0_9NFdtpO zE{%g!EAY6gdQ4vmKY(mZ>GM7BuF>e}@aXhb7Zp|bM3LZz6cM*J;jn)TgEqN8YRWwl zJY8q!DpHBZy>4Xc@S^^CoHS^^`|VjffU1-*L*CtPab1}X6#)H5`0 zzXn^EI;dwx8d&{KCjElYc))=<+8*^3g%X4*-A8KTZsQSO&iN9S0QXZ@9}_)GOGAy! z)pO7At)kW~+|2cQ`RT0_fJEfi)d8P}&SiM`PA&U)*-DSQ)xv_-89?Itt?csSP*n`^ z&Yf8nxzIaulCqyE6DGt&Y9Ts&b;c(0KfW$pQl;L1&R9zY0p;0fh3Pz6Q2b0*XQa#5 zB{1Pw{5q*7Loq4wC>8>)v-@}aoo+MV6{1l~1}zs_+|GwM^a~4I32+@Tnvx)HO8KQl zZvZzpS-i0$MMFVXkC<**7ebKN^jw| zA^zKhP`6D~mo4(3MS+&iPH?kjUymv&|o7NX?w8@%O0Y^HGgAu+L# zbgJ7m06JNa0nMH$X!i@0zh_Ve!0@@ZbvcLuVvJ?t#w4KmM)i7VWQvbUxK>X{TR`B; zY8z;2)po*F5MNPM>z&v&=g`A6tv-li?S3GA=S#q@F$TCa`B8vR=l)`HXPNlW;Ums?jlqyPHkB?Zvy8wLp{=Q@Y35;4p@)=5PZq7mqbouE0;I<;b5qOj@-aOh+kW-(1{VZOW<(4T z$2|FyA;;4x$MQu!Ms=~pcaXKk^0GF_hxb%>qWoab>Nz>Bt4WCl_J{=IRkBRPye^zl zJjC4fkX&46_IeRSoLlvYKb8MMRp@F)_W|P2l)_$^v1mry{h%-$VLJOl;SL3@>|oT1 zu!ToBqj67nCNtbWA8CvM3zw|F=|GGEbsuTGnK4a!hz*A7s3#?eX)hk(xF)>cjv-U=x}8{U&#?iEjKY;oDbX!VBg+~6!Uw70V`Pa=>NMex%ZZrC zTyqZHPl^qPa*XC92s`Jqgw6)b648iA|o%?Q^e zDBa`x#@NZiqF`n@g}A^Ci8AIaiY9++dZErYzKYbXqv5ir{0+HA(I{LY#()EY)X$CX zEx?P9Vl>@;lSEX%l8HCDmn$!ZqtCDaYzoR9qBL0?(N7W|&kp7X1tj#Yl|-z-J)?5} z0v{m_jEf`b5*>c@9QJ}|>=C1$tL8z7|3tSf=Hrsp9azOiQt$P+(%3Xsj1o;m-8NCfFRVurO3m?1be-WZ`JNwezsD&Qh*Ezb zc?P#Wpi=IBx`TlX`9#77a!5kmV?^6z)HG z=Rr<(HeCoS_ljT z#seMt>iHMKONNnq9glJ#guP^cJ0eI*_ zqOG!9frwB;$rV>UbM-K(#Y3ioe&tPhIpUnRMjE+w1cg zeXjdBIkl2U%oK?$LpW#T{gm-e`zMzKJa+Cp!||M7jFX|)RKuu&MJ z!@s>0yS1h16*o8TrEX5r+3uM-gyt*;-j;)I%B0U_qc@=HNz_W=ZI|odzs^ zAtCWzk!BaEszNBhg2ZG+CRXi!KUkcF$ox);4qMd44D;xWKl(7E8JdtHE{Pij3rELh zF2Sxd74TpPkYKFZ3Qs?5FQ#A5|BHRi0TngG(F{k%iKi%d^*&tto)*J*r$W>pGWepo zvoA$~kx{F?dPS1u1n`amO*nu?NEuG8(y}ECqCr=5w;Odum+tE0XKC=gdLaQTDPrzf zLE#r%>HMwQO5<-NBy>;FLzAzYx&@v#SS%z`1y5_R=DcpgV1}yFHwJd4_uwh`9ek)m zPMg>*&jY;sYi_m#r6>OZ<>dhXZ`<1E6`BGIeSfRw8#r_BFFp5>>U4P&AcWZ}-o0gB zZT>mNA7Anw+CsN+zu~Gvbs`!@Vx1HFyH2zIfvAVql!+;<WTvecIr#l530}Z(rqvk3Irzt_22*|`=bKP*vE%(CO zT3S+NKe6Ru+KRvBHJHelcJCv~2*(f*nWQZhU`+6#_6)7oi+bA?gO^!We@(ysl`h=@ zLTv*{-lr;siXAynGp(&_*Fk;#{Klh+seP4=m}hjV62a381qJSs+i~d9c0i>(=>yMC zYT_?@g!tKa{6i6?N~w2I8XMS~(#$l=`Ky`%VO$Y-D}1EAu>kB!`+L$iw0-6Io5Ud;9p|VI|_tHEK73{AtMEv*Jt6QC7%x2Kol8di|a3{ z8r9wn?J%ceR~N%iN6r_+t3zln}-;A;l!>{ z5K4cF&S{N2#}ln&)FZ)0+BG#aU>Wk&!J;9u0uhDLX8y~1`7_I<1z?EiJ)<=?tQ2z8 z`#^Q%K=rkb07$vsfzPOHp0kPkHpQ8x~qmD3gKSydrw@$X11S1b5W>H>8O4E`c>2D)d>Jl;~-$mb)#I! zyv|7M5)#_ij`WNr;%WGoq)aV5WbM0eID3#9UJf8olmPs|p(^|FY2c5=+9kk`ERZ|&?nl$?XK8w@)yFS zuR~^_zG%SrG0fWM>$7eUOb4YXvVo^Srnl_d_Q!}rJuWHWGiTzpBY{V7aGbEaxR+Lr zz_kg~(fOB@g&qZfff{YUCqEt_L@`i|$f?ry2m3DJ3@SZ90NH*k@nxp|2?C>Ru<*+! zkNcDE@0K-}jbNkhR+XRx`B}vVJ)%6_A7nnl zN_d}k`+q+d5_s!tF+sPUy4#=^FviAIGY%Tq#0l9+N4uM_4O2WOY2X2>b8+Y4FR+t* z@aQU059;oW^Lf?&A+ggX2&DSy2(5y)U{y@fXBA`_T z0F6!(ba^KeR0&jabInf5=VEdd)ek*0mkml#`p8R|!<0Kgl{)`RdT1PB>K2KVxA2iA zF6J#l7s&=47}xehEjXr3;A8{NLW00RB1Y|aBY)=A+Yu6?Z4il*v~D-xdyS7%>X+s0 zlTVyNZ;4#~o?k`eOzJKh3fABMY!3TdO?m3PHeSKQ zL8@gPhajK6D?q9q+`QuQE70ueKM?LO>AoQe7=qjlrwIlqA(WsvfDp75GUZb-x&*?3 zKg)b&pEr#m7b^*fL^afqruLhou`-6=OH|Na9H@`Z2E=ro@AV?PT^??{yYVJcl=Ps2 zx)xjR8S!65h5uxkjTruL_}h-sx;CC*g2C&6d{IbzTy8{2n<$MB=A$8LfMmB4iD5{4 zc2flLwZSPP+~=Q`vw!u{|8+4z^({#9m8lLCC7UFpY0)QSNv%}|4)|I8{FpzEBRf`* zWZ1>{VvI>>`3!<-;DDi87A;i@N;4$ksZuD@Q%g#I8y+G*Ldd_38B#<~7-op0*!U+T zDx%nc6IDm5BNKlHQeLOqgT4D{^sN@77CZLL8G-q+|pR$Q>+JQJwh9Ht4G<78O-giqn zy=Xz^98K8`cK8NK@CX9q6oQDJ&AHy%JpAVX|x zhH&w3cEsNc>kFwwX`nwEmtt?u6m|HmY%>MbukPYKQ_-Dk5d<$B2AD8hh%bY)u>?&V zDI&Exj2=mOp@sEP_fA4W3cGX;(pg zlr^aLDg`r}D79~0qXKq%{QHMe>T0uxI z+~eu0+B08k)<}RvUmvHZ@&37W-U{bvP=?otj6M;wjG09`$7!x$Oeja%fm2pv7)RQ; z=-d_57_>Wp;?`W8_0^jNZrvK=->&HVC&T&QN05GFO1?E-#a?g}vE#pC7p?_z!r79; zYGrzL9C;6U+Mnh^F!Qy0Ep~PM>m%`a7J$BvMXY zdU!QHzj-K-cGk{z?7XWme$~J36~l>80D!QpPNz_08Ej1nnBoc#^w3bm!Zq=K30_UN zOiJg9i#iOl*9*pf4-4umCB{DmwDZgxOV>6h{2(_)2=VdxKYDHQFf&nIA|Mzwh(R1l zFv@98c*wGK=<>p4Ki$@?5-W`zE#YjFmOD73_uvG5kSH1JQ}|$Q^HLPSM^0e@hwY%9 zF6P3||1-k3r05-hp@+ZNM<2RzEfhCd^cJxOZpd9yQBmfTI({l;0PZZiPXG!>(Kd<& z7(Pw1}!w@#e6=A5$di*=Qj>rE|rGrH9K|*nm7K?92tc#ThnLiN(^~K<%kLukW zmd+ih6Baf4*4b5aE>n;$M3uj$Gs6UoDg1x>hz$rRS~_h=W~@s( zfPuQA3OF&|jA-vBPg=63OaDyu^*{zn24Spbjl=cx73!Nvi~;YG;RWik?TCa%TQLmC z(l(P#`yYGu&2R?*IX5yh^!{_u{V_4qZ#6p-k^#Tq9caAww6l5NT3izK={_L(Qow-v zki21`40H!t)o))_pyIyY$!b;p%QzU~5hBFF#Z5R<0XXY1a{&chMQ99R0dHFJBsS*y zPP9#83#+)ZbcA6R0w$NL#|{79zVCg<1iH)^1yE7=s}Tc9F#RPE@VWJ(`mv<8^)tIM zn_-d+Y;6NMlVSo`tc9G)QMDdo@j=3@Ku^5-{{Zp7to@G*rl=1LX<~pLuCQMMsS0M# zQ9LMs8tuIzl4Ai0aA|KKKsZ3URt6*Pmz(i+XmSCqPsE`_JiVjE!m9#QTtkyA{=c8= z&FIygdM%>A^WY)k{!$vG0uj2%#XR-GCV`b`FWh!e#D{E7bX^^22xcX~Oy34EtwS+l zLP@{v{}ZbGF|HB>`S92|MGjEkRJcA12}5_7&>du?7}#I{D!iaKF$CB2EsBWF=Ftxw zwv@f2(m-~kJ>*UN(qFEv3Kf^wB!mA?dCND!#MnPrF;kLu=ra-BZ^aESV|x@2StbnV zL!f;wJ;G3Ms1NLX2sg>M<3-6aHQ~Rn^P$m@SRg$89EM{U7_tC^Zte~ zV$2a@tWeHVP*p;9x4U8AV@EM_!V4;!#fkL9`H;27hfERJzAz4&J`s}xm%ZT|UjC|m z|8>C)>-q%>h-6(0(DvU`1!A)d=KU7;qfmDezU#V1a;%Gda_oA@_-?EKWw4p^_5T_W zm4FXzuRhu>(|DD9oJaGj0dUR>v@FrHkdtD)cBX7NF|p1sDNuX2ZvJQD?7wcK77`L8 zN^rVn$}HS}iFs7y2Lp-_mpFJx$co9Ycl_{{b9riadZie~h{ee%`(H8Z?TJxgtSSam zLPHc>IU=Ab)F%wMR+xI7-_(9L@pF>@iJaev0K$?2 z4hJR{YX1u+e@HpkLO=%Vr4+4{zVi@8GDy|IrH0}S`R>mH5(~qKA!vzRdH3&FK@0Ax zDZx9!2hY-&W($cfRe%JC^Z25sl*xf)5c%o<-&Bd|#jpjaNg3mn7#WRdF6z_fY0pb=s)$}FkoAz(tOu4FcipPkd{cgWv_3!^D5C%$!It(2e4p}QgF~P)8 zX%Y6BC{@OJ4kHg%^Xxt0nS+6k{ek-aIyHvk z2lQ$w(s^;PdG1vw=(x1Gh41^s1Sm}i(u}-@gF^i;N=#48Lq>FI7fb^O-M%(kw!?uoIXD?*gM)734Zrofes5!F_30#eLR zcJ?Yei0F2k4=nR7%8X-YPaNCYn#v30P9wK7cp}#VUv5@uP(Qr06y^UgsduoZpj2f$ z0hRCD7x?Sh>F2T)maciEn?RaIaqdo?F^gONVyVYJCIadYd2R@^{7mpA`r%Q6x^6aO zC(|I{+}hE zx9HMoM1WYYNBw}Imtn&(Fu_Z{d~nBrfO_6%YXF{Fc#KcM2ZU@dF4Z{azM#{lQCG+CWeT6Vs{42z`niVPF7mX z*e66l5C@DST8QvP=^_|V#eDnhFBbiItN%8x!B)T&13;@AyPkDL<}!wm0Wy~EW0u}z zHJs`buZB0VG@kNF&<15u$U(24AzJWb{9-(WZ#m+>B|Xc;_9|vK0aw0vtWwtv4$w2% zV}hcSagS5WdWL#TMYzi+0;m(e*ofY@#Eto_)!@iXiobI1g^b-}p7N1xUQza`O#@%4 z0So9pG$~CJGd2Z!XV*TOP3zE;9A#vaf*^OgxU}b>28qj|4c&s5_h%IwDJW6ezGweS z0QowRGWZF{Pe_d=wdzekz6)Y(BW)3|e|Q1MQ_De)eGNhg{M59YaC-58G9BXNs?isi zfA$ME^rlCnkziu})}A?tlyH(!F{5jZBUflZR+wynr=J6D^_^pHw!d)K(SCoQFWHYz zRlBsZ;27#Yv?F}03*-+vLE%diC;l#)Gz7fozI)^g9)d`Fwg7%<3(;H1+}q*SGX|B& zTEx4$Dohxo^h2fTutgj?B*J(~Ni)%wrRugV2Ik|nM+P^sESw4{k(cVhX_N|&#VQmN z@?+a^H~q9bdWZ_F27M6BC;stmv)lKzA=*gGIl3X=nlbKN#R1UIvTxcoVlC&;^067P z>8|*BvAUfjV=e4(Q1~{sjG8!df~hxSx$A;yP5RkF)nf^4sM-?A{|hF1w10RSWJyC# zI0{iG4!K89fmQt>c!E(eELGqThcG#$W4Rjw*)qV-z}I^_;cOy1;JinD#VgeCqtEO` zMv-d90nXa@V@CT^4~!yJsoWd4$P(XG!(YD{OeAqi*o{DiHd#`RxESF$V`;_x&BZwz zqK-^!9drKi;JiW`;167li!Ls7^I`w|0Zh8^I|wLhR=_pxFEzTJ7lFQtLt4O82~`dn za^P(&(w#_&0+d4EJG{f{u_aXPUIs1XY+k>8Q$&LAbf@scs*~#*Ax$~jNJ-kU9gUY? zux0V$d3F1F%(VB&k10$*lsg#c1ek}__3_t+OhtY`7Zyx>%{BLaQAZ)ge<}+PMEhXG zTo|&Q;9l4vM2)!25s9-5oP_P@N01ew3?I|c_*cUSVn!V!aumf!G+zOCPzYZL8)22| zV)v*(m_eQb;!ccK)Op$pA5H3M#E`*CNtLJk%qvh_*GV?5WQBr2)6W$%4cpj7L<_7L z0y6s9v2|t(ESkBZL9t=t25#;9*L(zgOtAW&VXqc(eO-$wEOw67$u4)e-g5*$evI(c zVLKJvNAbWXY*X+s8X}z_-gYEHyXi4CgD({Z`1PmL#WT(c>PGxp&foGC4d1glqy~NW z#iYkKNY`yzGvk*20dxgXpoDcnK=XQJOY6*BPWn-SvTCw^$bp);kwN(=SvfF$g2MZM z1Hi6(fcQqTx98$`OTHnb*(ZWGUQ&h!(xxyf-Ov(pKFzKnwGTwpfyPJ16a#npZ^*Ae zW|hnR3Py#BkHxV1Y_qQSoK!Aju>uhUGH|_Td%ZdvVH}C@6A3G>*Y8&R^Nd3xVD*_j z&-$v#M&Cbw3=m~FIu|qh(e12`Fm;gurZv#gzxFIaSCudmrJgeoM)$SsTGT5bJ3Tei ztv^PooQALH!L{1C0qER&#xr6Wq_-P8Cx76ZmW`|ASP|vNLd(bwrm>Hx6=R&PAHAQ1 zP!h#6G-AZGM@gC5iB#wlZ&yD^IlaZkCE(DM+koTPg3x?qsmJk68+-t~?}E+asPFSd zY>+R{j#@i|3hLPk-di!boZflMUL-9Ad7Gh&6NDvwM(*w$UE@c(06~J12I_}d zNBkwXme)ZqV!A!=s>O}YUrnXk-fbT7Mt`YfhM`>6A;9Ih2_q>iSsf!3HpPAR@s{ZQ zpohWb*e5(=aLu~icTONq3d1!1icQx!A#8&`6)~;<0ty**$>06?efA#(sY4L~L~*WP z1?0$AUh+`FxiLc_YTKXcjeM0_aSM%AMDq>iInP>)9$@0ReZ7(1uPA&R(jvPBno_Nf z^Fusj!Hk;KUdL54#HXA^|=gydk3Pfpl_yPuO09eRV zv6XCYZOC9JqBz=_z96IEVN_m`L2~@q@2=~7x=QszZGwHUmi~R85QE{d>AfK!KF+yGeX&+;9>b%K!{8H%Q3zEA{0$Trwk(Aq1xxv9~|EcH(xQuiau=5xLDt4=rtq zR!-|aCZ>dFp@sly-p5c?E2eLjWx!wBa|VoXCjA^T2}s@6=NE0zWt2D!(_7z8A&Nzq z`Pz%nNHrA|LK^i=-a>i;m@tc&se00#K>h7EmMp3ST8i*fO-<8fYFN9#k+EC=}uE5%vUxn~39o=C0npn{b1+uN` zE0?4>5>utbtATE~5aZFShr3vC>+Hrm`$nj-=0^leVo^+JTd>Z^1yLj1P8^}I{T(zh zO{)5(NUv;(TqD%_67DZE z5=Dq$4&*V=coj!@dl%yFOjhH1nQ|B-fOwM33K|^_v9hn+uw7wG#~&9?NgYy}bf4|M zKHxVs&4FVWuiS6*|}^0N%^v{C_lhy*-A)2g+c?|M_Qvi zHs=kRL)*+?Gr9IU2-f=rcj>z}#hg3~lcQFb>eYdIiPSkbio8-K&O}flZN~LCsEmoG ztV>9R)e-!1uFQrD9O{NCy#V*(u1!zFhf}m5RV#$!J`C8jZ{%eC9mTRiRgGpq6^~cvH-!I@z)4r3KFlwoUmy z<_d|A#u8L2tw9xrM_l&VcT!`ru=~E4PHh<;@3=>jpT$`#G|rYj?hKH4uWD$WuKVNq zF^7ptAR>7nvXUavMkSSRRv-~?N%4D5gC;ko^G10iua}t1y&|2nNcl{;-i-IP>q(Ov z)h<`HmkM{(^^adG?S?RLr5%e6HzoIsaQKpsYTr%F^<-}3T?~3NB{onxRT3GU$xqsD z313rO|Jp<`{t%GjsNyYSc>@!%w=UScCWcJvTjHM&P%}96Ij>YJhVHBq<9sA_O8lag z*eb!v4#ua*QdT0G<&Pn-thZv98RTBXrQuDKX7!M3$~`$2au)AT2L;7JCv?*mp_2SA zLAzFqa@prnBJ~^23j!;Lg~QTLcGSBHp<(Q`83)%&o_yp1^YfPHB>0@G7$qZ_RoM-F zE6B7L+p5KMAuB1ua;{n?jSZPKIYNd~0nzGh=u$hSbA7J)nhQ72yNV|g-KltC!Je$F znfX@n0|2V)0$++Y7pssvALFO|Pre@I-EEQ}r`IEEPb`&TB)F!z+xZ8dJzOus13W4I z9OK3pRfhZ-WJ{4amj(HP*>@`+5BYvJ#xBpwTx2cG&}Z9t^9jBA>^H~ltN&(O`r*&( zRAy#2_R}WEmG!F*v57*Kze~B2L^&2A{3nu4)bslHZV(+{sgrM}p%(xSgsyE+qE2ZQ2l);r=yOBwD8OMV;#cGBoH`NJ6vYmdg4TuUQ zlJP1VBg*p>Caat^o1aEE`S!{@N?a+)1?HiX26p6aT8INCFzRzdV9ojLD>%!=C{NRg zJIRg)E9GsaEOxB=l_Weq=QUYyR5+IZ{McJSEq3U5!A#5G8$G|!t%hCerQlNpNml0) zljF5`UhfkxiKU#DJ41CkE3l7VCd$5AI-Pk4A2xSRVzoU1`hA8Kb5K~9&h=p97JVlE z!g0KznO*9=JdDd*g zK3D37nq92E4DW694d^(({8rMPgKt0XehP6%3nusAHBV-5%v}{@5aADN3yR-T$ry0f zOv!I)*DcxF%o!2A-5K1m689p|;FxbRTT2~To#?jDV*WZk8nKO;Ik+cc>ABeITrq2% zT{Hkqru$iv|M@3J(5gwXl#$AvlHb=pqo)+PL{Rq9C(LaJ{Q`sh>^Hy8U6@q$dn)p?~E^&+UtTuuLN8q9w9 zMHjOQpYu8m{r=4V2B35>LhI_0torim`6YxV5WOk*fQo;BjYr zG2fIBql_2|=X*7+n)X=@s`@m;GGkT>QBI1%k`@rTl=*SES`pnDx?BylzJUKQam>K2|H`YxYS-9;&-gNhu_U$jTMT^&JT*h125v@a&yR2 zGQXn#fw=$zIVZ3P0%3Mxb1wPbk0_%*PU|fwGCK;$K3hlY%~J1%)HiBCDUd_q>5bz# zX+g2Blu^?RR=fnll8jr7>8yv+C9>34wXVB%u0HG;^114MH!itoCjQo2`nx{EIj~_< zorg;hR}bblDmlk?_h>p_jG0a|7m-zjWQ3-_tJIL|iW}Ndp@gBzoCY_11C~M$_s}$| z>gTwxbUAa4i7Dsj96whJiW9_nogQ2m76t_Tx2ckUsBufyDOvdE3nD(zP8}`REicS( z`6Ik5KkzTlHJ&396jYUlX452dq{FUhME0)cM>a@stIF<}@(XkH3Y|J!BzB>DaUp7t zbOz^9xvNS_7R8cS|o}tVA0YgHxx+4^0*A>rGg=Wx=FhJ(G|tZ%Ipo zs~E+Uf0Rz(eSE?Q$Vr<(Kv2P|JF>o2MD18fozvp|ssgPfr%_1%QY}M0ZTnR2b+GbU zjwYaNEZ!|R<|hT4awH+KUF_uI9Kn(H6HSHOQoEX($cJFbppg8D4#C{ndjAK`xrxh1 zfYPMVitK*UpqIaOOG$7om8Ff#4fA|>$^#3_!}OX;zhr(}_Lm!P-4_YS7~3J+LNRLN zX@RJU51=B;Ud)rlfZq*CF&gwTL4cODoM6s$j z;w&sxP4)b&%a3FWl?B$j&Pf1W>(z}dvE>D`(;Mb;g?8sA4g`F>rHeb<60aZF{Qny!Mxn{RIQSQNG7u(cLEal=X}-fSr4G|xax42!^{ z(m7`AG@)Uw(G5H2T14wuvhEIpH6^1MZ@MP6U9rqhv5et|#l)-Y|GoBXqfupKT{m{{ zW%ZS3(NJY}r>s$Q#Wqo=1SwM#KH3#E#)(ApC;3KAQ z=r@Xy9SCXz_5=nM-j@s))z1N%Se53po;Ng!86TT?bO=ZNV$5&9C&m;|xHxLwxS7^= z8FUTY$s-2A;h!{|S+nj1l|q>-HkFp@6a>wsRZVuN-H?vwm#WDmc~k`rybM-cJX9uo zCFW=GR;dH^p%FCCzJ7-#JyK=IN!5y+ll$(_nfRJf?Ofkiwyo|AO!U5wgWjFdN+guh zcp^$j2#IVuugzHRx6G3d@zO?U@Wi&!*zsbbL(7c9Bo2+ql~ zRyq|bt-vQ1eHg@OU@+I^Tg@%KY%c#+4Ci4`1@ zPmjTXCGq~*%3JkFV5wqnA&=T}qgT+Ey+V<(c27f$LIp`sL*UZTW>ziSMm*WQpQLrx zy4y?xly^?=5Yl?#09yRcA*w0TzSqG{tfIC2~mn@EP^y&;2TUH&3i8{oJ{ zlo+I1>`seLT(ej_9K}67yHrdc%s1to;lL-c<(M_bf_}2wJ~f1^ z0>!-RcX#h2M6P!M|a?w&2m)CeBZ{*=$(`{F@d-)~mU$gkWlt`g!Y z+qk-Iqf|iIemp7 z%ggzqWWGb{|6}jHqN3WGe^Ee?B!VcSAW0=k5J>`(Q4~;OlN*qnbAytjh(sl4kkmBL zBmrr%C{cny)1(F@Lz7bjO~YA!|GmG>9{1&paqhS;_xQkrqvu++s%qA+s%BM9?YpSY z8WVh`X7Ycz%HJpflQ;b($36-RE%-!3DINT7l|nwo@Wp!)&fiw{*EPQv_tQFi7o;bY zY$-9YsC_dw*R;7p=2M(+p$K}kxNmq+_9dR3pKbxbT*0%NTH8JAOzm%R@C7zZ@Xv?b zMDxddi(f*^QLTdaidX&#l*udv4a44|LT1rB@GM2gwt&s+0z8BFMK0DXp#n zI`!@igg0I2TBu&g_E^p{vg`%!Y~nn((oP}n+4l=H9#PhrKMnCjI&_2IP_B21lr=k! zC+~Dlq|*IQ1fYDQV(r(4N)m6SogjZ54~h953pP!6NyqR~Gij|I;$T)qb4eRv7Yw(3 zkG6elM&V1j9nWBqdw*jp*+@kzaF;4pLGl!ROdG{%_;ALt($|=XLVk{F7_@s$1NmSk z%+dIPrH0wQ0FhF{zZB$8MDpSqmm*#1i*Z-c4}bZF|M~R9 zKiK_tIZEo;|A^zyiX1b*{oy$rsht0dJAa7M&H`e;#Y~~YTNfVs0dOyi$Fw?Q{-K*y z{VlLX6TSM!%r8*JqZ3GwZ>Gj18S~G}WfuXk)1DSLkNwN-`a=O!4~U#TNI}*g{}rYG zi3|QeBQghWhRt9SfXO=Kpr|~VAFPS$iT_Q9`VLX<`x5)?MWgq=c%uP!!sl>J5mA$w zT*u9$>N?bzhWppQ+0}YPyk=niHC4=iH0&deR zifW&T;ihk!_u$&tceG6W>2f)DN%k}D+`6@0-rOvW8XR0%TU%SFtF+ff**;~yDH$z` zBn#b;@K8YI4%K;k`qxp!@Ea05nu&3JYHx4vUO1a)bVWxs`Xv4{aja9J#0vo9+&sr( z4d~QqhK7fiUp-T6I6-)eS=u$RJB;i*ROq~T>_pu2%GBlIl7ys>Q5_yNMC*R|vrd)B zlDw~+?eAFtvmYaLJvk$pVB&<9W2*(rwq9O!1K&$7hdK~GFL`R3 z+k8ljDN9H^-DzJ78S6uFBE(JL_S?m~NqKf4aldD63+v>DPYHrNh?K{;hT$b8y{q~# z`s+kw3E_dtPxkL1OX})Sq<0r9t&caJ))FY{CweFPiN60374m{pMNFH6m?q^3AvmNB z0=3r!l|LU-ojx}0CCk4~2G?SD5H6M~f+;^@3zR)3BbIxAR+cm&)n0tK>zXx~#pQba zz9$zxg@%oiOtoA2qTBo99=?6B3oRYtc%~}ftOM$^{@7PHu_@R^)v9q38Sp1@mrs7j4AGE7A6pXQJeA(-iWp@t6ZPIKZVAopJG;9Dh% zIr~J2XNhm=jq;3&3S>wft_2y9z=}Pp>@+VyK1w_|fHu3ucHo#jbI<(gCB4EZGXsp_ zEgDM-rb8sbJbH-Nmm|{c5N}^eJd_NSB_zHP2qpe*0u0fLCS^S!(Gw~GP(_{+O00-- z5K#r_vxy3_%eo6QwyN(^t*0Ep&zfXPLMEOHG>knJke0!cq*k*MQOE{MEXvXGvOA>! zIO9v4kn#%xvlqT|o1dIJTgpO>MwS&YRpj@3R%T!?$F3Y83P}~-f1mv7?+U>_nUyD{ zZfLXB@}qeK4@(ty4!TCpNSOnfFP*>$JM-xT%C3?myvSM8l_QXUCbv33XsBrV1i+&C zUp&7WBQCG7PZ$@AUB4OzRxMyvoxce!G``p2w;lgAaOxo2DFq=Ng1Wy+oBoU-=mw$X z4K5mT`0(sZ!uZj3LgF4-Sya&kNT*#}zsg z975}>GY!2e-C6K_%S(MPT5t*xj{|&DV|G&MGjKne`W^k->#rAO*xS2qW-RtMEob(l zT_7h1{>w`JO-EJky5;Vh?JO>vK}wmpRe_AjW})d(3#53z->!LonY37Q8*NdEfH_7e&-31f&; zd=vBAp0Kmd^K=`Q>(#Q{h4ac;hs+f@1IB5kb;)jLW#7H3B+gjA5R%i1B0c6yV}!nI zj5G#PaBuu7rj46DxpG$amXUylOCiXvhZPE_j#!^thHvl@Wx!$vdk5ICgc9!@Fe^`Q z5YybjS4kT=rrWY{DSm9`)SCWewa&;UCh^04HE&s)s&*Brjms{8Uyn<3YX|Q8sEmzC?dA)e>E9y>dRZTjD>@N8f-krmq_MG+4If0&nX3A=*4= zc7E!&{3@%8V3{Su(B)mC_nkuwSy|I_$vLx|8Q+_2C$~0TD_hRfD8V)TVQFd49PXXy zo^vz%LJ9F({#?waeJPt$qZ|AuWh^IKW+vxw%FKqTFu0zi*?5l9Vv4e~v43A!Y5qNr zvcxw((|(84u3-J=rb@~?L*lZh7v)*1HSfPPK%vgl0~qmn)P)UKJN;C;?*|zh8qSe=!VsW1rN++Z=cgrX!rJ2g<3dJ z1bw1($xO<~pt`F*Or!%Gi1G%dM9W>n?F^i*DFp0CTx(OR=o{R(<=o$pD{<2Yy$q~x}J?R?O! z-{~vQ8;luDIZ60wILsr=sma!2TToc7OF8gcouBksaxgvUwu+cOX*ouE8gh~sZ^;NpA%WG`w^@CUQ+$d9baxP8l>$sDO? zg?KHs*Qp%#<)2bYUB&;O%-EpzHm(ZF8cC5zULE{h>i%PdGC_m}8()+Ae*6K(;$CpF z!-Utv%HlC+=9i5un3uf6X9W??9R}1h|9Hp=bwFGvI56<#4IM|c;k8=0oqJjmZ;!NL z^?_)Coz`gWy?y8D4f$kFk?sC3Uusgh#)Z)xWVh4g>-?N7=CQMpBLPUsn-^$9{t?v9 zjqsa&vAPXw)t84J40Q9cWwoCjO)KB*_i~!N%JM!G4$f}ZWY1u?Nq?QLJz!{A7r>rx zs`a<935f2I*n~jtbHD`R zJ6h06tkvAX>YK^&$8PHZ4=2;sr{^o8^geU9ivpj=KkL+qP~YDR*vvp&m$sx@6Oa!0 zHrexa_M6bDt{vHyl9#Sm)8BOvz;24?k!6g#yBA)n@pgq$r)tN`r1sahx`vfbnJuG| z=uE+O1}ICFMu(5jypQR<$Z#zsxq&L@-vQXS^ytcAaSTH2Fm}eJGT_8|S$N31?%)&M z6&ola?yOwKE4LuBy0omq#Qw^s?SRwIk!PtSaPf~V$-7%MY>S=$3X?WNW;!Uk z%N)Mzm{s4tc6IXkqV6R293AG25JiD*dPq}M+&b$&ciA*xj8Z3j$1rbyO3M_WQca2P zZ`qj%?>90S+_?N;nDu>b%W1It=uIk5mWF%Qujh9|1Z-JJJP&161q3~aoVtMT*l+o zsRU7a7>l{-56umADhDOdh6f%yCO-4UHa=b24`EotGw+yxS@E$VagQ3S9Y_n3$t>+V z=7>fhP4W&K1zMOaV`*et9Vcu14h|0L|6J@FU%0cX7I5+|)^FWhz;I#)wxjCH`ia%)>7Ba`^Jw+$%k5OIlbzS3FKIfcy|#bZ;u_3q7En0x-sm7H0k zg5F^MBY3s^-~aWW43997o=}!FUl;hVaVH?6;|0=CZJe=Sr3-1OAz~m6wGmYb1f>5B z=(T}8{hTEGi6_&4wSyo?8OUW6e-Y|9yZhhYv8uNLu0Ngc?il34%XwY`X{e$8Te!%7 zQVp^sfWgwKencCjREnIMn#I}{gWO_rdS!{2-8IgX`1JUrx= za9ijK4hjmAqN1WI`|a}BDjTzS_v3TFu0r77+Y?Dh6>Y*u>=ENX@&+8(3=94fKWWR*i7pHV(v+YrLp>?@LY*<6>FyP%LdByQxg7Q?U0 zCBuzRBn2T}UgcjmYA4}S6|dXtuCs77**Z9=o<#ngRQ``Ls`nC&GvuPGs5&pCJ_(3O zZUP|jkgMdsNkD+Ipr3%sraB(|i&%<3JHu36C;T6cB_K)#610ydx2Z02^@bjx+pRgJ zS1&T^5un=^wZ9oJ>;W3CKU*kBPM_)GY72m#ZijZUe~Hr+*r`MzRT39hcLDT#8h_{f zw;S~5Z8@y~;Ut$WAs1K2=?4q0y0eY+$n=f!02%-OY z5w{YM|2QhZYAb-ApQ64Y7g_Ot8Tns%|6fM_mlgk~8Yv52DyN;{t@g^UMe*gTLpf<9 zJVM)l6Z&jfrwCcUD)AeY_S!TO^E=u9F5i}ZcIK~ZV#0FTeG#cx)vbswUAkn8g#xM3 z4Riwv0)f;I_$~>ZZ~qyMK5VsKr(4%FU4;@@KUf%?IaE9322#T9Iy=Tb=*N(?5o1cx zn?SoQ!!5iH8!@g@63A>^CdW3 zOBqLf_3E?rntthqj+oi-!;^PSG0Sekt98PS3lu&+5JN-5JQ5Zmz9YSdr*vBv_hU{P z3Gb|n4$W@^0|So~-TN#hNRNp+>w&Bd9f{r7IHLkK?1T#YJ@Z%NA2_WhhTPK}t7grA zr`XS_T(lF=+l2O3f&p#8B)z4fiW_{>&gHiCcYJFJ@~1!OF^nwTOHLG|zG#6)Vgl`+ z>l1vo)3=_`5L0kdUu;s7%gHevz3 zxa46W5Co(=@r}4>G{SBG);FI6^G~b*SYJWFHgzog{?}J<vILJf zfLeloyp2Fvwm+7wxEpbilcuUc2*H*`6=G%H?Vs}TU$mfv7MWFGtD)NUJyfU{9{nfw8 z-ob%u$GAeA_%HLG{(|O>|2#+CY7GjXBmlUc1QxXYgz1W=yo4moSgGCjk`TmjSo`Zb zo3q=*tmZ*GOaPWwY|RpSVJ}f5Y=qYeYwH?H1RA3LthS1&joCd1yMe{3OsUp_wnO{r)O*F&WO#dtWxktuZ$P|wA0|b zIHRCnTjSe9v+w(rxkopHDoGC4XSNQRp5)6(cVxI?Vwn8z(DVsEd^l_D4XL)bbGYMv zn~E24lHqQoH9WQ#T~FJr$f^Wj+MV1K$2p=)NssI2H+?dlGR$WlLDZtD<)LLwO+LxE z6Kem*OYiv3TvTrIx&$0^T8q<1M2QOk`X_4@l-C*C;C!~y2_K++V6G;5ltZNmeL>je z%JcBSQB0S86r4FkMg5<)_(aYcYwvI2Rt(q)Ai`qHW;>|T0qsa}2l%+Hx+<&YsN zBWu$KsCo^WB2Lix1!1U0z2V62x~;roVZd)k_}o``N!5KDI6_^xn}g{yDbk16k3bgP zz@4ac#QlJK>UV&TpZi)hdLxK?!_lc{)e|S2buWGwGN%T*bo)*eXW$y2SfRMRhD(=j zn{sI&pf3;Ef+QZuWeiPko{-KVOCFUelILg@NnSUp`ywpKCpmfp$nTpgwCh!G1MbZN z>mYEjRX71j2hPN; zvz+?BVrQMH;L%O5bJ#ImF4Oxhef*Ky@(1NOlh7x2!UPEW&p_E|%Aa+Ix6jWg1JXdh zzZYw5s+b(7NutMBwXIL{wgR#x0~UKqdqn{MOT_FlaTWQL2h!W?z|y|DZ^;;F*v1NY zo&L;f5JWk(b<)e6>*MM~dfnKHu8;uaumR*ySk``Y=MD=_G}VOL`J^vSJOs|iev#bh zT6SwHPJ6aHGBTDh?AG184OD?}aOB8JC!01Gya)>YAY`TkdyT3kVW~Hoxjy+IN#697 z$fI4-UnuFX#MOU5GKidlCQy|o=EuM6)hV#G=Ecm(FYGLulpMf-693k_@?UTT(5FKH zFoFLEk8It}p}cNH7|EvooG{vd+9t2k4yM9zJwI;J6tLcL;epZIIU0Sq6P(fgJ3ArQ zmMTSW0=x1qS?ImjGRDt^C2Y<|C*xSJxEd2%>7<4OD$4wZ*WgVMbKQQwCrxDr@_29Qrc+ocIUz9x|KQNn`o5Wb zjuDB?B~7^XJNyMO$)Nzy0Jfd)_WS}AC6oYk)@R*5r2L1IK|BBw6@QEGVY}eys>1;> zEP7jw30#l^OdYUr6ly%-q5lAxY&{^v1WfAdmJ3pZ$^)B<=SlG$+6$Pq_@^@De~(C6 zaQ)^j9Eh1ns;LQHRD`OJbKfW{C=!~hP|DW&C4wUs$iyf~10*Ck42#Ym5PidT? zc&B^ktNn3!abMd%4HU1gD4n;xr0hLz6d)s+kEFgepeEeU%F?T^>p*XM6O_MZy{ z1}FOe2D*U3n`Lz~%-CIC0Pq*tA3l7%l7-&>ggaxBarcthkHc)SaFsJzIQJOKijeqw zEDKBxY&HSzo>wydtSW>oA%uYaPtDp`_y-#GSF3?^MJ!J|#@wpppV;usl~%?BgOn;T zCx8Xfp>XRG5gloO;xiqGc-idfJ3|ABUuACY7ueWwirMFs{l>}46teIPMyiX4bwgB(+R5bYDcxGFD zv$Un(0cT+CA~4vzV(_bK6)sq&)R{BW1ZTRk;3I zi4WJ&EU4}MCgI7;6$53l)sxklnJjoy+e*$kRk5pgAx5^PY1TlKJad%Eh_o1+E|-q= z&`oZ62Vq({zF|bV_VU?)2)NvitlVBU^XH0jpsD%J#uqqXVa>YWt+l*4>@3&3MmY%s%y5n03bQQLx8HL-);k zcvG23CB0IqRCk?I3!0PGABWzm#X){b?M&@CP4;ItCzlD)3wWZyu3?hPr9yar>BFDZ zPJ4#V$5=b!fNAmNuZ-meTNoS8nJ)*)X&x7 z>*O~{u3@G3D|{BC#il^X;H6l6H@&fovjcjq4yiXY+i!pvamK7$s^Aq~cVC5x0j6*<%vLklZ=;D_?8q-b_najeR{9$+m}w zer4Y8P2%;$2sDjk`W)&<5WD2$gjT}oz&<{QTXl+?w%IA8&ikMD`rVT=S~^z67*64d zvh|(*c@rJS4+bE~lQqXtpzGcT(PHSGc+ROQ{c5x&z45G!F3s*~;mbqs@r~(*f#e~+ z$L3iLXFU%b&?S78*Qi^Oo~u_&?tUijDHAi=Dm1{cgN4c`x6ZyIO>}(<6MK^z4(tUW z2GSye`HDYlnIxyKdtQ;;@LqZRwue)8>1Wz%f1SPGMi{+B6E)E#$K^K8to=+qUhtPL z;Ib6^(;Wxz4M^QNa3ybPWNFh6NV3W1=$Ie}=ji&VY1^4C_7lkQ?eE28bn_)rKAY9b ztfL8Eh3OI$c&WeEUYJaHfp&kCoxxJ-VEE9A1_;t5XBw4FW1|{^_I6tx?61dye6`A%bV+eNLda*{XEeg5J4DaAiK7jpFXK*n4G$w+SY_Hk6-KCmt6DE=Gx0qo0=O zHq_7?%@)4Qd}MZ;L|;03d&>PVV`edg3(aCR-t-FF*sHmDd*Z6r23h`qCxi5v`^GzO z5K#4%w^-Q6eD-ERGTnOc^Xz-((BgRh_p?C>Ct$Yov+tbJ8eK>b8sWiwxGpp6zguE* zObTbtsV-G2;dXS~Tqqvitl@J$PXB$|b2#-i;frln(53ydq?N(?rnyg%=!8R0=e(&; z;aR>tXx9O$vv)FxTsHCiQI440v`c$86PndqW5_{HsbJR&rlHk6{!-wjnh zRfsZ)<$Q0|?-89eT>LJeT%W*w|4q1Iqf3xL!Jxl~A^(14dE?yl6rzt)$0KBf%9xsB zafOT2V<70#nUzlxI}g%4;!vMlWYKAr@be3CnU9F~?CRgnmeNmVw}p^L=lczN$kFvi zo+6*a^{Bd!Rmnq@Tm<-WDJ&v9+j~N}<&{AodNagwWjns%FFM5JXc zd~3RHzzxs9yOO=+&YD=^?}sszCM;Ea4_A8Gv*X(jr}itN6)(f}ZA@+$L@ZmaNvNC2 zw#bomw)h{tHetx4jd<0If8w^E;$x4Sl#WXgGbATpE_wfCXML}^vc}EOWbCL4T;zNV zSz#{2STtB(UaupLq7|cf9*hg5#i$wHT`KaLF_-Ilh3i8d6W480l9mx-F`j%(65iiw z@45TkRqSLHU>{6y(N!=4>cY@J*3&?nWkz54Y6>*(T5Xor4`nFNu${q3q5(w28-+NZ$7QZ<^PuW>pA{i`WNmoI+7-WlHQUC%D0ndH#kxFF~^T z=95klpEG^1M|aH7)?a{=dT4@s&~2`+UsVVcej&NVqjOz42cKdcq}0UJ&PJ&xI@zSv zHeU53@)@zlBWUQ0ro)Uk?l{rx_VOt1#OC6JJ~Mq> z^iNM~KK;2%dQ#^5cN~RuNgkXy!t#v^9C)anm?FJrD(s)9((EnwzdS93@L^KlqVU*; z_Cs8zge9y`s4rQu*^%&v{o(pBUNOkmrA6FoV8p~wJs+cTJBrcR51BlIv5|0?Y*;t` zY_BnZz%l!cZ0Tl7b$Uc&#*3mT`s#Wf-SY_em2d9Xe|TJ!U)K-j!*_B%d{lAvY8E)+Kbwf9_moI&AcBH_5gZh_Jp-jAdwfc;3t9 zGPNm(;6(dj(YKemJLnNgTxupDPnHcCN3a z$4!}_GZH4)0gy8H(gRv z^V(RkBS=<_M+9260WZBKCo@SD^@H-}k&x%ep<(p7hnCcGY4wzk6XKU!*yxFQil8H6 z(pk(C4W%351%DkR73Oi9b|4IAW~TVCpXv7DhH06Eb(j|Ud$*5YTD)_J>#HgGQZ(Ul zNuWX3n#8Qey)=8@&8<5sPgaErKN2BqK`I2FN%z~6Xh1Q!%vC6Z{wC#xg!rPF`JBZ- zp1@K2;~~pt3k`;z9o^MbB0v17bCX63CbCq~Ic(sUu4&VNe^n$Gcg$H&)(XM zX05>z)}wa^7{Bhh;J16ebMo~EC&n%K5&^?yxJf{mK%c#%Z4GAS{XmUwFo1i@ILuZB zJHH8#T45iQL<>G(*Os5nL>XgLh;_33YQZ6VPAxSd>gqJ)N*T)M+E3+|x6A6hjxhKN z644$4b@C6&v^tYbW@#JgaCW9Tn41llLiI}qoGww;CY|TSS1YvTs{(rae(>t`UDDX^ zKG{Q!%G)c`xih^&jG|v>o*ag%b*(b^6eVVr*3hzS#P^2~)#JmjB82!tSh?Pg943~O znyN>XBXwYRt5w#Si-^-U9oLX*Exz6R$2Z;(s-yK1Dwb!0RA#Kv$d|MGjiXj2}oCZP3$|U zleYv%0oG*|J3KTsC%xN@J-Nb-*D0!1+o_c!`216VeRkBOc2q`&->9jluW~sR-gmWk zPV@ZOblok4T(kr$V{Qd>w? zHH-l^^yy7RN8;IdAub8-d~i~D<%%WOWz5JH_ItNhb0|oz5l$(E5?+;dZy=%Vx$@Zg zhZ}Y}-Kpx+P|X>0VXIj(I2J~dt4c}2h8P81mkSzZ1`^6Ofd4oR@|-Fe5Et_Yj~~EP ze+ltQRShZ|g+vjz$ekr?e^4DzmD%OwSLE)eu@^0Ym;y3Ki{Q zgpyfR>J4o!f}u+$!@ero+`3+QiQZhl&)G^o7ldXyDc9nf^IsP&y1=g1I_;-<+za^S zrk7xzHkSTO~P>L)E!XWYnVSFSfNKQpa;gw4JvH~%V9=xY311EJ*Yek ze25a0xa-`D7vFnLIO~hYdEdgkK0EVj8rEf__qHP#|N_|T5x%tLrD%0#vwcmC&rK}I*XQ0+G_|=yogn{ zeH0Psfks@xrw@R)S!sm-(X1#(?nClKdA$V%_u`{B5?HI%K@}*IYm;aeWFtJ|IoYAw zPZi`0U1l^^p|oezQakz7pKs_veMPQu>3`nrIM6i^;bJlbu$tCjn3w)dHoH;6N8Ly8_LpA56kGse6+% zS3{~z{SX4h8?W*b-|*JaUOUE&K?Z(_g9f1)R^ktlF@gS}g4Q9VzfjAYED zglcTVt+QZ;+}p;E$Sjd!*cWBf{q)$G_M05=0PrP>R&C8ZS~bvZ(8K)Y!biL7RePu| zieA=)SPo>Bdf<#X=!X>&9#DE+f@ZPC3Q#v<}_oHeAj?&QtqqTZX%aL-$E01*dg$mb-SHr}FDhaaSe%?$h4CA|m z4H)p-anC*=Yz_{6(|>a9yg@5s=C=ECRG_xJ0=qMeC>Ns)^42U8znPEmx|2|0+vMG< zRu}rF0t~{DacpG6UCXrE-mSgnRI{V;FO)h>7BH0XjUK;pf(C8^AK~7R=F+sy5B4Pi z!9GE;6x)f0slH9nwcm8fMswF?ipm%|oO=0QW+o8k=CG1U?>7bCWlAplnehrIv43Jz zU(r*5WG^O8fVa=4jkXLsoG(1S6?u}Q?x^sIljIugDjhM)$t&?HWvpgJbW)`Oh}+~JHV7@B-B*Jxef_R{?^F3D@MPr8jNjJ7 zIp1I$H;sBvbW3Abxmxc6@UOg8Oenl8JW zoI2Cbyn)0LXh#Och}uMBaf=wqf-(W88p1Ppri>w#b1P!B_K9(1%GX*r)%;}~ zZ-cRR?-{EVV>wc7rFtYll5t8|-V*`Lr)tac^P`W!qJK@=J?G&@9MW{?IkL zdpOc!_Ggb?!j{W;3=!SXn0hDw;_8yC^|1RZ9k9T=ke)`*bS;y@QgtM!CMSqq1Dk=+ zf?3=LzX)^sENA;{txpG|m3RC_YiP;sB{UyQ&7u<)=#Q~$$bUh;SpI?pW#Ajf-iNJyo0)y z#u$=+&bjfF{Ah$#xfgRQSe0rqW$o;4(eLgU*2T2LnemvD*l_+w=o0O!97j9<#V>2s zBQFYQdB(M8^X!2^J(U>gBv0i!YFq0&XX3-bN%FG}~&8Ds5 zPF|4GpG=QmvHb*2p+f$wOc}^$!=9AgqgE!r3@RVoc=;o9t9i%!eDIFA?x_HJ)?;41 z(ys7@cxq22C}s}Gub4s_1ok7sJofA-b3bK5oG zkixCKaq6Tpe?qA{$V1ul6FYxyr2ivwD9#3CtM0U9`+#mFL>!{&XAc5v-!*P(=l(sN z%<(G|F{OB}Q^UKVhUjKVukjib{sFV#k=2DPL7 z*udzQM}4Ool~#`K#$OU?@6hh!CF9VZ%j5S$8M`z)yKI&-mXzhdvB;Z?#t)b@yyr7V z(GYm5#BI^uPCBl*-CM=2_e_(kDWJl4p$tQo2la_Q(91>FGZW%;`y*j_(B>jHQ;vJD z%UNGYnH6)=EPmx_(=JVSfhDe?U)>K%L@=MhuMkS99~cg|z=Gcldh2SP>X zOPrdO>9ae6ejw47dJL6M+eKd~B@ z4W2Iv{ zU7vwwo0Gah(L})1+Zp`kIj%<+pF+Nd%)6!48@C5&KUaWg4Hs zz%+-Leby%6933r1ExlgC2rX401X8)|3&_1F@ApG*t{ZSX-Fdl|xta*9B%OT)b#HuP~OCsfA3Cl_vXs&dyBwLwKpCkuQ^029#;Z^s^ zMrI9}q*v++gPtJ;L*SS2Wf2I60+w8*(|II}1C5z;iZ>srbQN-#4FTZXwFgd#O*G26X4EEVcWzqBldBn|vYaKDCdK zS->%sh)aK>i_UiLrUX);?((sg)T;y8+>9$!ZiU|)Xtlj_)|PTCAHD1W#@Y!7rZ_#X zJD*E#MzI{^7nmy42Q#$kk&}^-!E`jEUa+$+13~y!vQhMJqzPgzCCi?i71^XKSniYr zoMiZS2_b!02AYrW7?*s=`<^yhMj8zZuq_Sph^FkUc3R?dCQLj9JBve<$)F``EK_fb zqAlICMBX?Zpha6wmeP~nNUf1J?O%%1pOZ2}q1f$5kJ=hM*T*+-L%Oy>v^No#6DtNE zi|`z)qiXgvy}NndJy*BOlk4)>c(C$Igp;bn_Xx5Oma6f&^U>^AZWxS^HTAOE%F(kc3*$tWb zrWurV!{TK%tIF-$Yhh+c{nhXD zKz^fcQxI`;#Aj5ncYg#@BC4sf?qjLmypF1AAE>rF9@kg#)Wn9jlqdkl%M$(Oqj~Dz z-lCtZO zqTrlxo`d|npmvY>Aw;A|F{2ihH1rOA^x#SByxP&(NXW+OS2`QppYIl&v_iHzapg{M z44>dW<77-QU$kG&9rZ<;>w!_a)m2Nn{b-U0y7lHLucM&mgvUDHwA&E=0Te$$^1E&6 z&WGe9vnwM{3p$|3ee<70r^7I!Gum!CR>4aMi!j_F6BN%K6G^3ZA9ha}NSgabm4I?prOW)o; z&^fXI(|0Dke9S_eu3NMAaC4_X9St=#soUK zwh(96i6qdzm-*oRAl1DT?J^bdS{Q8SrwXHQz$rtiN`x@`eqsnT-P#SC0;u_vDZB4T zw51()q#F%tJX$-#SHxQ-OFQf-u4r!BGV&&8^N>UWX4j|XKn@#Br3`HwA8FNDB|wvj zsDE}V28BzFWih}{T%S2)GBmJ((OQtQ;w+_vYW8eXP1(HkQt$0CJ8_u_mc`Ro`)t=s zlLH-PEr|mPTd46f5+GXy+Lf9omnyrwqD^^}9l4$`;#`SFJQ^1b`z+ zDL1^87AGF={CG=Q<}7x?6Ds@+6owWkQ$uJO^35zE7-PaEBYjc`t?oWek-_{5)gYKAT|#g3LkY#V78 zA9ALzo^dQoV5~d}MM8nFRwL)<`yaKh63IA8DS1|pHoRumO0r=V3hYoyzWAqmBje3B z3tm*WmIvxdp26($KCv-1#29Y)X%1+t9UeD$lXyrW@Z9u&&jKjEegot@I;Ly4oO7iq z$1W*LqsL-<-cLA|zgS(iOw$9jsLK3Zy=AKeRd!(RwQ^iIQwWn-JARCY;5|a03jA?~xO?HxG!c6c$KCXz0sl}cyC*3U#UGS+749D3Pe5c|ALzUz~wK`g` z`&zXLxgK9UaOmrVPnFiXbnJ{@@oZ^fX*|AZVvze5FJ7e>9m9s2sZ7$i`xNWRr~A`f z{arEQJ_!4JSJOpvYU4*hokZ=(1~gxVT$cSIoy*E}s)QQHxf|Z7Gk@>xn1u3}9nu;S zJ+aqp@}F9=t=z-EPPg_cJPsaE zvJxWA-gQP&uH=r}N$uaT(fT&ItpUB4a@KUm=eWg8U0CBBGr>Fq9&*4~3#kNS%C(zxg4$)y*^KG~v*@k{|9Mj=5zIfatkQmmh4CG!MdSeH?T{E&;>O#eq-JgbxcWTn%7aBigi-7_u zWxoEyiv?SMhJ`XnAK#I}L&|4ZQiJ_mtTrYmDtsTA{mJumi( z+PF|*7btu1XDW<@S>@O->GTsEjv6%c+gB_t(%VwogsQNeNT z1yka+VgD515fCBS)sq)pwAWk*T3cHiV`5?+AP|Vd5fsXqI=uZ-u6mcighMW49gZ#%^~KDg%?%fCo$0NSl+y7$NI_XaU6S}MY?vZb5mYA2l<+}ht!&5Zsm)>2SVSW`NU zzDThMPh1(*^XMvVNnG&||BAMDx!M1;(cTsi3_A8vR$%zb&wRhN`yz9{>EGlJXl0Kr5Q^0iNXW zq#Y1kFCznkk)NNR$>TfBSHk4|e}z%fi$1;kaS7<@L;wSbVhqr&t%3iGz4wl4vI+i2 zA%cRafK;V}f*?gfdJ9UED!qe>3W)R)T0&7N(h=!RkrsOI0R;r4cj-z`=p~du;P?2x z3i#f8|GM|wbAI2S=j4x^oALeHI5{2%5;4tpnzxx;Kjn*ex}v1CwAAiP&=rS1e1_7drk+2z zAORX4@lqp*e{QCjDN5!i3?3)*7U45;FlA}P6K9_M27L4Ozz6=>%S)a; z&3_#4SHJ@J_?*tXXMFJD=h_n$!%p=|A`dLewHq#{^67CvO+P`Y?AD^(DFXg>_-~ot zUmpG=k$=VJA6y_K_n)nz{dq-P`yYjyEO?I#b^Fsr_RISa{vo@(4GegUS03)3x>FAq zDC)Vf3zP(n_W}91&mF7^bs%$kf}z(q4Dut@Jv%uQj&%?sz*>rh`Ma( z&c4#8=FlZ{MXj5?8Z%C-On~btOv#kOCF1p1>lq$KE@77r4-dRz9l5I;O6cQm6d|%l=n>n zcI^XW;EFFND~{BZtLeZ6N+I;(D3v5JWMm7|xs0o@INEz@L<{<2c2lnw7Z%n8+kr|& z2v9UPG%z3o%IH<)-Z$X~0sGy`?)tP!tP4k$nBB%JQRk%?VtF`MbLn%HtLM};K!xV* zPEO8yi|Sni&k4aO_$(*N*L8R8k*83V#pPF;ZLzaL9BN>~E92K*j$Os(?wlj0-{LV! z{*-+=G!!bEauv@99$qED67Ek7j%=%Pm{;+1sgfnU3;&_yaN!+C%DlO4B5Lx>moEz9 zk!t%!{J8$sDM0E12mRL`CObZq;U+HVI%)SsjeHEo&9nH0xw$P+NqNW$AB+Dkl2%f5 zE#qY{W0*Fh{I?rYsg|0aHwk*`&fj%RM49kz^=<%fdjMVn>GzpioyxAGqvJ5mQmbq5 zc?_HtC-%0fZ=D{>_x|Vfe;9S0=mu$O$~~TO&UXbpA1#a1(weeFC<)^gBpR07`3Y{w z@mI*c1TNT{Kw@54S)qq+US}MzO&9i6ppfsp@!**^DEv7)eipEXSy`>~1t?Z{FUikq z?+m>e?NTk(1=WlK%eI& ztWXJbJ*z7S8phumyI@@P%t`s|P}bq>)eh?xS^{zn#+DlozIYi+1^Ya{;KM= zSaQ%w=>7@}_wpeTJdjt$R(&|ki^I8=Ii;qCS>gooGlD;-pH<=Y(_IIBa)K-Qe1|qM zke~AcQxNK=&A|yJ9QA<}?)hZf7YQN*&EBl%*GJ6zir)i+3{wv-0p1@uXh1DIhg|)| z?-%X-gL4~zebX8rMscdz&!?@0rcpw&z*8BalC5)!Z%o-;Qv9-&tj$j?q04y zrp27{ka6+;-!c-gT%m=!IXqW`2WPA9{y{CUKmK&xLWX_(s;aB2 z0W^e|=@TZO^2GsOR}uh^lzmg6mxN**kKW(&+Xn79S#Eur*8Yb*3tT|iqFt(Row2TD zDB&%e>VzArKTAAZerCW{NQ~tC>jO->Qf%+@WaYx4>i~G9mOUCMPk;)d93=i&_z^O| z)0CgFa>pjt8W(IcGEh@f>pogFSej)aAyT-?#h8^0T*v~w?(NqBJP+q{*s$+Zdy}0f3g}8?#;7cY+ zTQ)-B*7oI_QJK3VMB84th3^Yr;#GT@E5}yH158-#25V(GPeX>@tEJN zbWe`ubLdQ1rQH>)6Ai|}1>q5pFoIKzz&IA=YInVU|KJ5~27%<8Q{XJ%WKR9J0G>7G=$V4*Io`bTc!0mDKAh9d9CD;2mIN*-3wX?bOC1Q!mcQb&IBU z_p79g$CQIw;zo!6CXBA|xmIH^B>3AttD58wHRO&lkzjaPwuGmBqbiKvZjXZ0z=oo5 zC`oN{k)HINg%ot9~p9D5@eP5fX&)-U)CyU||+8 zD8@qSBoVX=W@a)6dtIdNV?wC9D)&Yvhrw72>JH@UB#k}$_ z_Pk=(!JidcEdyP3mlfOo?$1@8Fl@iEYLj?%V4Y3oU@gPKgeUYHM{eExiW)=Mi0AIh z=FJW+p8NZ2`F#6pWBwF3KVZJwk(yv-8(&k&jNMr7Gj^B8w)n{|9YuHK&UYQ5#xfkfc;bVgjwpX47&K*B%FQ&E+T0BlgBKB{s7B6C-AclIhmlG@JJ&udZVmf`TFA z>{D~@a@d)Bvd~xqDRdM>CSfnoKal4Nk8!C8+zjz>nIm;yYP)iH#FgQv_WoQAMKv%E zavDe^RnhDc=71lhIj=-U$sG#sMf$TzaG)BJ?vy(o?7_1?xV2`dV!lA;qOlUM!}wt2 zT9_2k&9=4Wrz*~#kzNB zbI~118wIJ43X)Ek4@L}|DF3GpDiKCd^b4%3#USlZi>Q4f~_gyp_m2G$-!Q>IWWqeR26W}B=Vj#aW z-e~^wWE$f}btb|=zdux12xUeqU?8y5XLfWGK2*mAr@dg7t_iv1@v|4mGj(ttR zXL2!msktXMZ1(13^pQC46s3Dc-C71uXXUa@vH&I^)kIXpJ$xq@HrBx6eBY$R(?JSj zdDtwwFL)jospuxQly7!3aWl(p{)pyvC?zr&n(r=qLGWjpi7wh}hqKq!JQwITyQKTkBO?G$p^k&5 z=pTNvV~2ytAVm?=^-U9L^a^oEd6${s#&FE&Qnhn@kKbxCY1^|-@>xE0KMB~2ND%m) zk50|ewAyU3wp=X-3Q_|*EaP+V+%?raiuzhst(GIPwdOcDoldG_L}!OOl71Ir^{$IG z%}Zl)He|Y3$D$fDtQw3V)?qzb4IXTrPK9mWGQxbtA?6G zHx|@#Q}NwbDbVA6*JU6IkLK`?1Tfj2*jPuT2BP2mnL?z_<%-cJbP^blq)6Z`L9g~K$>hDv(n=+Ri2OXp|o5$+fsXV|GdiHagEuhlvq&J%)a&N}4rgwj5KHe#|_tq>hF&{}pFN`80F_<7U_ zyzi;uK%j}R$i8NB1ouVv@6cw0>&apR^BIb>8-52}%hvBCV}Gl_OHy5dn53u$bHu9! zQ{+0_)$PG~N{5DK7vw@jIwqM|(d5k$b0YsYQ;*fgxT2ou?JfLD6;G{v;{DO#hqsEY z4inF`i*M6#wJtU%@PQn3vX8cVihr1+6iYVV?7ir#9W=y5c0FlNv|rob8&;c#*ov)Q+5Fr*GO*&7kx5KzV**_u zv!oJ~?Du03k@RTK3A?LXi!Dp7=Q;}FYQVA+!@$ooh!45 zPLz#i9k5Z2X2UjdJsbME;|HWTtu_l9tLn0CkDK-Ot_M%^ zU4M(H$tV)>^zPC?gd?89H)F%2+UhnoJe*DMbZl9qC&ljVA80jR%#$p3Oq{gbkKwU= zPIwoc+c*5CjD7rqWE{-lM-Bf5mMfLrWH4%V+B{a)EYM!BO0CxExus-s+OXBo`ZKC_ z8_yEk6}^PPuN1#F1-z(qFU5i?u{?*P5k!6TXn=BhF{p5^4YhD~KHz4qp3vs3NLPA% z2aEXl^F$ z2jN+FbNzIY*YO^&`xcO<4nx8`uCwgRI_N6XFUf4!{ZTvH%tOb41FT80bt2DbTxE?_ z?>65L4sqmH>EGtVt()B&7ag7PlLt*ws=k+}zT1qRblt(vQKg_VCLciYn`oPLf=jH* z8=Q-;*Ig+Wu1@LBz(*W}Za-}1H&feCs`7@BgL|((A7IF*UHx8)zAZjgt`cn)oTNT5 z*nCm=Z9#e-$7Emx14E63hKPXWnf?*9-1@WS1mb@zzMoVqvN3w)B=@=HYT49{@8+){ z3Gb&u9=F$6nnKHx_J_76GZeEa}r|+FT4b&sCuI-zSVWjMeB|u z5&p3}0|WO>tXBVVLFP) zM6Y1rfIF-w@=Ws>n^7*(^kAo)MLX|#uBjEn=2iESNzMsi-ccfbf`QrXn3;@;{GASHu#S67wBnsx`XkinB#V#??S1~Hq& zQfNDNw~HSeQ!X3VDwvx=#T}AoJ85da!1uxJ zQ`^YUaCby**;T99u1FcTy$`?F=GHY}X{J*XCohI4heg_y=6n&4}l)xB;Z+Zl?YK1gr;$kCymT3QuqOCwC8)KZe=s3UV19OA;y$u-q=TW!Wd9Q$@gtTgJgOk5hP%+3nTWIb41lG5+i?n;6FnP3(sFZ@t~QT}S8f3@$h+hNAk2Bk)7^0Hf!Zv16G)HE@(fWw+$lYtSbd zS*9wn$F65dZxEmC#qXx}Jw&u!Q}|HajA4$-(690(135a&END{JvsdSXf@CTrdB$C{ z_ewx)M)*Lei@dZxq#+$YDZ;6^mYLz`KqX>qI}_`nv}u53tF5tbaIV+>g#z9(?B6fQ zGx*IO?!3V)=LceVR%1Rl7p>1qP??AzgvFt1CfF@DIcU2jt0Y`-T+_I2@nR~~mAT>z zu3t@-cfmI6L^vsCwU4&dqZkBxPD6Gky!>x#W^L6Nw)@t;GbkbKA;cech&CwE) z+LHTgnSF{(o0_xV?H-+nBGp>Zx!VB)a*~oL&55gD@|>C}h0a7w${*SA_=_asW}9(0 zf8{AyVm35dgz0(zwx2BUftv@GG0VC}L;JL@GvWKm&LbAhd6Sgb9H-v)i(OgNHzCt;I4~) zt8KdSM4sBO(00Lh^KF5HVkqZYXU@9)Ym@%TXOs?klgg7FOxoQB3JY(}LRE3?p43>L zzh=-i5nWuUl|QsS%%h4d5+VB)y?n^z{qmBC`THs3wo9T*1^cx2Elg&bTBT}&g;jXj zLk*D}U1qld@5i?^BALE)h@Pg*sx^0mYTogF&spWYq6~2e!_kWe_;fEK?{y{Y^NM7y zS7|Z17z*-OlKtx|X>fhNoRcNt;S9Vl@85u_SG^-40b`$2%@Wt|UvRv$C~XM`H5m|} zMeB0jxXmTfI+$?lx(MC@j-~&7=vFNV)Uriiz2T17R8eC%`mwS6Jp6Z;4_gT;@GM(t z73i3Ln-q)%yMP7TvfUc26I(Di+afG+xX4f0vwe_WG zce*Lflave{PkM;;0roo^sh{{w>%yuxe9;3#Wtb1#$*A~lhNw=DpwG=8Sj!xapT-j~ zPN|wHa@iZW`M7z2#$+fx=h5>s@+zK3F`clO-5muB%#k`gTFr2`gENJ_@EbAMPu2j^-|lt~Zua zb$!mdz?fV9ZgpX)dFqP(_OZ045P7?0EVF4B4@623T5_C`UsU0-6z1by57U!B8TmXO zymb2$9Ak?x1fNuZ_)9& zpMrT>bLxTw zFT(1h>*xp6@{tJ6=NFx9D)w~SKoB;0E(D}2%Np^SxI*{`PH!7kVOIL${r~?5;1H(KB4>Tn1+)V zm`ykxN%g&yn0k~JS^U-7etDc&bJJg7QLqkl^o0ig8_t0_d!xy1$uMqr_5MBixuF03 zjihvrl9`H)ZLL2ALgIoO=Yp7bF!`EiSTJ6R@IT0*+Y8D#x&_y%WruIV#8J;`_nwh@ zZl+`&A=ydWqIr;ci@=SqSYT?|3_7L%Xuda+s$y#+GifK^vO#X;!8?YBc4KBN5?cYt z)ns}S#)A6*G%0`1Q~O7WZ{dR`g}LB2kM7vXWpB|l{RDLZfUUzM{G-}Bcm7f znNy-dPDTQLqh@(*2Lp|98>x?#6gc#V@xoCL(!Y1A4FThqV|)a@Gy!vZ+<*1h8)O87 zac-YIfd`Tstc+gdse>f{@burVLH@Uo*jh zjs>VC9>x0)WS{G^qPyPBQSe;LQVk6kl+o0(tOSAZ&N8pHIgEAiVPgnmUKQaY<=Q?=<0)B5-_5@Atw5A$~MPZNuZQf&j^wSZdxwHtldkU zun%MxS8|R&8Kakk`irT{W}(~X)DN(&PiiJ^7H-7ywRb|2j7h#xduQi|JoVf!3E(*#tPDv_o~}S^PGF+k`&+$m9_-IK|T& zh?jcO;2W&5b^3gZJF$6hIpX3zSzrMl{f-pk5s;IUfX_d+d~-6HZXl%bJ`@Lg;)6YS z09f$;x$Gwv{5>F2;VS{!N!_c{#WDvLcp;w{Dpx3;Sg}V(tp+dui76A!(X-k|6c9E@!$dNuqYiO z3hshLX29#&VtDVo4Y;B0Cml=Oc+ zXsCBQ|DsHw+mYh!iP3K=qAASWw?(Cuu zouk3?AkkIo^%g&8uL!t~`uNfNakntBy&>?FCZ(c%gF~b!{-~cwU+azht(^wh7 z1nmi?6g@cnEVYxT6|6Z^N^*CPD3a9n1P8x}QBjwF$afQy21Qb3 z0!by>b-TiLW6%1Ins>4;G46HGlh`|+XUYzR!TPILwPAP6kB{lSz^b4nRpSa%O6lI`<>uurhBr0I(y*mMSxbwc&$$6<4I35sgR?~kE_WlK~L;xfb z-@;E0`*FMl09RZ2i~T9h5dr*h5jL%pECgJT6@U`)L8l~~z>%BL%TWb>_f)$PK)nR6 z948I|>ag%LOFBXG^@(N>lmO6R#T#`JCSmNZ1jrQ5I@V?2VRPV!ZsZB)NzeeC;sB88 zpiXg;Y{1wJoUxU(>Ym`87XS?)`T36=Cy5b%83lw;{xa&XME!)<|7}z+XQ4)xf?L9S z@<0GiOfNW+k6BHowo9eqMnFsCj=r?vwR)M z9*XS>l^F69Q^y%*RHHdIZycEb*n0m>hmPGtb5a!g@_GJF_2yYCGnNw^gPtc~grcmU zjH68^c~GKb&l2_F$;osB?31)y`N?aUndKw)iB3~x<@%7=>&MjK2^0d!RRP5HJ{^-s z#$&^}8K_*ZQ9wCLS}1waIH~|Bu2S6n-szm1gpHBJBH{j_ zK=}v{lxxaoQr7SYLn=7VhXTrjrs(%OOv;6K7KuJ6jDCUCG1&c(A-x$Tw}de0KexoN zzEBtN%`JP5l63M&N)w3rHVO#(W73Y;rl{(aHW>nhuzsXK0Q_-i3ATZOc3qG-VSIZg zUlyH3#@x9#;4-Z29Ey?J33ORF!wi4!TsxPcX@<_4X6f9uYkV3lXK1tNA3u2qb#6>_ z3U?vv&P2KdHA#uxbqC5=ec8)3Tu%f-Pz0bpUui={mobJ;L9Xnfj2h# z0!f>%v7tJ$XrE{qr)}Y4QO|(^pa6pTTIl{f?_9Ej(N-$xRe1fVEv{84f5iWQF% zB<9@JdsVT+M{h8bCRYpRSBhu%G|q#7S|sV(41rnA z+|Zckqf~|6ZIlpHHPh(55@eHnb>L`UUUQFVpU8wBCw04L2a%T77hMp1*c1;v&i5?35JEFHx=O!f|?=LgM_Ufjw`vb0OX(W+0 zouSoZz^iBIc7{uTq#_m*Wu-W_mCzY{R|W!1-k^4Qf_$Vurl?8oT-huaKm1twgC!Xs z&Jf;-w_N1VIE%dSl}a@LmAD#+I)@DUN;7!{$nAAKESozH&gZ@L!m&@RNOzhQHUoDa zGzl>-m9@Pvvo6!=ht!%jni4CTu^vVuT08|%vN%~25uMy0xlnZ#GW|BNrUO3Q@*3BE zNR?4zUlMSuE)jaZjyjyj;JH%eiii<9DY{3xO;4k z*(TyqRxlol44BTclV&D|8A}TZdbBS=5Mrnl_u% zgnH)h2_~0jsS{+CPYR$i#9fVtM`E{13Pcj^vb6I3XLGN?!Vd7Ecd(f9&FVPr(61V`eIcaf-`rut z36+>mB&U2*=aF*b*LTxh9iBVm8I@1&nAo^CtZ&e1bXR;rv*nQqznWp6tdM}{7kk>x zJF-6Q6;<1)+B>@uTP%X)?5MHG7jG_3R*LqT-N|k@D;@H_{!bho);2r59UeUu6{CC*$XfrQYJE*=-NPX3(iJh4z-J91> zNA|?U#VjPZ19m%n9pN|+s}e->Un zjL`$$_AEGhlevygTsal$(siyc)h(a4BlPgTnH4;`h6DZW{fp9*hEtPhf&A?Ns|q4>G982Sb%VO#_gG=%*^bZ^niy zui=U5rT zRLcM_jFC>X7Gn_ih4j+Q4CQwGOvwDlq4mbcgX4c4%+AbPgocQ1v|v?5mrG2CEMF#R ziy%L~b%X1blHtSLf9$qu7+7B^Y*Qf}s+(vW5NQ3p#oXA!quS0iBReX+l(20R*fC_I zv#~F=v9H2i$;n*zPWU+-6jEZ`s3OPvc&?jLq-T2%Y-$dArB`Q9brnIJg4 zcUn%+!~X1(hGpN{r-$mvo|My(CS@_nL8bF&mkeQK`@s;pqZjpa0>|h2y1Mns3q<=j zj)NsYw&y*-v%IIIbu4i}&gxH@D+pEpJzHR_7XePTMH)3Je((A~AczR?rT=#IKaE%3 z6m)~7ci>eAJEV1W%#UZ`X*~?J$GJ2y65da>8nq2%UesANZp`+T9}z7T;zZaXAa0t? zo=j8yM*+a*LHS+%cn1QfB!Fx6Fja_Eu2jU1I19bUk^RM;Z@mR)TJ+|n(diIbG?rmY zKIi#~u+gwSFe>Jq3Sy7}Y}OsmJM=a7dbD+q(Y{(`@?}@8arSzLKDh1Ce5k^pWbAJ& zojsOGZ)a~*MBCJGA+vS4n^ui;v6h{3m4fBfj7Mj~c#alDqYhM3pj<($`EwG< zw>u!@-qe6bs6T4Vq^s;GnN0>LJPVo(;H&Ou`^BqzSpd#xlrupf4Q|`dt(y&UC>1B< zQ&NU~rT(L>NcPo)aW?S7T0F!$a506$-Nv+NIZj0#v&oG)H3m$Dzm-jialFCL(w-q1 zFis`6{^0cjJbd`(e8OJLXkFQ?!_ayx4p1tvyD?-s3{;rcF-T%88X>BIm~Vn|FAAFu zcz+&Ke3SS7G4=`({y>1O;0eBVc};Dm)n3Hw?%SXS@=S??)&M#NqbS#}<*ZRZ>q5MP zfe^odY**PotNm~UpSvcr_FSDoN)GhqPsdyr$TZRmllwQ0sfz+}nMpa6FXDfV5(zvc zW$gYL9i_>AbFvyF=78s~OuG3?czz2177%0HlFfenTcCj7;(!>VMx)rVYT$xufskfx z4?O1hZ~(_U9q60SP;PTwi{!lf7E+R+`@)zvH_3Y))rR@Q3u40iHDY)Q9mA-Zigl7jk(iaY;!|eF)eX zajzx#!vehs{7-$Z1$p6xy?U?pg_#j_`tt+mTcLh`{KK z2|zEl%owge`d|*b1-cBr?5lm{KZCv^3&XjrB3&nQns6}QWmzyt{&P2n>3;^b1$y}$ zuu%R7;r`&y1oAldsr8?7{y8X#3ebxXDfU0}m#4-hWF)+o9rT|;KNHI15VC!kJUw~f zJ0T0eu1DtY3jZ^x5YWs2|4jGy!|5&0%ry7-tdRNN2}GzoM56}E4Vc`9N*LEkz-5Bw z-4CUdi9T%pXQt|Jy@Gd&%dAGrh7_W;`YwODhm&P-#S!tJ8HzJ8;(kmLGapa?~w}B@vld;lW10fYt7Tzcts`arx zwJvDMVUW>LO&m(3GC%&Hdx{XBnLzYw0c5I#9LN8!Zvd)nS^3Si1GH_UgZ(LZD+ z>;fRB5mH7&e=-7i8YC|cU8}PC-N8S6l0OTuvo$5p^35q_^aqPy|H*s_m+`XS1pV{( zwU+?fo;(=h|6@s0k}d=6Qe~*I{u2Wtq<|rLGZ*9jpznbyAn92d#Kz@+YH91wmAcaJ zr2GecnHhMfP@LY9`!jML8=5oA$7_K022X$KSuMJczyBdQO&k~^fSKg!SllS18kLd~ z0xgGQF)6|ON!&eAG>XDCx$M{cz*S__{LC1-Byll}#4;%^X{HnC;-FQKONWvUxt%-Q zI!6*D@8_JCso`he^v?xQ#e{o?gIS{5 zvuYRsXV=2(^TazljHnB7lJDdgfaI}7xgiYGW0u8V#VgK+ici1sy} zsjYy+-khc_Ku)2>y+>i>`OcF3J`Vd0+m-60**DfTUnqiQCUj^&wTwc2}8t>!tekHPpe z{Q+-D85ClJuRx8838xLG3FflTzJ8teDRA!1QwE-|-PAV&{*W79f|$!GQrF*jX$U;W znvrRI94d?y0LgPwk|Zg2Qc12}jg77R)U!a=RZC(43W)eaxIS`t`zh}VX*TCD6y!jj zAAZP79B*at=%e5dxEv*@Wf}AJ`icGl>wO(BU68{zUm!33{H7b5*IN5|KVmyJPqeAd zHzoyhW3B%Px)exe&Kd184cd7~=U98*c2E)bRXh)^SWDu;^ifq!Hd`fg#|{DNCE~Pf zt4D%AUBQl*$IVqYlS-gc7PY+it>(P&1U28SG8cQzc%UVs-51e$>q|RE(@(Pv8>~bV z+9ZsllP$DJ7IaTZvN!ql2mK`hH&GJ<6c>d1W=$NEZVJu6C_jjb*C;6|q{=oXV#G~n z4s=S|88*N++ptV|vA#d&vUOTV9*p9>ka|$Zt!iabPMODsd+qWQdY4q$@NM(>KN#r` zzDUqND$L0LFkR#HWPsI%-v=<`xlf-3z`raRMnS8XeqX(z zXI@Ou&*4qRrcz;+?A|H9F(fzEnJ8+cq7q`+S5+$N-hX2!(FQsiOed;+S3XyQ)JW;q z_Wj}KMx3ZzJMyyIZe!*?Wa-=Oa?|EZ<(50#kgWx^eOd>(P&%hv{W5#tO=b?j&fzp( zlsPJwWSZ8(Z)Q0c6MQA253E;6^;1@(~P~LxH%5ITX^j7%)TNQBW){A=qvO~ z;w)&jv-O(Z%ki}z4Yk>d%^`F~(_i2!^dW~?S|DA?3D+GuDh>}kd~g8_8!R}Mm|WZE zv^+BKSn)=MbiM3kmZFzHv|BLAI0EXfx2nFQHV_}7#-^GmGOIG1!25KT9WqtHrSovw z`&ma^WmK-dYoLS7S9#RNZ5qo2&a9!5ri7snt`0+E5;Liqbp+;(x^+pA*y=PX-EvrB zyr3t-0P&(yG{W^``{5dcH{<8+dw#^#m75awfgSU(SA%cG$01#O<%v@ExzVQ_h;T!i3OknAq4@>y@#}m4?u{s$7HeC`&ou?RoR!H>l6G z3+jAR{#1{2-U=C`BydGVlCSa2< z6G-`q38P{P2wLy%57{dIvyblFutA{H-6!!#?lcoz>4@it-1EEW^s-Z^0pRYWC5I5h z;+KmTY3kk6!|&a)Fk8`~GP%<;=S%CLnA6kxwR6L@Gf8}O9)fims-8$MwA7u- zqsXEiVFeXl27gPNz`tv=>sosz)_j}TI8EC!9heg9snJI35cwk`;^Qsf(5 zg%%g+}yz{ zdC!4o&soAv);{U6sch0*F!q{Fga^bXtw=yeEO}7izTQODHXw%=5<(|ZwLaZkZJA#? zc=3)P==D;ttokUKjF$+el`UEKTDe&VmoxN=^6k$%&qjB4r$ei=G}0>^+L?{Q^PwNU zW_m1A;f{=i&UNr*fAL^QVI8b)hOP}D^Q-oVs3K*r14a^%4^}LCE#9FOL zhDz>hOfnj}{E%7Mv*>c?+K331be>OyB+&>zezj-;i{~@zbX+xC6he&sa&H<)nzFBT-zoEt zAMdC1`+UE+u2e)PPQ2T^{2rU%L$CXhRJ0wd!z^9S$+gp$Bwd3Dv`1fr`4YbSlA$~* zFoA{N+kcGfLqNeIM@d9uXga!WHKG5xP@1Z$HHRtM(4#Q)*{7PYz0LVb$b5}K?w6Y* z;^yvHW-#@FnG#Do-j}f&Lld4Xn;#4!m0v|fw*8W+F!3@M>=YAhaIX|(-Ut9&k)%v; znG}8&-)!egTegrHYP$Yxgs5+9f0fFh;HHT7zH~|z9>J3Ltf^lmp0=RYAgf$k^kxC5 zD3jBwL>&Xzy%C76vi8K=L(}7sNhc+0mW%Xa-{LoKJ4Lu4hjNTGIBq%ey`O5AGK;E8 zWh`(+jx}Ap!rRZF+Tdkle@mA|^O}R?mv}|W6fBERDx7mnaGmI{R9IIm{f?^d@d^V)+dteIe_Zrg5UgcrA8&6qd_cnqL^vX9pkv z&Tzpa(;UBMtPpv+02bWG?h!2|R2{AQUW76JKbTqPi2 zC|3AzHtx)$QfiV1GvW?ScVn2;-yh6ozgA;=P5N-HOT;ATOhl|bXBCs_g$@?wISu)x z((7K=qHKB{G8#S`|81T?*j8F$}V=5i0hGD}Ka3mH9V zowN6mDM&WGq%VEJW4AEVJWa#@24G0{%YjM)b-5=>GQAxp;-`yVXf1S?6^STylT4!& zW(czIMbOA@_nC- zKb@8hwt9yyYpwE7Fey)e6R25Pxsckf$^Iy47BK9tkX!3m4w9?RJ+>Em1UYw!_QBlu znlZ7R_1@49^`ZtMwwImMPb_^d1afp+jUvW#3tG5l#?zH)AU&^$jM}uH-n;t&d5_Pp z^l5De#U~>#Vdl%1+fs&z0e|KW8+fv0d_;*ggbXB3`tsbWK($A#jZJ`jCO%PLjr#Sq z?S<3;SnFM{t;Q zcy5nD+_@jkfx3=+jXdHoFASU=l{=OeZHVHLf_BX8TvAB4-XkWWQ)cOksUt+s@aWHB= z*>l3+9;@N4PyALRcY2~V4=rRNc&AnkwBpog^!erk5Lj-{vs)unU>7$QUVQsi7P|YdF6)Y z^Qa$$xYzqbw;~De22kJfHPNZ-^TXkOnW#iY6<6T9wb0W5Jvt}3X8m$KPs2RBa3nml zfh(@uHnr=@GGcRiwW4r7Df`mxtw#&1nRw<7q zROqcX_E$Z>FRoT<+njl=#+;We))$K7Wbu*Rgi?=Ok&-R1qj4;BvrBZ6$JQ`@C|7al zJoy)=toHD)Kj%Z1`i_~Tpz_DXrMf9{;qNTkq2CEY0<9iEL?mRc>2NW8n%ZKrujOzB zVc=JAMZVaTeVbh_pIng`-UuM>(=DcLOX{ewb@LSXn8PG&|*ybv)olCxfMz@^Yh`ckhMUNbIwzBp6F) zzK(U|x6Ss4Z#OA;i3mC`=?(!-n67G8j~&6a)f&E0AK@H!I;FuI_Yw_x2zJYQ#H=dURLq+O^l5-(0mzexOt`p?2mrzSa3sMY%s8%60qq!XB>a6|#O!yyHry0;yHE z6nZND8bT^C8+&JhEM|-^{ zyX)~*ut8mcr*+-7egM{nPjXy*O_Iz225`wXk#g0hq<LKuxpX$E^ci6ho5&(^OZYJ6>k z>Vf4egy2QM6!tut$3gl8i-eP`8<8MI&w`cfwwMuhNQ_e2q?rK$1?me!(sOrrPnoWo zLePS*&K6ifA?9nC&(zBCb&Z2plghV@&)xhW9(My2PEOVfUF3LdA#7B3OOoxtprhi6 zue)d&h1Eoo+9?47a^>`*xrHDUs`7E_;>8M}`#Eoqk6E_o)P= z@qQDQAnS!uHjArmC2MioyABK&@4zG>X!d`e1GfznZglLbADA6tSsjO%rTyYtQX+*M zppjxop%u~E*zELq8C+k?L?GQMP_NJcn+KLpz3PrbU$C|pf%>O)b@i`36%Kh_?grIH z9>*RQ2P(}@b5f+(A&{#z1^pA9zwM6SgI}S#Z+O2N>Q(4A+uMtLKsItkRyB}47foS_ zEQ^ecOpf232F@IV3)pqR+q7;^?mlHv9s_PUssi$mPiq~e7Qmz`Xg1$v$E*mipi?Uh z<9Xhp=(?MKuBQzQ{7%4Z7_PVE!7cvWCYc+dLb1#^dHzYgz_UiE) zDI^u`Fq&t{7y1v22CKOtefJe}`>eqdOLNys^1b1_!zunt0i-!CJy=J}r@g%Q{ZF1O z1Eioh{tLRj=oq<$^;VaSR3_b5$@KjDr|E!Aw5i|5g<;aT5roA5fD&af zh-elN2jZl;4_E;$$iN#5(yjxi2!#z0$LQx-d=;GSI9q#YW^D*%*(%CkkdYTx>UMAH zesfe6)m@jmZOkQToda%qCcoXx`0R zlNu7$w5^t%O8hed!A5Tk_Sfz+XDouuwlo9(QDT1g%CU#F3QJ~>aVGAUYslH^pfL!ku_{FVGVBn$6Oy&;W^bLp$T+W=+{_6jklBdlcI@+_=War|dz)}!oj5>;^%NT)h2x6j`-THX<;C9%Q zHh4558yWkhY3SByv+>(qm3^#6<|5dtR$T*#aXxvbgQ=S#N7(5SIkki|S5UUbYg56;HP zNlRUK(GFQ0Q-EE3_)NbJ_eGcp5A)yWuQNJ&ZVM?u$>;+b*9rHR`*WA}hchQ7VNi^2 z-M%SO#@d!r&tP?utk7ZSgPvxzn&|5jv;`-5ZOe|oZuwP)Wu6) zmESj?<)X$YM}Z3U>Y9{)PQUNRO6{JdNnZClJY0|Wf2E|=oOBfX50PD<4Rmz6AF1!8 z-cQjqsP!s7)jtyRg8yQfC-_H+=W?k!@3ZKFw7$2+zsn#6!JEs3Tlr^Idz92pr`aj# zYu-Me`_Yks&z@WJC=RWeQ!}T{(xVcfMMdmF$R>Db(N0%RUkkqb;l5JaoKdmGN+H)Z ztbL~M)@lJHOA_clECIo!4bYEq|DHCL<2T;~co{W~ffdg$s$|?@!>bT>G550Sh7ZNe ze~%?%Efi~>XP*|Bqrgh7E}I`k)=hj)&2so+7cLGuxV$K(>*F^324kHCVaF+I3lJ_- z3Roz#0@Aq+51sC2R#dwSGSQ**+9X>mZhJB@_346sYGjMA!jpl0V99fQ(6yscZE#*x8&+@ZY-&zSbmy9_{i-!i!@*gDiY13M zs|VzO40Us$A7{Areftl=am<7m8v{Gvp425YS$PMT)!lf9n0R#HeIB0d3HHf9KgPn~ z*9pvw9$Ck=)fTYx;SjlD()Uvc+lQT)Tt5Ne`nLgJj*20IXRq-(5BCs7g=D?scUp$i zqx7QN<)V1WA;6*O!X7dFiPt`Kqx%0~6*3&Cl*ZB8{Q}c5te!VSv=mnvFqV(1EX1ZF zghQj!pZGp%F-j&6U27%`t1nE39vz55q&wSOSp;4fLjU1~YP5ltvZ9!<=%?|~XIN>h z0fY5yraqXGr6uxhf+I*|((I-TwQ-pLp^N{^82Kc&0S78+4j}TRlnKhxk@XAEuG3o! zJXxtW_)GAR`(Si%ZB!`mAFlMjpJXNQM0~!>;XH~K1rw)V++fh_0|!c2I3Y9B(hgBc z_|%dZU4j1vxr(WR#JQ%-JF*7U%s^mo+BG5?c3{z8h8~3k25o<)VAqZD=cAFU)&F5| zkQfmRkWjTm4NmqyX$vR=2h1l((IAUwaF7@X*Vup~rsFX(3d3>ct(BFP%Zf89|BbCb z!LxMz#bTl`vs;Hsnz1|n(Gv5tM;`cj8FBebEj{9OBHF6;rtE)xC*dm$-WJ=Gf-}AC z5|B9a{iXs+v)0H7LqsZ`#P1Iy`nUMdl$4ym_ZMrLk}!OF{|m$ZGbP{CAokYIsC=H% zVT)_Pqzj&m6Lk<97cz9%+_?28NpO^U9C#ndYHO6H#`>@Mr$_HuuW{HiNHgDCrz-0M z^PSy0HLW@40ab`^ZI^SuRLjoRaW(_L!6KVzzw?_^&jMNDfs`OX{^9ThipmNV6oohYo&1 z@OLo9-)Q3ullAVCX#D62Dwd7>7M>6Fe}hBwUQk+scuQ-1i0I{ex{HeG#9l;QbV+Ux(0J3=G{o+WOh$u7%OFY7E6X|W{D zAPVBU=}w4GWEO;&#Q|Yc=B1hp`28v_v`SVaGV}sSDWd;ph2>kr;0=GRzqUmzhGJ(s z>)Z}T(t@VqCixp#0b$Z*e7dVr?zvxU|K{!SIAh#uJP2KS^ZyM5EFd_cS`1m^^qap@ z|5)^DS|57;nH4{7y>*Q#lJFx6tWQ%hlObGRADxm2(%OTAlhaeb-%Q;8H^9fnqGM#d z-CM4-jX@n%Xo4`d&*HM<()t1~kirL^3>ht6?oH1<`lMw#y+2s~E=agcu4Rg~Mn(U> zONj!-NL%Z;)2F6Ve0YDlf85A!GOz^ z{~8G)OuB51%>%GliP}iO?#GXHLi-j-NUG+6BW2TwYvDMPimM4yi8ycvKOm#*_$k*Bu@~? zG(>PVM%s6y7;tC_HIDAkNCb`!CiBwhg}ge-k}3Tt62Z>FVdoD6M#b7ZKXN z)6on$sS#PSYLDF3u_%O#LvANh2U=w2_o4Ng?Cfl|OIFYBb#`H_nnL7#QNXF%;lug90`_E!C+>oW@+XFBNO8XOrU@>0xUR4@n~jYa))%G58lFiTxMS)qJcbM1l7EF449^yH-kdPttU7kKpZu;^Z#5m_Ibn)?h?BrC?Ys)kgYX?;_wkj7xCP)z;de4BcObB3xR zm;LI|!F1l`lmLj)W9n$Oa!%udhs%*MDW|@!j^d(vOzOl=@{Wds8A$k!5Q=g_`QY_9 zg5fa&w{!bODIMq9gy@m+KrwU7!e2}(v6*>15rzHS|@!dFx-|cL_>#fS+Ns;zXkgElA=WCtM$J>KnnfzhQL6%~tX;~aN zKGD^cq|<59=;OZ%GI-z|(TU7|a!|cueWqa1F9p6R z@uDpQ#TpMVJCy*Iu_p$;*VMuZ(XPJgP2`NePjZIN;J^!`%c_blLdN^{1pBn>LA1Vw z;f(!v5~0`4R+qGo_Cj~Ikc(o9$-@q}Qw{sG<=S3g#Fk_j4f^@!xkjbl&QLnU z^pk9(c%W17KTqNQY-Nuiv&Opsp=hU%6l&1<)WfnH6t_^M@lT>lGZDRAgwuHbv{abG zy=Yrg$mXe)=bD##78?{B!3RgU~Z#^Ud zByQ0UOx(;%Zd^P3dOgM;V6nCVjV53;oa~_~mfv-`>7&oEcl9Ft+6zWNRq{`dyC8-EF13X4H*KOmiGH}UvS*@kz61BHgW?h^ z1@sZIDtZpYN1_8QX<{8zprm$_?@gr7)kAl@x0S&TRYj8K9Hd`84Pjq9oa3^{Yx6n$&UCrP zxWp|Pa$lN8FW{>8Qx|2SDxw0woK^dQBYJ14>v>^Dza&64UL)PyX|7ZOC?1Y_@iUtF zKBR%Sbn-3!@}sQ%qV073;bTwujSEiO6;84v$vyY`29-#A+ak_QCbxsZb$yH@Vc5NI zErIfIO{h^T6Alvvk!_Y#9{Vbzq3KuI$m!>H|S zV0#woyP)MT_7a7#wvf#Qmw#Chv#Xaw3iNdY*xv3VTcYn8m!`ij-&uf#9+aUbeIIA0 z8i8P4*OJ5U-qO6~4>lv$mhLXMx^LU&iBB+Omr&37J)<=^PCwDk8h*F*&MKtU8EbM| zP=+X&FY+54Bl;4CG)WX(uIDcK&8ZU#eEF8@)pbey`z}WuFh0OGAu|H$~Nd z0?R*k^*MICaYl>0rbLYGfVN5@%fWm{Qb`|jfWA)furSH+br)9?oKVB{G00MbkiqA& zUEb!rMji`Mq*NbEEqC75VS9=iHNWrx8&#zXIR}o0ZFVPi<_!ofc5lxg{=~IB9N+cZ zT%EXvX?Oj(oRNKtI5Aa}8i>Od@tEq|bS<>S)wRVypc@8eX~CFNQ%E>Dg>i;Z8-f7>DuBBXtf zxOr=5itm(hYo?leeDnS7MPIXGuK~?9Qx^PChaCYI^&8kbiMBjtx(y zqBIl7rx195yc>zD>zD(MT>P_CF7Bs&OVzH-5;`Yfj+iXIbRG3YPZX||^$BGNVM?Mw zKLD%-qp&ya8pU7kQ5mF73Ad$X;kR}WnoHTi*(PEz9z}Zx2MqVO`hUa{v`O7_SMP3i zzS#OUP3(yN%S)wa8RJ@FsCS}^`AG$u_^N21*gbe>wOV>`Fg$*(|NM6GfR@S++k3ET zQ|%TqO>nmM-Ysxb(@c}X&w@aRo~lu)bunD=t;KghZq<|C5)1;P?JR=?Ls}F>4o$9` z0uwBo6f~@?gqEwd`*~7OekFK*vFv7F%drdjUc9A6??N#)iFgjMn&k@3QZVf#$%Ka6 z0XWv0N%%0$!V_`2Sd{m;?LHznB<52}Zo_j<&m|Th2-q?6>Qi_YJf(Y|CeIO4zAg+9 zNUv*y)N=b^r|LA3`9t+J`b`9odL{$X@;Yc-Yf!ED`)OmdAdut%9&bmG!7^a5JQkCpd~-c z)>2KOR4#WwkDl=kzv1ZC`GQ9)>Euq_46aucRP5gB% z7b7S9(@m7=Fc)lHir)(2PQ<~ zw6HBxrjMy+r<2rbzjK?sWw$-+w{0QCc(^?e&D&M|36#@2YPrK^}b2G)T&U97# z&c>JnVgF_WC&dnQC84|IwFa-GmuBXzOT&E`W|_fOo~;b<5z_(ny{Zfz)3_Jc%zDKx zM~wgCKL^wUjFBuoJ*cC?x6fMSZ1HBR(b@*lqVMqXDF_N2H1hsF2N{;WRFuH}Plh{_ zdA46w8(s;r9@=KzNmOa#^g-R=j43V3jYEqV14e5u=tw*U?``vV_ZG(U}&aGK; z-|a)C&LV#%Zu0Qk8AB5158vIquA*UwjN7#E50ks|QMTasa|^+zrGTe2HfV)_n)h#3 z;F!8Q%iy5)AhaJr8Xng9w}Mt0W8MlzSZMcE()S@j>zzW$i_|Rpdqi9tS3i9*R`K>G z&ruVPNp;P3_fmaSrR?eLBva@LB0EM6yoM5FK1%8-Q;tkSuuw=3R1gX0v{_uWY;0|4 zxIX_1t#U(M4b?7{5a92h>rn5-jhD^(us?`vcpI|8y#5C3AvG$(_Q$P}i513?|2-h! zwa9}35!mChyD|aJP{Liw$#UUJqf2aWKXnTFr20%Bv?UT`4DMvROgVY@-%tHCwYfw> zlH%ZIIcdg)Dzy4;Q=R^;6Y~<}bJ=-$_)gPEMvmL;ep%dz<*)(u7Zzr0#8*WSb(&v{)CT@BTB{vi0N0*%+x$G`K|2g#;y&iupmtNr~UYK;6u0md8 zOPx>(U(`4c&-t5P5LTFU%+z=wPF71QJX8zF5ix=A@(s2Qt8oS5;VFslUXT%)DoGN< zOFbOOn-Vs}b~C?bgD5+$a%_b1(@o<^r@y-Va@_gRQ8UJ(o$fQ#dAb`->kT^NJqUSQ zTytpGw(z%KYl_X|A@cXnn7E@XK`_G4wg3jn+jc&cX07vN!L;}LW`k3(4y$MO@As25 zc(^vUUh%ax#=qbd0MB^JlCs(TL=eI3`TAmyHAeVd;vbF|dcqIzllT|BMB`-f&(ejc zhkHNG-MD3XySAIVRMQ~rP;t;gwUUWjO7opcrUoYS5s9D_oEwQT& zTHjG@|3OVI;ADUFwDW@X)V^FuPj5cbPIz{e2C}X$}s#a!(Iq$zc`U@$4 zO%6n}Pr$t)G3`?x3?blX(+U)doBuU7YVd!9b4j7U_0Pi2Km$jTcZA%|%fy5lbBkDK&%fs(K-a#JjkwvpNQ)A8 z7>Y&~LbP#XVVA4h1WQO&7NS6udXx7jjfy*k8->%p?$-)rq}t`7*Qwb))&#^n8QqJ} z8k82N+3h)2l%uWgzTW#F=udXQ0dGdg zE2KHi3|GZ)kNQ@E+vd7NbfOU~6jD-8cG0<)Kpknk+!4|$;!IHrlB(v&LDz`va3qw! zQjS!7L$OO+M&@=WxM!mElh0p}HH>47Xho^A?XBNS{p}hbf@Y!tT_pbd7{XdbLTt36`Ge8 zn*9#eQhEVMaU$*Gfx#kV^XjYO$&?ce6o`Z%!8TVW_aN)J(yHbuFbKnAG2qz|i?-(+ zIA`7QDs4q~_FGgldHb{;Wi?zsnJKSr2qurrW*CUXHqtNd=NpsUTW8SDGbCTxJy+^vZd9jpS zgMufHk$HdP*GvdZe<9F?^4RCkYL#xnfH&bgnxzwjM0$qIiUBGY7@r|1QIjr9AFR-< z3^LN(nssySZvXk!V+)!X7ro-9rpQTBloLBol6$ed&Cjp+b+O*wd^t@JKkU&2cW-MW zKccT^`7gUnPrp|&%n4J!k6|13YLPZK9dPo~lV51+y}6?NYGG7gwLu}a*Bb8rc)MhN znJ*J+T!Bj&tdIYlEVqj~v_DBz1^M>r5jGjqqvVFSXcUjlto#MADZRO`p$=&lZ?zY< z))NC;pZ?iEh2l3%A0jc@MGN z47l>{PpBl0v`X2xqF8|H2nrd(DUojJ_=_$(Dlz5as}j9zqS(so2_G%BduNXYLNUi%AJ-m)FkIIvdw2=X%(s5XH^GnwEKlj63_2x> zVDzt1y=1A8wX>LhNV9M|cn$TpR+vJC7||c@&zi}MV7PH5+qKO*;9QcVL2FP0t658= znT+S6T!yCg@ew~vQl;D)9(-kxl_mRzjQPehmNNqxP!oTHWghJ&b5svb9;`+H|IRng z2;l3YZ{lj|GrET!9Xbqg&O3e9f?uQqzFQ&6Zo*z9nZsF3q#x@O{(A6n&uT9uegMm} z45ViP;RE<}rVuuoo2+-Msq6;|`UOm{ji{RgUi?d2U0=sk;xx;E;f=SbQ(6g#FRisj z2h3}$ROMyza-ja7c3-Yx^(xUE(ti=zVdkyMa-ectwBS_fG_Kmz6)I36Gh_X=U_yO$ zW9IpIjbQ%r^l-kkl=V1^NXBCn2X^$r6;94ira>Tf+pV2`X3`LU(3~TSzCMEr_GniPs7fB9GuzW{Xg?GE48g=cU|!W z*N0oujQlVOASv`ZO@K}-+AEt(fgQ{oAA9xFB*%@O{Y)3USmfHZJWDt%yKRDJt;Xu) z-Z;bT1y}*cl3YFOEnZ1zq7iGF>ID1SLbv+uFnDGtb>$W##g!`{up>Si%NdQcstu=6 z@GC>okGya!Vuwy>AUS;ZH0`&EG#v!dw|%jwD{QxzYOz_ObVrq} z^ZYSsl$|oz&(u}mG1X@Qu&nrrPD7(p69Y}NKIP>Q=Ma$I{iA12xTqUpEoq~ETJUg* zMwFF(1WvypZQ+|%FNVxaej$&^6dV*p>aG+y0pLbzTZ(tSZ@m`^vY2lPSuor=9*?!o zleOa~eE0+>f;wI(Np*LHB1CUuFNdE+aj4i;0!rn|^e54}LRLvE)vE^13c|ZYz95f& z;KtzMUzw-+*sg4}r%$OzfZ;!fb7kSBJwx8CZk1P8*Nv{7=p!yNqe1kwkq)l zm*JY77Htb{>DZjuX_@_90_gP8mOE%RSq}6IV!*LuyJJ?^rXOhZDik)(23Vlqcs9Yl zlF0qz-*dJECjCldJm)@_wU~V0RQooxQ!E(r0Bk+T6xS$SZeU)Z^X-E{Zx7mo`gluX`QR zB`m|x;nVC(H>5=RW22-P=!VJWFfm!9BM-s6@FvGT!7zW6%KA@>lWFIW&)o^9ki0RK zRIk^wA~BSJrI1$d`*nQ4W85A%mv`$1IjKAIq+T`v&rlg7biZEfkCIJ>1``)#p-)MV zd>0x=FB8O1(cLN}7T{UTxfz-74|jOnet~Xe^iZlzQOO&ViHDg_Jm^Qi*c5t}9v%t> zi^MSoR9!S+!z-+!eBJ`HCr@spRp1GIPkA@)npoy7xyxi>++D(})fOf7Gs;-cGt%{E zbiA2AUBm3tGJmV9*JcugEkXQ+a0)fDvH|iGMo1tgdRZ-eaEW`85`}!L-H>wMSU8aV z3)jw%CRy|$;A!0a`RNLT?i=#dIN$7OO!evsJWr8wCncJ032Gx?Qt9?`00cPY5Zmo6 zV-(h)-h5SHiRQgz*kd@zyZLHhTTzb{VKQXH-YNNWVbuw1k52-zzkV0&tX`WYkTi8t zlt?r5sDpsV*NaWrHIfRJT0&~brD{}E)H-xL7MN;D;UwOGQnw3k zs(n=JgkRk48PkkFT&}t9MFQo9T5uP`ev|#$34d8S3_4+rsR3iINbXLfULr@6ni-!4 z2VzTxaaI0awpmgWI~$v?GzOWe33bjsD!+S%!aJWa5Gs_m5q<0(Ha=N6q(KB)%%1~? zH2vce4&>GKoLTX<-=7a{hCX~9d;Yxc0$u`D`ThG^LM`OJ$A;bepIkY<_STAOw|)Y0 zyPbS?P)FEOBAKu>#w5X7piSQbw~~Jjse^es0$b8Ek*`k$;l6$*&PfKA`_vvD&$HD^*gO`$wJX}_)Ym>5v;acwSK zwYmOH(ez#-K?xk38Doz9w$QRguMBfDx4S+q)ds^5Xd4$hDkLOjCIm(T~x9G(mIZB_iVlZ!(^i7QWVn{P*O zQQH&MQ3sUIly1OHQXcx+Q}UgUIsX)o0mm#9yy`Q59GL#9fEMI&JU`(W6R zF9ax4D42hQF=*jyWx{1DJqyuLn$ZU*R10F{0Z4YXcvNgN{e6AGfyiTV_~Pq%-Vev; z&7Wq2uH*(Mk*Z*lC_*5KToeEt1Q|46W%NSgB;}n!?$A|W6l41p?_W;$n;cM(CyM3<>Cv3J|A!76QTPUa5sZlcho&`cN^sWKS z$L$K6bZN>5FgQ`p{Ch1yT**(_@j~~2iB|iX!Kf#-T0iQG*|F-=}Sj)8Q2~_nnJ1zgET%}11Dc9$n_aUskdz+1o z%{p0=kydpUzmol^H&et?UAs?WB&u!T%>wpHxggMG^k0Jzo7@mv9&@y0jsr--vBLZ8 zdbpB&`AicJr4yAI%0jl`^OByOu`QF~L^HTW>pt%td{%*a>0e@V8bvs5nR8vHQo)ed zQBC=K7fEz30CK8t$3ULTMY@X|Z5BBrD}qZOEY_Ho!HnnQj~)YmpBK4k3FzK^`B!b` zT+dqWoT+r)ex=V{54k=a2@Pw$>W17E*eG^N_3qnZQhl0Pt8<3fTQBH zG-rh>0#$Id%wwi1uj>jpY$+bUT8jAe4aLVlpK`kCouKEVWY~oSz?s!jt?I3+pMr1L zZ1LVJI8m#k=*aTXK<}GkhF6nB z3CT5UoG=V72eyncj1zNV7bn^_Bgx3xo+*9)PR#l|1YA0i+CLIkeNsG3dq#_J_&~plW=)FV2(}Lx`Em-Ig5Y25i#&_Ww$gWCl^gw`Bmqiqsc|Me{h?@CsyXtR1}9 zg3WgHdZhc|!3T(} zZ;VSNih3O?DLc+OZUH&~03L_QLT_>OU6?4f7>?79I4liKFvfd4{N;+QKguIAT5ai^zWGgkqcamLZdJetY_{_mdae;KCDF! zJq>h`DZ+r<_KihX5&qI-AsEN*bo&D5s>Jf!(j&_B7CD)1LQhX4O2T_ppk2-5kpl;TEH9*|_)=pz92uf0yS_ zkzb@|hQhcWGgb3MtlMOJcaHPs$i~!Q08#7S$@U<2LfvbQKJ$|4=wScSq$YY>i}(aL zMmM4wUVFp((V$uuXMP_hgugy_)z!oHXKaXnR0cjKh8^Dl?$Us54C6d=aoS>y=LFWK zUaO?hdX~G;T&MRw6p2hj+ZpBdI`8ewl2m7}bCjTqot{qVkNYgy90Gb(WUo~5;KZ&r z4~>gcP88Ms%;~ilMa_)LV@*N<|G5KS%P7unq9U>#LJlf6k?NLHmhI;HMRY3$HZ`0V z@-FK%YIC_n$GoG__MjVvjD{|q%xn5uh9NZ+oDL5T&cH_Ck5D=_`8tV^j z?^WQX8ZcvV`1jDuL*NEc0T~%%Bc1TGf+@i|c2q*VQ0AeyXPpM*9gRRiHn}ZNDqvMGnGBxM@A>}P4Y>ec4!&UG za3vq31o<5M!q76SB;M_p;&K~tL+t!F#<>ph4&hLNEjza?_tbV%0 z$Kilv2O(7-UCPnAy-?>NDXcI>Bl$w9)4CG7UZNOip6F5-3!|DL->BWl@guo-I*3u3 zKi&QG`bI@z%2n$G`6gN!=@I%62KW(UIKup0f3PaeG{e_mZ4YWpyj^r;FFwux?4?%g zvbrg*D28isyrD;>dYKc!)SZuBE*LS<5wf^=J={)teT;@c7y!L1Om$>noy~;uzTQfz z4ZS&JW9pUhYa&vnBRL(@R8b>t%pg;loe8ULW|s}G%(SmAs8u*M)IG?@a@RBAXvU~t zPJ#pBAc{!Hby-?XRK$3ei=cJmU_8E>6=fgHav5dECAL=Jh^!#+W-w5H-jM{KyS8a5 z(Sgj<46GM3n}q68ySqB^L__+Fc8GKn(-rSy*x|fzVGcUb&!OzdP*{^TH@PP{vF5Ml zG=B?1$-A5Xea<*YlE1~twJbn!j&iF|XZ|!zToB^GM-AtRoGBErr2m&gpJ>?sWLaI) z5L=~wl3(!|Bpz_zH7fcRt;Tl3f>1H$;Qx{(6AsWNrV@E8=q$+Xusod{_=y+cvbly6 z#{6eHqD?xt-eU6R>v&ab~QeDWmly$u<2wk&HsDt=r!I{7pUIoQxJJTdMM3-@MJn` ze_B#2?6B>3!M`fM{h%BVpC~1E>xOkqY$-95C+qK~)4koE%+q{=ZqKzHeC+rk`DxPK zLVLZ6+jL(%Ft->Am5ngHu~c>3YG9)%siC%P*SaRFA^Uv)M6JHb94?s=P9Mn}VAKb8 zogJFM`Y9{i$PctG=9*=F-y1vyw#P{t#}O2Tb{{oT1TM#BH-tOx9twXvRe}>Bz~&)f z<)s7#K!aV$*Ji5$fCz~DM;~5C5I#vmKoDGilMq!S6EH|gS#T{HOrGXaaJb%HFO<(H zfdug;wXgi(3~EJ-B}nyvG@gm4VdR+2FnYH%7OLd4o1}1#470JdUL$0z?)vVR((2NCKjK zKI)A`5MsM(nX_$eKfBy8Ok(K8_N%9_i{G>4XJ=LR$WoujZs(1*QN8XX=$-x_W)mQa$Xk0rG|!aTLV~&IhhbPd5~V3 z=UV!}xA2L+9xekSjVt8lL5>5^#l?MvTm zNo&I-QTQ{P$mi+%IU@!{L!>R;HXpAyC8N4A$N*-JD}Axi&TdTzcL3YUl&c&fB&bB` zfUKBrdnEbF!Ch}!CSxR3$9qmvZy#C)D3)&84}a+=KfEMKrHkor*UQEOajIaEtFM$b9cIzJ79^vt`1o(H5jl z#pE5tEOdpdpUMSP80K;h0z1*}d33&&U+Py5d}aF`U^JX3cdoX(B!IXAcRZPDUI2hY=1O;tMuJ+9%niT*z6oK-;*4A5CF`Gvs0Zhl41@g z0JOB0f(HtNb|TYghT#rH3v2sG@#YxpW&Gp`9aF5NS*E3|i-SSnV63TgqC#+)Q^XckiWNGsY7Vvp* zY@=^#7YJtD%Jw3|vD1CT9gjEKo43R%*TBZ(Lu^>$_gw_#2a9R{;r0#5-&>K)K|t_v ziwQDN9eWefz2Tjba!7908jgi*2dl4Ga4rQ1#$kIY)>47*(LzbQV#uZ1ga}I}2Y_7+ z9L35BVpn?Xa5r#MWGwyeo1U@i_~H=)-<3kwh*# zopx%%#dga)zp3^z_90W_Lz2>(m_tv+fG?zFQqU$IbvL|y0&^3eVuQJT$Gmp|dz*xjTm8yIrg!cWMSh{iFYm6@9 z=mMk@qnfrmYc;jY-&_nGF_GlygG~I2K&(GE;0eQRwFuw;0=a~WgFs|t`lHtp1z2Mc zW|-x?VUl5Y-q_j5yDa*Va!{qAc5O zy`6)6BnV?f$5}Su4&^DOcgx=We4@lSg+x2pA-gBikH_I@G$J1KoucKB?o>q0H5_#N zX#D#sht9i2L&4{xqNKAQrt!@ha>{+o;?xu{6j+ABb{ATQ>0G29MV@NQS2lxt+#w%Y zh5E|=6Ajn@2o!QBn!#gcOQ1Gu#R5xMs%QXhstB~tP$&nrH7Y1Ro#UG{82Z+(r?kV* z!$Gb(J|i3u>Dioe6kBg;5;FdDiq&Ew!A^;_#IX^ojU%UTGmv}{gAIv_i#8{9V@DU_ z5z^T#FfGg%8vYqjIlS#2Q9(F+o<1C%kaRN2L)7S2^PY!5I#9+;YADdlt<3J`!HHxU zg6ZqPr;x$+mw}7-XzO=|!gobVj&pTQ19Pk#=KE+4>Js#}a`<90NEo-!__AE@KR6~Y z%QU|(u7hRt0THU`Wl>a6-)MV8Q2t_oV25IfPnUocncv+w7QS`kV}p+ZmN1HE5*B%U zTH5m5VEB#Yn$comvv>9XbakeIP_=&_w>R>aVN!R=GGZhxN)d@ki!Dopu};d8oh)M? zG>Syj5QdQ4DSP$?gX|31m!UC)V#e49V|k9}|2*Bf=hb<0Ud*|!-*T?={eFHHxRTwn zJe?(8$oOX+_!wl6ryyXKfrVkKElH{6KpDzUBh1F$n@>-~&Z z-ff2sIQc^*z^7#Mxj@G&;X~vs_(M9^S2Lv8ihey}O+@v}OqlNm+~JIdo?MWxxTR zZ)E{5eH=s)m}84PN6!T+*D;PUs16v@)`ZxCH^cR+n5cMDrTN78jDM_6fDnUgA?b+o zGfrrv{!>oOPb+W9qz9Bl9p&9Ih@SGIp3Jhf5PskbQ!w`x3~=%WL|mih5P20w7d*|0 zOU7mWS(w`ED=>3XgC%-wbq8N*sxA@Hm-Qk0^FMG|cq0c`88lK{mvG$Idow2{ays`` z{hAVXi5O*{L9DCkvXC)#2hXV+xTbGH1t;K4Db)>b2y(8#o zRtgisNriE?#xGS>R{IQJl$tJX!5i3}93J*?g6DfNVES`g$b%ZU3|CbXZN}TecJORW zxGN%biyC**(#;%{?ZG>NlFCir$GZkl71KZkDf*gcQQ1R87S_6qmK1fGDz}ZsdiovF zVr~<*X>Q01Q@#l_?c_Nl{rr3U@Z)Bo7XdfX;H(UCqm2hx`y?3;YCPR5qO>3_h8M+9oWEVd@-Z6zB!4di;56Z@b0iFzw0y&|+!d6WSh%hh~9 zI)}oK@zks9ex^%Ha)8DD5}ih`_>YGk=uB4hoaW*B;P9E!Ft>@J(MGbOu1>y?8{L>e zj++>{In;AQ57AU6y^l@(>81joWEBe71Q|=|v>*t<)y$unm9Btvc)qrd-5ZwcYFq9& z*>Up5)BkM5<@xSB6%P0oY;WwN>p}%^GX+MNPM=<39W{LL@-&gJk1J%P>NW&-vgfmr zjA#ui_w4K?|Graz1YSzjA+=Im;I`wk!%wr{+h#SIMeTs+)k5bJN?t8zOE-k~@K>)p z^oE{K``K}7zOk8Xg8*X4z`&6b2SQPRk}CoAp{+U#%ffaz=dWs7&XkVA*vgHl;;rF( ztb$#S#U2&LXvjcrbD4w4cVQ7WHY*IL$UTxqY2mjTUfW}lQje#88{+^vvX~e6A_FmS z;fkQx)Q?Gc`>z$cNyrdocz4->;wUx`bL*NdkMiQsC!Ce;UC3i9aMlA>A z?1Xhao*;Q8;^~_Wr0WYm)8Z&n1&m@hi!vpI2HA%;qG(Y8HpBM3uC1!>6s{9`U3Q-T zrDBW1cXFiviN$mFu}Dj4H{sJW={}vjj%nF!GRVEHoh`zeynUkB9dZ983cy~L@7A)G z1E!MlR@iH|B6{wbrpaHpJBg<+btOjwtq}Q|;oo|iw5ft4=JN=ua+RNn- zrZQvH(^BU#&W?aLk;zo@7nq9}8ab68#SN`^>gqn&pm4E(|C zgQ!$l zOaN*k>?Jow7$e!75I%I(x*mgO{?bE#8I`9gNXkbY`um<^ib0mN^ovj>TNXxA-@yI$ zgtLqq0O8X$LO1@17`Tb$CfqD$+2GrF$Xch?^Tpd~aAdU1j6_b=k-dK9*HF=GCvr`- zlard}Rp$6Wcz{WEqr{5aB`UA@$6;dqJE*((+rO89oc>?CAqXT3kHOZLKiiph!@QW3 zSDzdzdN_Y7t>X^r=YqBB%gJvUPo}Nnrx^Aml(CP`$Q|*Q4WHh*92t+$oPh=SQl6}; z80fC2Z%Ips=*xzfhC6MJ(SuQ$ngxvWrk^q4hOfRnzB;9K`vIq}ipG)z$3a-$vi0KE z@h9VT$0b1G2u&~otYKDuddJnlQ#%vg2s>3jXfb z2hgWZ{CV0yC;0zh{0EZy2*l6Q#qe9<`Gx7z?DE>oTq z$_E&lu7~Kg@rZGO?dvSp6jvL7I_LPhNc8>qekZqn7x$0Eg~czNE}L$+^Dm~@DJQ3n z%4zzsVzi9J8)+q~o^So8lT?!;e-${J?DxZOYScD0E6NX|2Hb*|aiS>t_ifAt_&bS7{$4a;n+)0zL&;|Mq#NGz~wwH>*$qzYj3d`Fkm*K4;w>AuIN zVMKJhVOfyMsQw<@cOQ}qvdp&&$)kFE|11MB9qyEi?7mAuOFAcqaS|f@xPaQ??Nn^JEdfmY_;B-wzI;+Q`w%vhk2>=a0B#K zJM}R9RA3~yr+vrSO5h!XK%@It>VlN9f8O8oCWQNVv&+Hy$s>-8>rp=8jhVWYmfZ;DxhhW=ta0`xq)_Ir6&j`DU zU-_kyOo%)Cnk?czCsbl?kg&5_B~wuK_>;@SG4Q{vy}cYAlg+~iX956O?FJFhdafwq zli=&wkna3FLk z2UN58gaOl}Vrp?0mX;f5^1%>*I4E-l=)2HzNNY3_E|}(oWLnwTP210{^xmcX$>5$9 zW)}JU4*phVy{&=6`mllYnlRvZ)=*4I;9mU=oXaZ@ z#-*j9x&Hl(`$0qNrP&^nO(f@H;mjQ~&&T?2-m`Yu6(0)3B zIQNh*wo)X3$)N9|>p>xEtJmnV8 zqq=d#!OGmN3yxa(Qb+)0uR>|4V82~F0uov^O~jp7-rZW>r2`<}ZpU^=PBRpu9MdGd zs}!$OEeQA3f??cug=xKYD!gY61}Xuu{303vdh?c(_b-6H3!D7F8Rwq&t<%?^aBWl2 zy9_k>A}WWi{XZG(C>czwf6{Czi-596&WUK6o7!3#v9;A>cZa?k{A+V{j$plfqw`=) z_x=ef4QecPU#I7;Uc+W)SWy!$xZB6l_mZzN$Q09VUK*jfvEtF4p)fF=DKIkF~0 zTC+&G>o)gWtTzq+sX;(?Y2!atxuLObX7)9|r2o!K^-u3L9Ma9B7h*o}ST7`@BpW_eu z4B6z3J4yvR$f6f*S|F-`4r_*Vg3tI|^K6_$*nylRnOl1^F4(XOI>wdBBl56M#W5OB z2CV|}z8V5T`;P$SBM7Fdikvs4)c!e6rw1Dn&67kf!UHtlu08yk9KD+HJ=G^CmmC@; zc!ckasFolYn83lBvS4XUDfBNX<_pt+z;bt~_NqeFj{TqJTx?gJTvYc*e@{e6^x}yl z(SQ}c^SJE&+86X-27VccJKe)FD$Uf_w#>PHGm*=FRRZu&nq8;GT}?qJ0u_b;g8d|r zCK(R_Cbw@i_sLwTo+g!jo5(wsMNR$dQ{G}?qoeNa+f5x^LGzx=0QyKlpp_S zv1O3ayD_gOWHU}=JUL|y624hx@SL5MH*AvSg255ki`ufRAouQx-UbzwAi&p~hYa4B zqR2-EwRC5ycPV+#_7%Qrr6LUXmA47K^z^%#w@Erfh<@O-c=cMqn#EO*iH1@jclKt) zYG3&9r1eJyB2_lyNql?!#2sLeN=oSM_DTx z2jfnv``g*uGm13lt6gYuR%PG^_DrvmHzAKK_N@<;!#SlBQg7 zoV0dGL}o|%DINKI>5G(iEl0N6FPDE*F1GoBi;W`zW~fQP0DaAF-cX8)`n70{zCR4F zxIfQT&y{afnIPqAtW~=AP|mU!P#;T%anGB9#OoC5Z~gp`u{}K;j&?RoYB0}^b+?WE z`Rw<~3X6pdg2L2%A6)cZKL8EmQ{y66=s+JW;P?{wxsP*+8};lSxca{M#o&PSEDP|{ Nyrp|HU+sR_{{Rm=CR+di literal 0 HcmV?d00001 diff --git a/lib/common/Style.dart b/lib/common/Style.dart index e3f080ef..31d9bb8d 100644 --- a/lib/common/Style.dart +++ b/lib/common/Style.dart @@ -20,4 +20,10 @@ class AppText{ color: Color(AppColor.subTextColor), fontSize: middleSize, ); -} \ No newline at end of file +} +class WidgetDemoColor { + static const int fontColor = 0xFF607173; + static const int iconColor = 0xFF607173; + static const int borderColor = 0xFFEFEFEF; + +} diff --git a/lib/common/high_light_code.dart b/lib/common/high_light_code.dart new file mode 100644 index 00000000..1ac0fdcd --- /dev/null +++ b/lib/common/high_light_code.dart @@ -0,0 +1,359 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:string_scanner/string_scanner.dart'; + +/// final SyntaxHighlighterStyle style = SyntaxHighlighterStyle.lightThemeStyle(); +/// DartSyntaxHighlighter(style).format(source) + +class SyntaxHighlighterStyle { + SyntaxHighlighterStyle({ + this.baseStyle, + this.numberStyle, + this.commentStyle, + this.keywordStyle, + this.stringStyle, + this.punctuationStyle, + this.classStyle, + this.constantStyle + }); + + static SyntaxHighlighterStyle lightThemeStyle() { + return SyntaxHighlighterStyle( + baseStyle: const TextStyle(color: Color(0xFF000000)), + numberStyle: const TextStyle(color: Color(0xFF1565C0)), + commentStyle: const TextStyle(color: Color(0xFF9E9E9E)), + keywordStyle: const TextStyle(color: Color(0xFF9C27B0)), + stringStyle: const TextStyle(color: Color(0xFF43A047)), + punctuationStyle: const TextStyle(color: Color(0xFF000000)), + classStyle: const TextStyle(color: Color(0xFF512DA8)), + constantStyle: const TextStyle(color: Color(0xFF795548)) + ); + } + + static SyntaxHighlighterStyle darkThemeStyle() { + return SyntaxHighlighterStyle( + baseStyle: const TextStyle(color: Color(0xFFFFFFFF)), + numberStyle: const TextStyle(color: Color(0xFF1565C0)), + commentStyle: const TextStyle(color: Color(0xFF9E9E9E)), + keywordStyle: const TextStyle(color: Color(0xFF80CBC4)), + stringStyle: const TextStyle(color: Color(0xFF009688)), + punctuationStyle: const TextStyle(color: Color(0xFFFFFFFF)), + classStyle: const TextStyle(color: Color(0xFF009688)), + constantStyle: const TextStyle(color: Color(0xFF795548)) + ); + } + + final TextStyle baseStyle; + final TextStyle numberStyle; + final TextStyle commentStyle; + final TextStyle keywordStyle; + final TextStyle stringStyle; + final TextStyle punctuationStyle; + final TextStyle classStyle; + final TextStyle constantStyle; +} + +abstract class Highlighter { // ignore: one_member_abstracts + TextSpan format(String src); +} + +class DartSyntaxHighlighter extends Highlighter { + DartSyntaxHighlighter([this._style]) { + _spans = <_HighlightSpan>[]; + _style ??= SyntaxHighlighterStyle.darkThemeStyle(); + } + + SyntaxHighlighterStyle _style; + + static const List _keywords = [ + 'abstract', 'as', 'assert', 'async', 'await', 'break', 'case', 'catch', + 'class', 'const', 'continue', 'default', 'deferred', 'do', 'dynamic', 'else', + 'enum', 'export', 'external', 'extends', 'factory', 'false', 'final', + 'finally', 'for', 'get', 'if', 'implements', 'import', 'in', 'is', 'library', + 'new', 'null', 'operator', 'part', 'rethrow', 'return', 'set', 'static', + 'super', 'switch', 'sync', 'this', 'throw', 'true', 'try', 'typedef', 'var', + 'void', 'while', 'with', 'yield' + ]; + + static const List _builtInTypes = [ + 'int', 'double', 'num', 'bool' + ]; + + String _src; + StringScanner _scanner; + + List<_HighlightSpan> _spans; + + @override + TextSpan format(String src) { + _src = src; + _scanner = StringScanner(_src); + + if (_generateSpans()) { + // Successfully parsed the code + final List formattedText = []; + int currentPosition = 0; + + for (_HighlightSpan span in _spans) { + if (currentPosition != span.start) + formattedText.add(TextSpan(text: _src.substring(currentPosition, span.start))); + + formattedText.add(TextSpan(style: span.textStyle(_style), text: span.textForSpan(_src))); + + currentPosition = span.end; + } + + if (currentPosition != _src.length) + formattedText.add(TextSpan(text: _src.substring(currentPosition, _src.length))); + + return TextSpan(style: _style.baseStyle, children: formattedText); + } else { + // Parsing failed, return with only basic formatting + return TextSpan(style: _style.baseStyle, text: src); + } + } + + bool _generateSpans() { + int lastLoopPosition = _scanner.position; + + while (!_scanner.isDone) { + // Skip White space + _scanner.scan(RegExp(r'\s+')); + + // Block comments + if (_scanner.scan(RegExp(r'/\*(.|\n)*\*/'))) { + _spans.add(_HighlightSpan( + _HighlightType.comment, + _scanner.lastMatch.start, + _scanner.lastMatch.end + )); + continue; + } + + // Line comments + if (_scanner.scan('//')) { + final int startComment = _scanner.lastMatch.start; + + bool eof = false; + int endComment; + if (_scanner.scan(RegExp(r'.*\n'))) { + endComment = _scanner.lastMatch.end - 1; + } else { + eof = true; + endComment = _src.length; + } + + _spans.add(_HighlightSpan( + _HighlightType.comment, + startComment, + endComment + )); + + if (eof) + break; + + continue; + } + + // Raw r"String" + if (_scanner.scan(RegExp(r'r".*"'))) { + _spans.add(_HighlightSpan( + _HighlightType.string, + _scanner.lastMatch.start, + _scanner.lastMatch.end + )); + continue; + } + + // Raw r'String' + if (_scanner.scan(RegExp(r"r'.*'"))) { + _spans.add(_HighlightSpan( + _HighlightType.string, + _scanner.lastMatch.start, + _scanner.lastMatch.end + )); + continue; + } + + // Multiline """String""" + if (_scanner.scan(RegExp(r'"""(?:[^"\\]|\\(.|\n))*"""'))) { + _spans.add(_HighlightSpan( + _HighlightType.string, + _scanner.lastMatch.start, + _scanner.lastMatch.end + )); + continue; + } + + // Multiline '''String''' + if (_scanner.scan(RegExp(r"'''(?:[^'\\]|\\(.|\n))*'''"))) { + _spans.add(_HighlightSpan( + _HighlightType.string, + _scanner.lastMatch.start, + _scanner.lastMatch.end + )); + continue; + } + + // "String" + if (_scanner.scan(RegExp(r'"(?:[^"\\]|\\.)*"'))) { + _spans.add(_HighlightSpan( + _HighlightType.string, + _scanner.lastMatch.start, + _scanner.lastMatch.end + )); + continue; + } + + // 'String' + if (_scanner.scan(RegExp(r"'(?:[^'\\]|\\.)*'"))) { + _spans.add(_HighlightSpan( + _HighlightType.string, + _scanner.lastMatch.start, + _scanner.lastMatch.end + )); + continue; + } + + // Double + if (_scanner.scan(RegExp(r'\d+\.\d+'))) { + _spans.add(_HighlightSpan( + _HighlightType.number, + _scanner.lastMatch.start, + _scanner.lastMatch.end + )); + continue; + } + + // Integer + if (_scanner.scan(RegExp(r'\d+'))) { + _spans.add(_HighlightSpan( + _HighlightType.number, + _scanner.lastMatch.start, + _scanner.lastMatch.end) + ); + continue; + } + + // Punctuation + if (_scanner.scan(RegExp(r'[\[\]{}().!=<>&\|\?\+\-\*/%\^~;:,]'))) { + _spans.add(_HighlightSpan( + _HighlightType.punctuation, + _scanner.lastMatch.start, + _scanner.lastMatch.end + )); + continue; + } + + // Meta data + if (_scanner.scan(RegExp(r'@\w+'))) { + _spans.add(_HighlightSpan( + _HighlightType.keyword, + _scanner.lastMatch.start, + _scanner.lastMatch.end + )); + continue; + } + + // Words + if (_scanner.scan(RegExp(r'\w+'))) { + _HighlightType type; + + String word = _scanner.lastMatch[0]; + if (word.startsWith('_')) + word = word.substring(1); + + if (_keywords.contains(word)) + type = _HighlightType.keyword; + else if (_builtInTypes.contains(word)) + type = _HighlightType.keyword; + else if (_firstLetterIsUpperCase(word)) + type = _HighlightType.klass; + else if (word.length >= 2 && word.startsWith('k') && _firstLetterIsUpperCase(word.substring(1))) + type = _HighlightType.constant; + + if (type != null) { + _spans.add(_HighlightSpan( + type, + _scanner.lastMatch.start, + _scanner.lastMatch.end + )); + } + } + + // Check if this loop did anything + if (lastLoopPosition == _scanner.position) { + // Failed to parse this file, abort gracefully + return false; + } + lastLoopPosition = _scanner.position; + } + + _simplify(); + return true; + } + + void _simplify() { + for (int i = _spans.length - 2; i >= 0; i -= 1) { + if (_spans[i].type == _spans[i + 1].type && _spans[i].end == _spans[i + 1].start) { + _spans[i] = _HighlightSpan( + _spans[i].type, + _spans[i].start, + _spans[i + 1].end + ); + _spans.removeAt(i + 1); + } + } + } + + bool _firstLetterIsUpperCase(String str) { + if (str.isNotEmpty) { + final String first = str.substring(0, 1); + return first == first.toUpperCase(); + } + return false; + } +} + +enum _HighlightType { + number, + comment, + keyword, + string, + punctuation, + klass, + constant +} + +class _HighlightSpan { + _HighlightSpan(this.type, this.start, this.end); + final _HighlightType type; + final int start; + final int end; + + String textForSpan(String src) { + return src.substring(start, end); + } + + TextStyle textStyle(SyntaxHighlighterStyle style) { + if (type == _HighlightType.number) + return style.numberStyle; + else if (type == _HighlightType.comment) + return style.commentStyle; + else if (type == _HighlightType.keyword) + return style.keywordStyle; + else if (type == _HighlightType.string) + return style.stringStyle; + else if (type == _HighlightType.punctuation) + return style.punctuationStyle; + else if (type == _HighlightType.klass) + return style.classStyle; + else if (type == _HighlightType.constant) + return style.constantStyle; + else + return style.baseStyle; + } +} diff --git a/lib/common/iconNames.dart b/lib/common/iconNames.dart new file mode 100644 index 00000000..a9d0f02a --- /dev/null +++ b/lib/common/iconNames.dart @@ -0,0 +1,15 @@ +/** + * Created with Android Studio. + * User: 一晟 + * Date: 2018/11/23 + * Time: 上午2:14 + * email: zhu.yan@alibaba-inc.com + * tartget: FlatButton 的示例 + */ +import 'package:fluro/fluro.dart'; +import 'package:flutter/material.dart'; + + +class IconNames { + static List Names = [Icons.ac_unit,Icons.access_alarm,Icons.access_alarms,Icons.access_time,Icons.accessibility,Icons.accessibility_new,Icons.accessible,Icons.accessible_forward,Icons.account_balance,Icons.account_balance_wallet,Icons.account_box,Icons.account_circle,Icons.adb,Icons.add,Icons.add_a_photo,Icons.add_alarm,Icons.add_alert,Icons.add_box,Icons.add_call,Icons.add_circle,Icons.add_circle_outline,Icons.add_comment,Icons.add_location,Icons.add_photo_alternate,Icons.add_shopping_cart,Icons.add_to_home_screen,Icons.add_to_photos,Icons.add_to_queue,Icons.adjust,Icons.airline_seat_flat,Icons.airline_seat_flat_angled,Icons.airline_seat_individual_suite,Icons.airline_seat_legroom_extra,Icons.airline_seat_legroom_normal,Icons.airline_seat_legroom_reduced,Icons.airline_seat_recline_extra,Icons.airline_seat_recline_normal,Icons.airplanemode_active,Icons.airplanemode_inactive,Icons.airplay,Icons.airport_shuttle,Icons.alarm,Icons.alarm_add,Icons.alarm_off,Icons.alarm_on,Icons.album,Icons.all_inclusive,Icons.all_out,Icons.alternate_email,Icons.android,Icons.announcement,Icons.apps,Icons.archive,Icons.arrow_back,Icons.arrow_back_ios,Icons.arrow_downward,Icons.arrow_drop_down,Icons.arrow_drop_down_circle,Icons.arrow_drop_up,Icons.arrow_forward,Icons.arrow_forward_ios,Icons.arrow_left,Icons.arrow_right,Icons.arrow_upward,Icons.art_track,Icons.aspect_ratio,Icons.assessment,Icons.assignment,Icons.assignment_ind,Icons.assignment_late,Icons.assignment_return,Icons.assignment_returned,Icons.assignment_turned_in,Icons.assistant,Icons.assistant_photo,Icons.atm,Icons.attach_file,Icons.attach_money,Icons.attachment,Icons.audiotrack,Icons.autorenew,Icons.av_timer,Icons.backspace,Icons.backup,Icons.battery_alert,Icons.battery_charging_full,Icons.battery_full,Icons.battery_std,Icons.battery_unknown,Icons.beach_access,Icons.beenhere,Icons.block,Icons.bluetooth,Icons.bluetooth_audio,Icons.bluetooth_connected,Icons.bluetooth_disabled,Icons.bluetooth_searching,Icons.blur_circular,Icons.blur_linear,Icons.blur_off,Icons.blur_on,Icons.book,Icons.bookmark,Icons.bookmark_border,Icons.border_all,Icons.border_bottom,Icons.border_clear,Icons.border_color,Icons.border_horizontal,Icons.border_inner,Icons.border_left,Icons.border_outer,Icons.border_right,Icons.border_style,Icons.border_top,Icons.border_vertical,Icons.branding_watermark,Icons.brightness_1,Icons.brightness_2,Icons.brightness_3,Icons.brightness_4,Icons.brightness_5,Icons.brightness_6,Icons.brightness_7,Icons.brightness_auto,Icons.brightness_high,Icons.brightness_low,Icons.brightness_medium,Icons.broken_image,Icons.brush,Icons.bubble_chart,Icons.bug_report,Icons.build,Icons.burst_mode,Icons.business,Icons.business_center,Icons.cached,Icons.cake,Icons.calendar_today,Icons.calendar_view_day,Icons.call,Icons.call_end,Icons.call_made,Icons.call_merge,Icons.call_missed,Icons.call_missed_outgoing,Icons.call_received,Icons.call_split,Icons.call_to_action,Icons.camera,Icons.camera_alt,Icons.camera_enhance,Icons.camera_front,Icons.camera_rear,Icons.camera_roll,Icons.cancel,Icons.card_giftcard,Icons.card_membership,Icons.card_travel,Icons.casino,Icons.cast,Icons.cast_connected,Icons.category,Icons.center_focus_strong,Icons.center_focus_weak,Icons.change_history,Icons.chat,Icons.chat_bubble,Icons.chat_bubble_outline,Icons.check,Icons.check_box,Icons.check_box_outline_blank,Icons.check_circle,Icons.check_circle_outline,Icons.chevron_left,Icons.chevron_right,Icons.child_care,Icons.child_friendly,Icons.chrome_reader_mode,Icons.class_,Icons.clear,Icons.clear_all,Icons.close,Icons.closed_caption,Icons.cloud,Icons.cloud_circle,Icons.cloud_done,Icons.cloud_download,Icons.cloud_off,Icons.cloud_queue,Icons.cloud_upload,Icons.code,Icons.collections,Icons.collections_bookmark,Icons.color_lens,Icons.colorize,Icons.comment,Icons.compare,Icons.compare_arrows,Icons.computer,Icons.confirmation_number,Icons.contact_mail,Icons.contact_phone,Icons.contacts,Icons.content_copy,Icons.content_cut,Icons.content_paste,Icons.control_point,Icons.control_point_duplicate,Icons.copyright,Icons.create,Icons.create_new_folder,Icons.credit_card,Icons.crop,Icons.crop_3_2,Icons.crop_5_4,Icons.crop_7_5,Icons.crop_16_9,Icons.crop_din,Icons.crop_free,Icons.crop_landscape,Icons.crop_original,Icons.crop_portrait,Icons.crop_rotate,Icons.crop_square,Icons.dashboard,Icons.data_usage,Icons.date_range,Icons.dehaze,Icons.delete,Icons.delete_forever,Icons.delete_outline,Icons.delete_sweep,Icons.departure_board,Icons.description,Icons.desktop_mac,Icons.desktop_windows,Icons.details,Icons.developer_board,Icons.developer_mode,Icons.device_hub,Icons.device_unknown,Icons.devices,Icons.devices_other,Icons.dialer_sip,Icons.dialpad,Icons.directions,Icons.directions_bike,Icons.directions_boat,Icons.directions_bus,Icons.directions_car,Icons.directions_railway,Icons.directions_run,Icons.directions_subway,Icons.directions_transit,Icons.directions_walk,Icons.disc_full,Icons.dns,Icons.do_not_disturb,Icons.do_not_disturb_alt,Icons.do_not_disturb_off,Icons.do_not_disturb_on,Icons.dock,Icons.domain,Icons.done,Icons.done_all,Icons.done_outline,Icons.donut_large,Icons.donut_small,Icons.drafts,Icons.drag_handle,Icons.drive_eta,Icons.dvr,Icons.edit,Icons.edit_attributes,Icons.edit_location,Icons.eject,Icons.email,Icons.enhanced_encryption,Icons.equalizer,Icons.error,Icons.error_outline,Icons.euro_symbol,Icons.ev_station,Icons.event,Icons.event_available,Icons.event_busy,Icons.event_note,Icons.event_seat,Icons.exit_to_app,Icons.expand_less,Icons.expand_more,Icons.explicit,Icons.explore,Icons.exposure,Icons.exposure_neg_1,Icons.exposure_neg_2,Icons.exposure_plus_1,Icons.exposure_plus_2,Icons.exposure_zero,Icons.extension,Icons.face,Icons.fast_forward,Icons.fast_rewind,Icons.fastfood,Icons.favorite,Icons.favorite_border,Icons.featured_play_list,Icons.featured_video,Icons.feedback,Icons.fiber_dvr,Icons.fiber_manual_record,Icons.fiber_new,Icons.fiber_pin,Icons.fiber_smart_record,Icons.file_download,Icons.file_upload,Icons.filter,Icons.filter_1,Icons.filter_2,Icons.filter_3,Icons.filter_4,Icons.filter_5,Icons.filter_6,Icons.filter_7,Icons.filter_8,Icons.filter_9,Icons.filter_9_plus,Icons.filter_b_and_w,Icons.filter_center_focus,Icons.filter_drama,Icons.filter_frames,Icons.filter_hdr,Icons.filter_list,Icons.filter_none,Icons.filter_tilt_shift,Icons.filter_vintage,Icons.find_in_page,Icons.find_replace,Icons.fingerprint,Icons.first_page,Icons.fitness_center,Icons.flag,Icons.flare,Icons.flash_auto,Icons.flash_off,Icons.flash_on,Icons.flight,Icons.flight_land,Icons.flight_takeoff,Icons.flip,Icons.flip_to_back,Icons.flip_to_front,Icons.folder,Icons.folder_open,Icons.folder_shared,Icons.folder_special,Icons.font_download,Icons.format_align_center,Icons.format_align_justify,Icons.format_align_left,Icons.format_align_right,Icons.format_bold,Icons.format_clear,Icons.format_color_fill,Icons.format_color_reset,Icons.format_color_text,Icons.format_indent_decrease,Icons.format_indent_increase,Icons.format_italic,Icons.format_line_spacing,Icons.format_list_bulleted,Icons.format_list_numbered,Icons.format_list_numbered_rtl,Icons.format_paint,Icons.format_quote,Icons.format_shapes,Icons.format_size,Icons.format_strikethrough,Icons.format_textdirection_l_to_r,Icons.format_textdirection_r_to_l,Icons.format_underlined,Icons.forum,Icons.forward,Icons.forward_5,Icons.forward_10,Icons.forward_30,Icons.four_k,Icons.free_breakfast,Icons.fullscreen,Icons.fullscreen_exit,Icons.functions,Icons.g_translate,Icons.gamepad,Icons.games,Icons.gavel,Icons.gesture,Icons.get_app,Icons.gif,Icons.golf_course,Icons.gps_fixed,Icons.gps_not_fixed,Icons.gps_off,Icons.grade,Icons.gradient,Icons.grain,Icons.graphic_eq,Icons.grid_off,Icons.grid_on,Icons.group,Icons.group_add,Icons.group_work,Icons.hd,Icons.hdr_off,Icons.hdr_on,Icons.hdr_strong,Icons.hdr_weak,Icons.headset,Icons.headset_mic,Icons.headset_off,Icons.healing,Icons.hearing,Icons.help,Icons.help_outline,Icons.high_quality,Icons.highlight,Icons.highlight_off,Icons.history,Icons.home,Icons.hot_tub,Icons.hotel,Icons.hourglass_empty,Icons.hourglass_full,Icons.http,Icons.https,Icons.image,Icons.image_aspect_ratio,Icons.import_contacts,Icons.import_export,Icons.important_devices,Icons.inbox,Icons.indeterminate_check_box,Icons.info,Icons.info_outline,Icons.input,Icons.insert_chart,Icons.insert_comment,Icons.insert_drive_file,Icons.insert_emoticon,Icons.insert_invitation,Icons.insert_link,Icons.insert_photo,Icons.invert_colors,Icons.invert_colors_off,Icons.iso,Icons.keyboard,Icons.keyboard_arrow_down,Icons.keyboard_arrow_left,Icons.keyboard_arrow_right,Icons.keyboard_arrow_up,Icons.keyboard_backspace,Icons.keyboard_capslock,Icons.keyboard_hide,Icons.keyboard_return,Icons.keyboard_tab,Icons.keyboard_voice,Icons.kitchen,Icons.label,Icons.label_important,Icons.label_outline,Icons.landscape,Icons.language,Icons.laptop,Icons.laptop_chromebook,Icons.laptop_mac,Icons.laptop_windows,Icons.last_page,Icons.launch,Icons.layers,Icons.layers_clear,Icons.leak_add,Icons.leak_remove,Icons.lens,Icons.library_add,Icons.library_books,Icons.library_music,Icons.lightbulb_outline,Icons.line_style,Icons.line_weight,Icons.linear_scale,Icons.link,Icons.link_off,Icons.linked_camera,Icons.list,Icons.live_help,Icons.live_tv,Icons.local_activity,Icons.local_airport,Icons.local_atm,Icons.local_bar,Icons.local_cafe,Icons.local_car_wash,Icons.local_convenience_store,Icons.local_dining,Icons.local_drink,Icons.local_florist,Icons.local_gas_station,Icons.local_grocery_store,Icons.local_hospital,Icons.local_hotel,Icons.local_laundry_service,Icons.local_library,Icons.local_mall,Icons.local_movies,Icons.local_offer,Icons.local_parking,Icons.local_pharmacy,Icons.local_phone,Icons.local_pizza,Icons.local_play,Icons.local_post_office,Icons.local_printshop,Icons.local_see,Icons.local_shipping,Icons.local_taxi,Icons.location_city,Icons.location_disabled,Icons.location_off,Icons.location_on,Icons.location_searching,Icons.lock,Icons.lock_open,Icons.lock_outline,Icons.looks,Icons.looks_3,Icons.looks_4,Icons.looks_5,Icons.looks_6,Icons.looks_one,Icons.looks_two,Icons.loop,Icons.loupe,Icons.low_priority,Icons.loyalty,Icons.mail,Icons.mail_outline,Icons.map,Icons.markunread,Icons.markunread_mailbox,Icons.maximize,Icons.memory,Icons.menu,Icons.merge_type,Icons.message,Icons.mic,Icons.mic_none,Icons.mic_off,Icons.minimize,Icons.missed_video_call,Icons.mms,Icons.mobile_screen_share,Icons.mode_comment,Icons.mode_edit,Icons.monetization_on,Icons.money_off,Icons.monochrome_photos,Icons.mood,Icons.mood_bad,Icons.more,Icons.more_horiz,Icons.more_vert,Icons.motorcycle,Icons.mouse,Icons.move_to_inbox,Icons.movie,Icons.movie_creation,Icons.movie_filter,Icons.multiline_chart,Icons.music_note,Icons.music_video,Icons.my_location,Icons.nature,Icons.nature_people,Icons.navigate_before,Icons.navigate_next,Icons.navigation,Icons.near_me,Icons.network_cell,Icons.network_check,Icons.network_locked,Icons.network_wifi,Icons.new_releases,Icons.next_week,Icons.nfc,Icons.no_encryption,Icons.no_sim,Icons.not_interested,Icons.not_listed_location,Icons.note,Icons.note_add,Icons.notification_important,Icons.notifications,Icons.notifications_active,Icons.notifications_none,Icons.notifications_off,Icons.notifications_paused,Icons.offline_bolt,Icons.offline_pin,Icons.ondemand_video,Icons.opacity,Icons.open_in_browser,Icons.open_in_new,Icons.open_with,Icons.outlined_flag,Icons.pages,Icons.pageview,Icons.palette,Icons.pan_tool,Icons.panorama,Icons.panorama_fish_eye,Icons.panorama_horizontal,Icons.panorama_vertical,Icons.panorama_wide_angle,Icons.party_mode,Icons.pause,Icons.pause_circle_filled,Icons.pause_circle_outline,Icons.payment,Icons.people,Icons.people_outline,Icons.perm_camera_mic,Icons.perm_contact_calendar,Icons.perm_data_setting,Icons.perm_device_information,Icons.perm_identity,Icons.perm_media,Icons.perm_phone_msg,Icons.perm_scan_wifi,Icons.person,Icons.person_add,Icons.person_outline,Icons.person_pin,Icons.person_pin_circle,Icons.personal_video,Icons.pets,Icons.phone,Icons.phone_android,Icons.phone_bluetooth_speaker,Icons.phone_forwarded,Icons.phone_in_talk,Icons.phone_iphone,Icons.phone_locked,Icons.phone_missed,Icons.phone_paused,Icons.phonelink,Icons.phonelink_erase,Icons.phonelink_lock,Icons.phonelink_off,Icons.phonelink_ring,Icons.phonelink_setup,Icons.photo,Icons.photo_album,Icons.photo_camera,Icons.photo_filter,Icons.photo_library,Icons.photo_size_select_actual,Icons.photo_size_select_large,Icons.photo_size_select_small,Icons.picture_as_pdf,Icons.picture_in_picture,Icons.picture_in_picture_alt,Icons.pie_chart,Icons.pie_chart_outlined,Icons.pin_drop,Icons.place,Icons.play_arrow,Icons.play_circle_filled,Icons.play_circle_outline,Icons.play_for_work,Icons.playlist_add,Icons.playlist_add_check,Icons.playlist_play,Icons.plus_one,Icons.poll,Icons.polymer,Icons.pool,Icons.portable_wifi_off,Icons.portrait,Icons.power,Icons.power_input,Icons.power_settings_new,Icons.pregnant_woman,Icons.present_to_all,Icons.print,Icons.priority_high,Icons.public,Icons.publish,Icons.query_builder,Icons.question_answer,Icons.queue,Icons.queue_music,Icons.queue_play_next,Icons.radio,Icons.radio_button_checked,Icons.radio_button_unchecked,Icons.rate_review,Icons.receipt,Icons.recent_actors,Icons.record_voice_over,Icons.redeem,Icons.redo,Icons.refresh,Icons.remove,Icons.remove_circle,Icons.remove_circle_outline,Icons.remove_from_queue,Icons.remove_red_eye,Icons.remove_shopping_cart,Icons.reorder,Icons.repeat,Icons.repeat_one,Icons.replay,Icons.replay_5,Icons.replay_10,Icons.replay_30,Icons.reply,Icons.reply_all,Icons.report,Icons.report_off,Icons.report_problem,Icons.restaurant,Icons.restaurant_menu,Icons.restore,Icons.restore_from_trash,Icons.restore_page,Icons.ring_volume,Icons.room,Icons.room_service,Icons.rotate_90_degrees_ccw,Icons.rotate_left,Icons.rotate_right,Icons.rounded_corner,Icons.router,Icons.rowing,Icons.rss_feed,Icons.rv_hookup,Icons.satellite,Icons.save,Icons.save_alt,Icons.scanner,Icons.scatter_plot,Icons.schedule,Icons.school,Icons.score,Icons.screen_lock_landscape,Icons.screen_lock_portrait,Icons.screen_lock_rotation,Icons.screen_rotation,Icons.screen_share,Icons.sd_card,Icons.sd_storage,Icons.search,Icons.security,Icons.select_all,Icons.send,Icons.sentiment_dissatisfied,Icons.sentiment_neutral,Icons.sentiment_satisfied,Icons.sentiment_very_dissatisfied,Icons.sentiment_very_satisfied,Icons.settings,Icons.settings_applications,Icons.settings_backup_restore,Icons.settings_bluetooth,Icons.settings_brightness,Icons.settings_cell,Icons.settings_ethernet,Icons.settings_input_antenna,Icons.settings_input_component,Icons.settings_input_composite,Icons.settings_input_hdmi,Icons.settings_input_svideo,Icons.settings_overscan,Icons.settings_phone,Icons.settings_power,Icons.settings_remote,Icons.settings_system_daydream,Icons.settings_voice,Icons.share,Icons.shop,Icons.shop_two,Icons.shopping_basket,Icons.shopping_cart,Icons.short_text,Icons.show_chart,Icons.shuffle,Icons.shutter_speed,Icons.signal_cellular_4_bar,Icons.signal_cellular_connected_no_internet_4_bar,Icons.signal_cellular_no_sim,Icons.signal_cellular_null,Icons.signal_cellular_off,Icons.signal_wifi_4_bar,Icons.signal_wifi_4_bar_lock,Icons.signal_wifi_off,Icons.sim_card,Icons.sim_card_alert,Icons.skip_next,Icons.skip_previous,Icons.slideshow,Icons.slow_motion_video,Icons.smartphone,Icons.smoke_free,Icons.smoking_rooms,Icons.sms,Icons.sms_failed,Icons.snooze,Icons.sort,Icons.sort_by_alpha,Icons.spa,Icons.space_bar,Icons.speaker,Icons.speaker_group,Icons.speaker_notes,Icons.speaker_notes_off,Icons.speaker_phone,Icons.spellcheck,Icons.star,Icons.star_border,Icons.star_half,Icons.stars,Icons.stay_current_landscape,Icons.stay_current_portrait,Icons.stay_primary_landscape,Icons.stay_primary_portrait,Icons.stop,Icons.stop_screen_share,Icons.storage,Icons.store,Icons.store_mall_directory,Icons.straighten,Icons.streetview,Icons.strikethrough_s,Icons.style,Icons.subdirectory_arrow_left,Icons.subdirectory_arrow_right,Icons.subject,Icons.subscriptions,Icons.subtitles,Icons.subway,Icons.supervised_user_circle,Icons.supervisor_account,Icons.surround_sound,Icons.swap_calls,Icons.swap_horiz,Icons.swap_horizontal_circle,Icons.swap_vert,Icons.swap_vertical_circle,Icons.switch_camera,Icons.switch_video,Icons.sync,Icons.sync_disabled,Icons.sync_problem,Icons.system_update,Icons.system_update_alt,Icons.tab,Icons.tab_unselected,Icons.table_chart,Icons.tablet,Icons.tablet_android,Icons.tablet_mac,Icons.tag_faces,Icons.tap_and_play,Icons.terrain,Icons.text_fields,Icons.text_format,Icons.text_rotate_up,Icons.text_rotate_vertical,Icons.text_rotation_angledown,Icons.text_rotation_angleup,Icons.text_rotation_down,Icons.text_rotation_none,Icons.textsms,Icons.texture,Icons.theaters,Icons.threed_rotation,Icons.threesixty,Icons.thumb_down,Icons.thumb_up,Icons.thumbs_up_down,Icons.time_to_leave,Icons.timelapse,Icons.timeline,Icons.timer,Icons.timer_3,Icons.timer_10,Icons.timer_off,Icons.title,Icons.toc,Icons.today,Icons.toll,Icons.tonality,Icons.touch_app,Icons.toys,Icons.track_changes,Icons.traffic,Icons.train,Icons.tram,Icons.transfer_within_a_station,Icons.transform,Icons.transit_enterexit,Icons.translate,Icons.trending_down,Icons.trending_flat,Icons.trending_up,Icons.trip_origin,Icons.tune,Icons.turned_in,Icons.turned_in_not,Icons.tv,Icons.unarchive,Icons.undo,Icons.unfold_less,Icons.unfold_more,Icons.update,Icons.usb,Icons.verified_user,Icons.vertical_align_bottom,Icons.vertical_align_center,Icons.vertical_align_top,Icons.vibration,Icons.video_call,Icons.video_label,Icons.video_library,Icons.videocam,Icons.videocam_off,Icons.videogame_asset,Icons.view_agenda,Icons.view_array,Icons.view_carousel,Icons.view_column,Icons.view_comfy,Icons.view_compact,Icons.view_day,Icons.view_headline,Icons.view_list,Icons.view_module,Icons.view_quilt,Icons.view_stream,Icons.view_week,Icons.vignette,Icons.visibility,Icons.visibility_off,Icons.voice_chat,Icons.voicemail,Icons.volume_down,Icons.volume_mute,Icons.volume_off,Icons.volume_up,Icons.vpn_key,Icons.vpn_lock,Icons.wallpaper,Icons.warning,Icons.watch,Icons.watch_later,Icons.wb_auto,Icons.wb_cloudy,Icons.wb_incandescent,Icons.wb_iridescent,Icons.wb_sunny,Icons.wc,Icons.web,Icons.web_asset,Icons.weekend,Icons.whatshot,Icons.widgets,Icons.wifi,Icons.wifi_lock,Icons.wifi_tethering,Icons.work,Icons.wrap_text,Icons.youtube_searched_for,Icons.zoom_in,Icons.zoom_out,Icons.zoom_out_map]; +} \ No newline at end of file diff --git a/lib/common/myListView.dart b/lib/common/myListView.dart new file mode 100644 index 00000000..ac50f3d2 --- /dev/null +++ b/lib/common/myListView.dart @@ -0,0 +1,70 @@ + +import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; + +class MyListView extends StatelessWidget { + +final String currCodeUrl; +final String currTitle; +final String developer; + +const MyListView({ Key key,this.currCodeUrl, this.currTitle, this.developer}): +super(key:key); + + + void _launchURL(String url) async { + if (await canLaunch(url)) { + await launch(url); + } else { + throw 'Could not launch $url'; + } + } + + @override + Widget build(BuildContext context) { + return Card( + //color: Colors.primaries[index % Colors.primaries.length], + color: Colors.white, + elevation: 4.0, + margin: new EdgeInsets.symmetric(horizontal: 10.0, vertical: 6.0), + child:ListTile( + onTap:(){ + print('codeUrl:${currCodeUrl}'); + _launchURL(currCodeUrl); + }, + // contentPadding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 1.0), + // leading: Container( + // padding: EdgeInsets.only(right: 12.0), + // decoration: new BoxDecoration( + // border: new Border( + // right: new BorderSide(width: 1.0, color: Colors.grey))), + // child: Icon(smallParts_icon, color: smallParts_Color), + // ), + title: Padding( + child: Text( + + currTitle, + style: TextStyle(color: Colors.black,fontSize:15.0), + + ), + padding: EdgeInsets.only(top: 10.0), + ), + // subtitle: Text("Intermediate", style: TextStyle(color: Colors.white)), + + subtitle: Row( + + children: [ + Padding( + child: Text( developer, style: TextStyle(color: Colors.black54,fontSize:10.0) + ), + padding:EdgeInsets.only(top: 10.0,bottom: 10.0), + ) + //Icon(Icons.linear_scale, color: smallParts_Color), + + ], + ), + trailing: Icon(Icons.keyboard_arrow_right, color: Colors.grey, size: 30.0) + ) + ); + } +} \ No newline at end of file diff --git a/lib/common/net_utils.dart b/lib/common/net_utils.dart new file mode 100644 index 00000000..d5dbcdc6 --- /dev/null +++ b/lib/common/net_utils.dart @@ -0,0 +1,17 @@ +import 'package:dio/dio.dart'; +import 'dart:async'; + +var dio = new Dio(); + +class NetUtils { + + static Future get(String url,{Map params}) async{ + var response = await dio.get(url, data: params); + return response.data; + } + + static Future post(String url,Map params) async{ + var response = await dio.post(url, data: params); + return response.data; + } +} \ No newline at end of file diff --git a/lib/common/provider.dart b/lib/common/provider.dart index fa869bb8..d9e2d5dc 100644 --- a/lib/common/provider.dart +++ b/lib/common/provider.dart @@ -13,7 +13,7 @@ class Provider { Future init(bool isCreate) async { String databasesPath = await getDatabasesPath(); String path = join(databasesPath,'flutter.db'); - print("path ${path}"); + // print("path ${path}"); if(db == null && isCreate){ ByteData data = await rootBundle.load(join("assets", "app.db")); @@ -21,12 +21,12 @@ class Provider { await new File(path).writeAsBytes(bytes); db = await openDatabase(path,version: 2,onCreate : (Database db, int version) async{ - print('db created version is $version'); + // print('db created version is $version'); },onOpen : (Database db) async{ - print('new db opened'); + // print('new db opened'); }); }else{ - print('Opening existing database'); + // print('Opening existing database'); } } } diff --git a/lib/common/sql.dart b/lib/common/sql.dart index 4910e664..1b8c868f 100644 --- a/lib/common/sql.dart +++ b/lib/common/sql.dart @@ -4,6 +4,7 @@ import 'package:sqflite/sqflite.dart'; + class BaseModel{ Database db; final String table = ''; @@ -15,7 +16,6 @@ class BaseModel{ class Sql extends BaseModel { final String tableName; - Sql.setTable(String name) : tableName = name, super(Provider.db); @@ -36,12 +36,12 @@ class Sql extends BaseModel { String stringConditions = ''; int index = 0; - print("condition>>> $conditions"); + // print("condition>>> $conditions"); conditions.forEach((key, value) { if (value == null) { return ; } - print("$key value.runtimeType: ${value.runtimeType}"); + // print("$key value.runtimeType: ${value.runtimeType}"); if (value.runtimeType == String) { stringConditions = '$stringConditions $key = "$value"'; } @@ -54,7 +54,7 @@ class Sql extends BaseModel { } index++; }); - print("this is string condition for sql > $stringConditions"); + // print("this is string condition for sql > $stringConditions"); return await this.query(tableName, where: stringConditions); } @@ -63,4 +63,37 @@ class Sql extends BaseModel { json['id'] = id; return json; } + /// + /// 搜索 + /// @param Object condition + /// @mods [And, Or] default is Or + /// search({'name': "hanxu', 'id': 1}; + /// + Future search({Map conditions, String Mods = 'Or'}) async { + if (conditions == null || conditions.isEmpty) { + return this.get(); + } + String stringConditions = ''; + int index = 0; + conditions.forEach((key, value) { + if (value == null) { + return ; + } + + if (value.runtimeType == String) { + stringConditions = '$stringConditions $key like "%$value%"'; + } + if (value.runtimeType == int) { + stringConditions = '$stringConditions $key = "%$value%"'; + } + + if (index >= 0 && index < conditions.length -1) { + stringConditions = '$stringConditions $Mods'; + } + index++; + }); + print("this is string search condition for sql > $stringConditions"); + + return await this.query(tableName, where: stringConditions); + } } \ No newline at end of file diff --git a/lib/common/util.dart b/lib/common/util.dart new file mode 100644 index 00000000..1b9fab38 --- /dev/null +++ b/lib/common/util.dart @@ -0,0 +1,90 @@ +import 'package:flutter/material.dart'; + +const Map emumMap = const { + "Objective-C": Color(0xFF438EFF), + "Perl": Color(0xFF0298C3), + "Python": Color(0xFF0298C3), + "JavaScript": Color(0xFFF1E05A), + "PHP": Color(0xFF4F5D95), + "R": Color(0xFF188CE7), + "Lua": Color(0xFFC22D40), + "Scala": Color(0xFF020080), + "Swift": Color(0xFFFFAC45), + "Kotlin": Color(0xFFF18E33), + "Vue": Colors.black, + "Ruby": Color(0xFF701617), + "Shell": Color(0xFF89E051), + "TypeScript": Color(0xFF2B7489), + "C++": Color(0xFFF34B7D), + "CSS": Color(0xFF563C7C), + "Java": Color(0xFFB07219), + "C#": Color(0xFF178600), + "Go": Color(0xFF375EAB), + "Erlang": Color(0xFFB83998), + "C": Color(0xFF555555), +}; + +class Util { + static String getTimeDuration(String comTime) { + var nowTime = DateTime.now(); + var compareTime = DateTime.parse(comTime); + if (nowTime.isAfter(compareTime)) { + if (nowTime.year == compareTime.year) { + if (nowTime.month == compareTime.month) { + if (nowTime.day == compareTime.day) { + if (nowTime.hour == compareTime.hour) { + if (nowTime.minute == compareTime.minute) { + return '片刻之间'; + } + return (nowTime.minute - compareTime.minute).toString() + '分钟前'; + } + return (nowTime.hour - compareTime.hour).toString() + '小时前'; + } + return (nowTime.day - compareTime.day).toString() + '天前'; + } + return (nowTime.month - compareTime.month).toString() + '月前'; + } + return (nowTime.year - compareTime.year).toString() + '年前'; + } + return 'time error'; + } + + static double setPercentage(percentage, context) { + return MediaQuery.of(context).size.width * percentage; + } + + static Color getLangColor(String language) { + if (emumMap.containsKey(language)) { + return emumMap[language]; + } + return Colors.black26; + } + + static String getTimeDate(String comTime) { + var compareTime = DateTime.parse(comTime); + String weekDay = ''; + switch (compareTime.weekday) { + case 2: + weekDay = '周二'; + break; + case 3: + weekDay = '周三'; + break; + case 4: + weekDay = '周四'; + break; + case 5: + weekDay = '周五'; + break; + case 6: + weekDay = '周六'; + break; + case 7: + weekDay = '周日'; + break; + default: + weekDay = '周一'; + } + return '${compareTime.month}-${compareTime.day} $weekDay'; + } +} diff --git a/lib/common/widget-demo.dart b/lib/common/widget-demo.dart new file mode 100644 index 00000000..7c82237e --- /dev/null +++ b/lib/common/widget-demo.dart @@ -0,0 +1,75 @@ +import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; +import '../routers/application.dart'; + +class WidgetDemo extends StatelessWidget { + final Widget child; + final String docUrl; + final String title; + final String codeUrl; + + WidgetDemo( + {Key key, + @required this.title, + @required this.child, + @required this.codeUrl, + @required this.docUrl}) + : super(key: key); + + void _launchURL(String url) async { + if (await canLaunch(url)) { + await launch(url); + } else { + throw 'Could not launch $url'; + } + } + + @override + Widget build(BuildContext context,[bottomNaviBar]) { + return Scaffold( + appBar: new AppBar( + title: Text(title), + actions: [ + new IconButton( + tooltip: 'widget doc', + onPressed: (){ + _launchURL(docUrl); + }, + icon: Icon(Icons.library_books), + ), + new IconButton( + tooltip: 'github code', + onPressed: (){ + _launchURL(codeUrl); + }, + icon: Icon(Icons.code), + ), + new IconButton( + tooltip: 'goBack home', + onPressed: (){ + Navigator.popUntil(context, ModalRoute.withName('/')); + }, + icon: Icon(Icons.home), + ), + ], + ), + body: new Container( + padding: const EdgeInsets.symmetric(vertical: 10.0, horizontal: 15.0), + child: ListView( + shrinkWrap: true, + padding: const EdgeInsets.all(0.0), + children: [ + Column( + children: [ + SizedBox( + height: 10.0, + ), + child, + ], + ), + ]) + ), + bottomNavigationBar: (bottomNaviBar is Widget)?bottomNaviBar:null + ); + } +} diff --git a/lib/common/widget_demo.dart b/lib/common/widget_demo.dart new file mode 100644 index 00000000..6f46f313 --- /dev/null +++ b/lib/common/widget_demo.dart @@ -0,0 +1,99 @@ +/** + * @author Nealyang + * + * 新widget详情页模板 + */ +import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; +// import 'package:flutter_markdown/flutter_markdown.dart'; +import '../routers/application.dart'; +import '../components/markdown.dart'; + +class WidgetDemo extends StatelessWidget { + final List contentList; + final String docUrl; + final String title; + final String codeUrl; + + WidgetDemo( + {Key key, + @required this.title, + @required this.contentList, + @required this.codeUrl, + @required this.docUrl}) + : super(key: key); + + void _launchURL(String url) async { + if (await canLaunch(url)) { + await launch(url); + } else { + throw 'Could not launch $url'; + } + } + + List _buildContent() { + List _list = [ + SizedBox( + height: 10.0, + ), + ]; + contentList.forEach((item) { + if (item.runtimeType == String) { + _list.add(MarkdownBody(item)); + _list.add( + SizedBox( + height: 20.0, + ), + ); + } else { + _list.add(item); + } + }); + return _list; + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(title), + actions: [ + new IconButton( + tooltip: 'widget doc', + onPressed: () { + _launchURL(docUrl); + }, + icon: Icon(Icons.library_books), + ), + new IconButton( + tooltip: 'github code', + onPressed: () { + print(Application.github['widgetsURL']+codeUrl); + _launchURL(Application.github['widgetsURL']+codeUrl); + }, + icon: Icon(Icons.code), + ), + new IconButton( + tooltip: 'goBack home', + onPressed: () { + Navigator.popUntil(context, ModalRoute.withName('/')); + }, + icon: Icon(Icons.home), + ), + ], + ), + body: Container( + padding: const EdgeInsets.symmetric(vertical: 10.0, horizontal: 15.0), + child: ListView( + shrinkWrap: true, + padding: const EdgeInsets.all(0.0), + children: [ + Column( + children: _buildContent(), + ), + ], + ), + ), + ); + } +} diff --git a/lib/common/widget_name_to_icon.dart b/lib/common/widget_name_to_icon.dart new file mode 100644 index 00000000..b3436602 --- /dev/null +++ b/lib/common/widget_name_to_icon.dart @@ -0,0 +1,144 @@ +import 'package:flutter/material.dart'; +class WidgetName2Icon { + static Map icons = { + "Element":Icons.explicit, + "Components":Icons.extension, + "Themes":Icons.filter_b_and_w, + "Form":Icons.table_chart, + "Frame":Icons.aspect_ratio, + "Media":Icons.subscriptions, + "Input":Icons.input, + "TextField":Icons.text_fields, + "Checkbox":Icons.check_box, + "CheckboxListTile":Icons.playlist_add_check, + "Button":Icons.aspect_ratio, + "FlatButton":Icons.outlined_flag, + "RaisedButton":Icons.picture_in_picture_alt, + "IconButton":Icons.import_contacts, + "PopupMenuButton":Icons.power_input, + "FloatingActionButton":Icons.flash_off, + "RawMaterialButton":Icons.rowing, + "DropdownButton":Icons.drag_handle, + "OutlineButton":Icons.done_outline, + "Text":Icons.text_format, + "RichText":Icons.text_rotation_angleup, + "Radio":Icons.radio_button_checked, + "RadioListTile":Icons.list, + "Slider":Icons.slideshow, + "SliderTheme":Icons.theaters, + "SliderComponentShape":Icons.format_shapes, + "SliderThemeData":Icons.data_usage, + "Switch":Icons.switch_camera, + "SwitchListTile":Icons.switch_video, + "AnimatedSwitcher":Icons.airplanemode_active, + "Align":Icons.format_align_left, + "Stack":Icons.storage, + "IndexedStack":Icons.star, + "Layout":Icons.layers, + "Row":Icons.recent_actors, + "Column":Icons.cloud_off, + "Container":Icons.edit_location, + "Center":Icons.gesture, + "Box":Icons.hdr_strong, + "ConstrainedBox":Icons.account_box, + "OverflowBox":Icons.email, + "DecoratedBox":Icons.settings_overscan, + "FittedBox":Icons.data_usage, + "LimitedBox":Icons.format_align_justify, + "RenderBox":Icons.error, + "RotateBox":Icons.navigate_next, + "SizedOverflowBox":Icons.undo, + "TextBox":Icons.wallpaper, + "UnconstrainedBox":Icons.account_box, + "Axis":Icons.access_alarm, + "MainAxis":Icons.add_circle, + "CrossAxis":Icons.dehaze, + "FlipAxis":Icons.zoom_out, + "Expanded":Icons.all_out, + "Spacing":Icons.crop_free, + "Padding":Icons.crop, + "SliverPadding":Icons.euro_symbol, + "AnimatedPadding":Icons.zoom_out_map, + "Table":Icons.table_chart, + "Image":Icons.image, + "AssetImage":Icons.image_aspect_ratio, + "DecorationImage":Icons.picture_in_picture, + "DecorationImagePainter":Icons.image, + "ExactAssetImage":Icons.assessment, + "FadeInImage":Icons.flip, + "FileImage":Icons.filter, + "NetworkImage":Icons.network_wifi, + "RawImage":Icons.text_rotation_down, + "PaintImage":Icons.format_paint, + "PrecacheImage":Icons.perm_camera_mic, + "MemoryImage":Icons.memory, + "Icon":Icons.event_available, + "ImageIcon":Icons.image, + "IconTheme":Icons.table_chart, + "IconData":Icons.date_range, + "IconThemeData":Icons.insert_comment, + "Canvas":Icons.edit, + "Material":Icons.android, + "MaterialApp":Icons.android, + "MaterialButton":Icons.speaker, + "MaterialGap":Icons.view_week, + "MaterialSlice":Icons.format_list_numbered_rtl , + "MaterialColor":Icons.color_lens, + "Cupertino":Icons.phone_iphone, + "Scroll":Icons.swap_vertical_circle, + "Tab":Icons.tab, + "Menu":Icons.menu, + "PopupMenuDivider":Icons.remove, + "PopupMenuEntry":Icons.menu, + "CheckedPopupMenuItem":Icons.playlist_add_check, + "DropdownMenuItem":Icons.playlist_play, + "Grid":Icons.grid_on, + "Scaffold":Icons.local_convenience_store, + "Dialog":Icons.add_alert, + "Bar":Icons.border_horizontal, + "Card":Icons.credit_card, + "Panel":Icons.video_label, + "Navigation":Icons.navigation, + "List":Icons.list, + "ScrollView":Icons.move_to_inbox, + "Scrollable":Icons.swap_vertical_circle, + "ScrollbarPainter":Icons.format_paint, + "ScrollMetrics":Icons.camera, + "ScrollPhysics":Icons.control_point_duplicate, + "BoxScrollView":Icons.inbox, + "Chip":Icons.sim_card, + "ChipTheme":Icons.sd_card, + "CustomScrollView":Icons.autorenew, + "NestedScrollView":Icons.panorama_fish_eye, + "ChipThemeData":Icons.sim_card_alert, + "ChoiceChip":Icons.insert_drive_file, + "FilterChip":Icons.note_add, + "InputChip":Icons.restore_page, + "RawChip":Icons.save, + "LinearProgressIndicator":Icons.trending_flat , + "CircularProgressIndicator":Icons.rotate_left , + "ExpansionPanel":Icons.view_stream, + "ExpansionPanelList":Icons.view_headline, + "BottomNavigationBar":Icons.call_to_action, + "ListView":Icons.view_list , + "ListBody":Icons.list , + "AnimatedList":Icons.format_line_spacing , + "SliverAppBar":Icons.content_paste, + "AppBar":Icons.card_membership, + "BottomAppBar":Icons.call_to_action, + "BottomNavigationBarItem":Icons.crop_original, + "FlexibleSpaceBar":Icons.aspect_ratio, + "ButtonBar":Icons.branding_watermark, + "SnackBar":Icons.sms_failed, + "Progress":Icons.sync, + "Pick":Icons.event_note, + "DayPicker":Icons.calendar_today, + "MonthPicker":Icons.date_range, + "YearPicker":Icons.event_busy, + "ShowdatePicker":Icons.event, + "MaterialPageRoute":Icons.album, + "MaterialAccentColor":Icons.brush, + + + }; +} diff --git a/lib/model/cat.dart b/lib/model/cat.dart index e636baf1..08ee4dc7 100644 --- a/lib/model/cat.dart +++ b/lib/model/cat.dart @@ -87,7 +87,7 @@ class CatControlModel{ if (cat == null) { cat = new Cat(depth: 1, parentId: 0); } - print("cat in getList ${cat.toMap()}"); + // print("cat in getList ${cat.toMap()}"); List listJson = await sql.getByCondition(conditions: cat.toSqlCondition()); List cats = listJson.map((json) { diff --git a/lib/model/story.dart b/lib/model/story.dart index 772cf6a1..c8bfbab2 100644 --- a/lib/model/story.dart +++ b/lib/model/story.dart @@ -2,20 +2,22 @@ class StoryModel { final String title; final String image; final int id; + final String url; - StoryModel(this.id, this.title, {this.image}); + StoryModel(this.id, this.title, {this.image,this.url}); StoryModel.fromJson(Map json) : this(json['id'], json['title'], - image: json['image'] != null ? json['image'] : (json['images'] != null - ? json['images'][0] - : null)); + image: json['image'] != null ? json['image'] : (json['images'] != null ? json['images'][0] : null), + url: json['url'] != null ? json['url'] : (json['url'] != null ? json['url'][0] : null), + ); Map toJson() { return { 'id': id, 'title': title, - 'image': image + 'image': image, + 'url':url }; } } \ No newline at end of file diff --git a/lib/model/widget.dart b/lib/model/widget.dart index 5a1eaa5d..606f9d84 100644 --- a/lib/model/widget.dart +++ b/lib/model/widget.dart @@ -3,47 +3,60 @@ import 'dart:async'; import '../common/sql.dart'; import "package:flutter/material.dart"; -abstract class WidgetInterface{ - int get id; - //组件英文名 - String get name; - //组件中文名 - String get cnName; - //组件截图 - String get image; - //组件markdown 文档 - String get doc; - //类目 id - int get catId; +abstract class WidgetInterface { + int get id; + + //组件英文名 + String get name; + + //组件中文名 + String get cnName; + + //组件截图 + String get image; + + //组件markdown 文档 + String get doc; + + //类目 id + int get catId; } -class WidgetPoint implements WidgetInterface{ - int id; +class WidgetPoint implements WidgetInterface { + int id; + //组件英文名 - String name; + String name; + //组件中文名 - String cnName; + String cnName; + //组件截图 - String image; + String image; + // 路由地址 String routerName; + //组件markdown 文档 - String doc; + String doc; + //组件 demo ,多个以 , 分割 - String demo; + String demo; + //类目 id - int catId; + int catId; final WidgetBuilder buildRouter; - WidgetPoint({ - this.id, - this.name, - this.cnName, - this.image, - this.doc, - this.catId, - this.routerName, - this.buildRouter - }); + + WidgetPoint( + {this.id, + this.name, + this.cnName, + this.image, + this.doc, + this.catId, + this.routerName, + this.buildRouter}); + WidgetPoint.fromJSON(Map json) : id = json['id'], name = json['name'], @@ -53,6 +66,7 @@ class WidgetPoint implements WidgetInterface{ doc = json['doc'], catId = json['catId'], buildRouter = json['buildRouter']; + String toString() { return '(WidgetPoint $name)'; } @@ -67,13 +81,12 @@ class WidgetPoint implements WidgetInterface{ 'catId': catId }; } + Map toSqlCondition() { Map _map = this.toMap(); Map condition = {}; _map.forEach((k, value) { - if (value != null) { - condition[k] = value; } }); @@ -85,19 +98,23 @@ class WidgetPoint implements WidgetInterface{ return condition; } } -class WidgetControlModel{ + +class WidgetControlModel { final String table = 'widget'; Sql sql; + WidgetControlModel() { sql = Sql.setTable(table); } + // 获取Widget不同条件的列表 - Future> getList(WidgetPoint widgetPoint) async{ - List listJson = await sql.getByCondition(conditions: widgetPoint.toSqlCondition()); + Future> getList(WidgetPoint widgetPoint) async { + List listJson = + await sql.getByCondition(conditions: widgetPoint.toSqlCondition()); List widgets = listJson.map((json) { return new WidgetPoint.fromJSON(json); }).toList(); - print("widgets $widgets"); + // print("widgets $widgets"); return widgets; } @@ -109,4 +126,17 @@ class WidgetControlModel{ } return new WidgetPoint.fromJSON(json.first); } + Future> search(String name) async { + List json = await sql.search(conditions: {'name': name}); + + if (json.isEmpty) { + return []; + } + + List widgets = json.map((json) { + return new WidgetPoint.fromJSON(json); + }).toList(); + + return widgets; + } } diff --git a/lib/routers/application.dart b/lib/routers/application.dart index 35d7c1d4..05cba554 100644 --- a/lib/routers/application.dart +++ b/lib/routers/application.dart @@ -1,5 +1,13 @@ import 'package:fluro/fluro.dart'; - +import 'package:flutter/material.dart'; +import '../widgets/index.dart'; class Application { static Router router; + static TabController controller; + static Map github = { + 'widgetsURL':'https://github.com/alibaba-paimai-frontend/flutter-common-widgets-app/tree/develop/lib/widgets/', + //'develop':'https://github.com/alibaba-paimai-frontend/flutter-common-widgets-app/tree/develop/lib/widgets/', + //'master':'https://github.com/alibaba-paimai-frontend/flutter-common-widgets-app/tree/master/lib/widgets/' + }; + } diff --git a/lib/routers/router_handler.dart b/lib/routers/router_handler.dart index 6fd8811e..fbff9c84 100644 --- a/lib/routers/router_handler.dart +++ b/lib/routers/router_handler.dart @@ -17,4 +17,4 @@ var widgetNotFoundHandler = new Handler( handlerFunc: (BuildContext context, Map> params) { return new WidgetNotFound(); } -); \ No newline at end of file +); diff --git a/lib/routers/routers.dart b/lib/routers/routers.dart index 7de61384..32d311f2 100644 --- a/lib/routers/routers.dart +++ b/lib/routers/routers.dart @@ -7,6 +7,7 @@ import './router_handler.dart'; class Routes { static String root = "/"; + static String widgetDemo = '/widget-demo'; static void configureRoutes(Router router) { List widgetDemosList = new WidgetDemoList().getDemos(); @@ -21,10 +22,13 @@ class Routes { widgetDemosList.forEach((demo) { Handler handler = new Handler( handlerFunc: (BuildContext context, Map> params) { + print('detail路由:${demo.buildRouter(context)}'); return demo.buildRouter(context); }); + + print('路由:${demo.routerName}'); + router.define('${demo.routerName}', handler: handler); }); - } } diff --git a/lib/views/FirstPage.dart b/lib/views/FirstPage.dart index b7fd3984..5b3d5700 100644 --- a/lib/views/FirstPage.dart +++ b/lib/views/FirstPage.dart @@ -1,12 +1,20 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import 'package:flutter_rookie_book/components/List.dart'; +import 'package:flutter_rookie_book/common/myListView.dart'; +//import 'package:flutter_rookie_book/components/CompList.dart'; +import 'package:flutter_rookie_book/components/ListRefresh.dart' as listComp; import 'package:flutter_rookie_book/components/Pagination.dart'; +import './widgetFeature/FirstPageItem.dart'; +import '../common/net_utils.dart'; + +import 'package:flutter_rookie_book/common/iconNames.dart'; import '../common/sql.dart'; import 'dart:async'; +import 'package:url_launcher/url_launcher.dart'; + class FirstPage extends StatefulWidget { @override FirstPageState createState() => new FirstPageState(); @@ -19,6 +27,46 @@ class FirstPageState extends State { // TODO: implement initState super.initState(); } + + Future getIndexListData([Map params]) async { + const juejin_flutter = 'https://timeline-merger-ms.juejin.im/v1/get_tag_entry?src=web&tagId=5a96291f6fb9a0535b535438'; + var pageIndex = (params is Map) ? params['pageIndex'] : 0; + final _param = {'page':pageIndex,'pageSize':20,'sort':'rankIndex'}; + + var response = await NetUtils.get(juejin_flutter, params: _param); + var responseList = response['d']['entrylist']; + var pageTotal = response['d']['total']; + if (!(pageTotal is int) || pageTotal <= 0) { + pageTotal = 0; + } + pageIndex += 1; + List resultList = new List(); + for (int i = 0; i < responseList.length; i++) { + try { + FirstPageItem cellData = new FirstPageItem.fromJson(responseList[i]); + resultList.add(cellData); + } catch (e) { + // No specified type, handles all + print('Something really unknown: $i'); + } + } + Map result = {"list":resultList, 'total':pageTotal, 'pageIndex':pageIndex}; + return result; + } + + Widget makeCard(index,item){ + const emojis = ['👲']; + var smallParts_Color = Colors.primaries[index % Colors.primaries.length]; + var smallParts_icon = IconNames.Names[index % IconNames.Names.length]; + var smallParts_emojis = IconNames.Names[index % IconNames.Names.length]; + + var myTitle = '${item.title}'; + var myUsername = '${'👲'}: ${item.username} '; + var codeUrl = '${item.detailUrl}'; + + return new MyListView(currCodeUrl:codeUrl,currTitle: myTitle,developer: myUsername,); + } + @override Widget build(BuildContext context) { return new Column( @@ -26,8 +74,10 @@ class FirstPageState extends State { new Container( child: new Pagination(), ), + SizedBox(height: 2, child:Container(color: Theme.of(context).primaryColor)), new Expanded( - child: new List(), + //child: new List(), + child: listComp.ListRefresh(getIndexListData,makeCard) ), ] diff --git a/lib/views/FourthPage.dart b/lib/views/FourthPage.dart index f022194b..37aa6cd4 100644 --- a/lib/views/FourthPage.dart +++ b/lib/views/FourthPage.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import '../components/List.dart'; +import '../components/CompList.dart'; class FourthPage extends StatefulWidget { @@ -14,7 +14,7 @@ class FourthPageState extends State { @override Widget build(BuildContext context) { return new Container( - child: new List() + child: new CompList() ); } } diff --git a/lib/views/ThirdPage.dart b/lib/views/ThirdPage.dart index 3b49594f..dfeb8605 100644 --- a/lib/views/ThirdPage.dart +++ b/lib/views/ThirdPage.dart @@ -40,6 +40,7 @@ class ThirdPageState extends State { @override Widget build(BuildContext context) { + print('===========>>>:123123123123'); return new Center( child: new Column(children: [ new Container( diff --git a/lib/views/category.dart b/lib/views/category.dart index c5f42052..8feee805 100644 --- a/lib/views/category.dart +++ b/lib/views/category.dart @@ -1,14 +1,14 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; import '../routers/application.dart'; import '../model/cat.dart'; import '../model/widget.dart'; import '../widgets/index.dart'; +import '../components/widget_item_container.dart'; +enum CateOrWigdet { Cat, WidgetDemo } -enum CateOrWigdet { - Cat, - WidgetDemo -} class CategoryHome extends StatefulWidget { CategoryHome(this.name); final String name; @@ -42,6 +42,7 @@ class _CategoryHome extends State { Future getCatByName(String name) async { return await catControl.getCatByName(name); } + Future back() { if (catHistory.length == 1) { return Future.value(true); @@ -49,12 +50,13 @@ class _CategoryHome extends State { catHistory.removeLast(); searchCatOrWigdet(); return Future.value(false); - } + void go(Cat cat) { catHistory.add(cat); searchCatOrWigdet(); } + void searchCatOrWigdet() async { // 假设进入这个界面的parent一定存在 Cat parentCat = catHistory.last; @@ -62,27 +64,31 @@ class _CategoryHome extends State { int depth = catHistory.length; // 继续搜索显示下一级depth: depth + 1, parentId: parentCat.id - List _categories = await catControl.getList(new Cat(parentId: parentCat.id, depth: depth + 1)); + List _categories = + await catControl.getList(new Cat(parentId: parentCat.id)); List _widgetPoints = new List(); if (_categories.isEmpty) { - _widgetPoints = await widgetControl.getList(new WidgetPoint(catId: parentCat.id)); + _widgetPoints = + await widgetControl.getList(new WidgetPoint(catId: parentCat.id)); } - this.setState(() { categories = _categories; - title = parentCat.name; + title = parentCat.name; widgetPoints = _widgetPoints; }); } void onCatgoryTap(Cat cat) { - go(cat); + go(cat); } + void onWidgetTap(WidgetPoint widgetPoint) { String targetName = widgetPoint.name; String targetRouter = '/category/error/404'; + print("widgetDemosList> ${widgetDemosList}"); widgetDemosList.forEach((item) { + // print("targetRouter = item.routerName> ${[item.name,targetName]}"); if (item.name == targetName) { targetRouter = item.routerName; } @@ -91,161 +97,49 @@ class _CategoryHome extends State { Application.router.navigateTo(context, "${targetRouter}"); } - @override - Widget build(BuildContext context) { - - return Scaffold( - appBar: AppBar( - title: Text(title), - ), - body: WillPopScope( - onWillPop: () { - return back(); - }, - child: new Container( - child: new CategoryOrWidgetList( - categorys: categories, - widgetPoints: widgetPoints, - onCatgoryTap: onCatgoryTap, - onWidgetTap: onWidgetTap - ), - ) - ) + Widget _buildContent() { + WidgetItemContainer wiContaienr = WidgetItemContainer( + columnCount: 3, + categories: categories, + isWidgetPoint:false ); - } -} - - - -class CategoryOrWidgetList extends StatelessWidget { - - List categorys = []; - List widgetPoints = []; - - var onCatgoryTap; - var onWidgetTap; - CategoryOrWidgetList({ - this.categorys, - this.widgetPoints, - this.onCatgoryTap, - this.onWidgetTap, - }); - - Widget build(BuildContext context) { - print("categorys $categorys"); - return GridView.builder( - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 2, //每行2个 - mainAxisSpacing: 0.0, //主轴(竖直)方向间距 - crossAxisSpacing: 0.0, //纵轴(水平)方向间距 - childAspectRatio: 0.8 //纵轴缩放比例 + if (widgetPoints.length > 0) { + wiContaienr = WidgetItemContainer( + categories: widgetPoints, + columnCount: 3, + isWidgetPoint:true + ); + } + return Container( + padding: const EdgeInsets.only(bottom: 10.0, top: 5.0), + decoration: BoxDecoration( + color: Colors.white, + image: DecorationImage( + image: AssetImage('assets/images/paimaiLogo.png'), + alignment: Alignment.bottomRight), ), - itemCount: widgetPoints.length == 0 ? categorys.length : widgetPoints.length, - itemBuilder: (BuildContext context, int index) { - if (widgetPoints.length > 0) { - return new ListItemWidget( - widgetPoint: widgetPoints[index], - onTap: () { - onWidgetTap(widgetPoints[index]); - }, - ); - } - return new ListCatWidget( - cat: categorys[index], - onTap: () { - onCatgoryTap(categorys[index]); - }, - ); - }, + child: wiContaienr, ); } -} - - - -class ListCatWidget extends StatelessWidget { - final Cat cat; - final VoidCallback onTap; - - ListCatWidget({ - this.cat, - this.onTap - }); @override Widget build(BuildContext context) { - return new Container( - color: Colors.green, - child: Container( - decoration: new BoxDecoration( - color: Colors.white, - border: Border( - right: const BorderSide(width: 1.0, color: const Color(0xFFFF000000)), - bottom: const BorderSide(width: 1.0, color: const Color(0xFFFF000000)), - ), - ), - child: new RaisedButton( - onPressed: () { - onTap(); - }, - child: new Column( - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.max, - children: [ - Icon( - Icons.add - ), - Text(cat.name), - ], - ) - ) - ) + return Scaffold( + appBar: AppBar( + title: Text(title), + ), + body: WillPopScope( + onWillPop: () { + return back(); + }, + child: ListView( + children: [ + _buildContent(), + ], + ), + // child: Container(color: Colors.blue,child: Text('123'),), + ), ); } } - -class ListItemWidget extends StatelessWidget { - final WidgetPoint widgetPoint; - final VoidCallback onTap; - - ListItemWidget({ - this.widgetPoint, - this.onTap - }); - - @override - Widget build(BuildContext context) { - return new Container( - color: Colors.green, - child: Container( - decoration: new BoxDecoration( - color: Colors.white, - border: Border( - right: const BorderSide(width: 1.0, color: const Color(0xFFFF000000)), - bottom: const BorderSide(width: 1.0, color: const Color(0xFFFF000000)), - ), - ), - child: new RaisedButton( - onPressed: () { - onTap(); - }, - child: new Column( - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.max, - children: [ - Icon( - Icons.add - ), - Text(widgetPoint.name), - ], - ) - ) - ) - ); - } -} - - - - diff --git a/lib/views/widgetFeature/FirstPageItem.dart b/lib/views/widgetFeature/FirstPageItem.dart new file mode 100644 index 00000000..f91ffd09 --- /dev/null +++ b/lib/views/widgetFeature/FirstPageItem.dart @@ -0,0 +1,51 @@ +/** + * Created with Android Studio. + * User: 一晟 + * Date: 2019/1/5 + * Time: 下午10:20 + * email: zhu.yan@alibaba-inc.com + * tartget: FirstPageItem + */ + +import '../../common/Util.dart'; + +class FirstPageItem { + bool hot; + String isCollection; + String tag; + String username; + int collectionCount; + int commentCount; + String title; + String createdTime; + String detailUrl; + + FirstPageItem( + {this.hot, + this.tag, + this.username, + this.collectionCount, + this.createdTime, + this.commentCount, + this.title, + this.detailUrl, + this.isCollection}); + + factory FirstPageItem.fromJson(Map json) { + String _tag = ''; + if(json['tags'].length>0){ + _tag = '${json['tags'][0]['title']}/'; + } + return FirstPageItem( + hot: json['hot'], + collectionCount: json['collectionCount'], + commentCount: json['commentsCount'], + tag: '$_tag${json['category']['name']}', + username: json['user']['username'], + createdTime: Util.getTimeDuration(json['createdAt']), + title: json['title'], + detailUrl: json['originalUrl'], + isCollection: json['type'] , + ); + } +} \ No newline at end of file diff --git a/lib/views/widgetPage.dart b/lib/views/widgetPage.dart index ea03afa0..d87d4bef 100644 --- a/lib/views/widgetPage.dart +++ b/lib/views/widgetPage.dart @@ -1,19 +1,13 @@ - - - import 'package:flutter/material.dart'; -import '../routers/application.dart'; +import 'widgetPage/cate_card.dart'; import '../model/cat.dart'; -import '../widgets/index.dart'; - - - - class WidgetPage extends StatefulWidget { final db; final CatControlModel catModel; - WidgetPage(this.db): catModel = new CatControlModel(),super(); + WidgetPage(this.db) + : catModel = new CatControlModel(), + super(); @override SecondPageState createState() => new SecondPageState(catModel); @@ -21,23 +15,22 @@ class WidgetPage extends StatefulWidget { class SecondPageState extends State { CatControlModel catModel; - SecondPageState(this.catModel): super(); + SecondPageState(this.catModel) : super(); TextEditingController controller; - String active = 'test'; + String active = 'test'; String data = '无'; List categories = []; - - void initState() { + void initState() { + super.initState(); renderCats(); } - - void renderCats(){ - catModel.getList().then((List data){ - if(data.isNotEmpty){ + void renderCats() { + catModel.getList().then((List data) { + if (data.isNotEmpty) { setState(() { categories = data; }); @@ -45,26 +38,28 @@ class SecondPageState extends State { }); } + Widget buildGrid() { + // 存放最后的widget + List tiles = []; + Widget content; + for (Cat item in categories) { + tiles.add(new CateCard(category: item)); + } + return new ListView( + children: tiles, + ); + } @override Widget build(BuildContext context) { if (categories.length == 0) { - return new Container(); + return ListView( + children: [new Container()], + ); } - print("categories in widgetPage : ${categories[0]}"); - return GridView.builder( - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 2, //每行2个 - mainAxisSpacing: 0.0, //主轴(竖直)方向间距 - crossAxisSpacing: 0.0, //纵轴(水平)方向间距 - childAspectRatio: 0.8 //纵轴缩放比例 - ), - itemCount: categories.length, - itemBuilder: (BuildContext context, int index) { - return new ListItemWidget( - category: categories[index], - ); - }, + return Container( + color: Theme.of(context).backgroundColor, + child: this.buildGrid(), ); } @@ -75,45 +70,3 @@ class SecondPageState extends State { }); } } - - -class ListItemWidget extends StatelessWidget { - - final Cat category; - - ListItemWidget({this.category}); - - @override - Widget build(BuildContext context) { - return new Container( - color: Colors.green, - child: Container( - decoration: new BoxDecoration( - color: Colors.white, - border: Border( - right: const BorderSide(width: 1.0, color: const Color(0xFFFF000000)), - bottom: const BorderSide(width: 1.0, color: const Color(0xFFFF000000)), - ), - ), - child: new RaisedButton( - onPressed: () { - Application.router.navigateTo(context, "/category/${category.name}"); -// Application.router.navigateTo(context, "/category/${category.name}"); - }, - child: new Column( - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.max, - children: [ - Icon( - Icons.add, - ), - Text(category.name), - ], - ) - ) - ) - ); - } -} - - diff --git a/lib/views/widgetPage/cate_card.dart b/lib/views/widgetPage/cate_card.dart new file mode 100644 index 00000000..51c49697 --- /dev/null +++ b/lib/views/widgetPage/cate_card.dart @@ -0,0 +1,127 @@ +import 'package:flutter/material.dart'; +import '../../model/cat.dart'; +import '../../common/widget_name_to_icon.dart'; +import '../../components/widget_item_container.dart'; + +class CateCard extends StatefulWidget { + final Cat category; + CateCard({@required this.category}); + @override + _CateCardState createState() => _CateCardState(); +} + +class _CateCardState extends State { + // 一级菜单目录下的二级Cat集合 + List _firstChildList = new List(); + CatControlModel catControl = new CatControlModel(); + + @override + void initState() { + super.initState(); + getFirstChildCategoriesByParentId(); + } + + // 获取一层目录下的二级内容 + getFirstChildCategoriesByParentId() async { + int parentId = widget.category.id; + // 构建查询条件 + Cat childCateCondition = new Cat(parentId: parentId); + + List list = await catControl.getList(childCateCondition); + if (list.isNotEmpty&&list.length>=1) { + setState(() { + _firstChildList = list; + }); + } + } + + @override + Widget build(BuildContext context) { + double screenWidth = MediaQuery.of(context).size.width; + widget.category.name = widget.category.name.replaceFirst( + //首字母转为大写 + widget.category.name.substring(0, 1), + widget.category.name.substring(0, 1).toUpperCase()); + + return Container( + width: screenWidth, + padding: const EdgeInsets.symmetric(vertical: 10.0, horizontal: 10.0), + child: Stack( + children: [ + Container( + width: screenWidth - 20, + margin: const EdgeInsets.only(top: 30.0, bottom: 0.0), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(4.0), + ), + child: Column( + children: [ + Container( + width: screenWidth - 20, + padding: const EdgeInsets.only(left: 65.0, top: 3.0), + height: 30.0, + child: Text( + widget.category.name, + style: TextStyle( + color: Theme.of(context).primaryColor, + fontSize: 18.0, + ), + ), + ), + _buildWidgetContainer(), + ], + ), + ), + Positioned( + left: 0.0, + top: 0.0, + child: Container( + height: 60.0, + width: 60.0, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(30.0), + ), + child: Center( + child: Container( + decoration: BoxDecoration( + color: Theme.of(context).primaryColor, + borderRadius: BorderRadius.circular(23.0), + ), + height: 46.0, + width: 46.0, + child: Icon( + WidgetName2Icon.icons[widget.category.name], + color: Colors.white, + size: 30.0, + ), + ), + ), + ), + ) + ], + ), + ); + } + + Widget _buildWidgetContainer() { + if (this._firstChildList.length == 0) { + return Container(); + } + return Container( + padding: const EdgeInsets.only(bottom: 10.0, top: 5.0), + decoration: BoxDecoration( + image: DecorationImage( + image: AssetImage('assets/images/paimaiLogo.png'), + alignment: Alignment.bottomRight + ), + ), + child: WidgetItemContainer( + categories: this._firstChildList, + columnCount: 3, + isWidgetPoint:false + ), + ); + } +} diff --git a/lib/widgets/elements/Form/Button/DropdownButton/demo.dart b/lib/widgets/elements/Form/Button/DropdownButton/demo.dart new file mode 100644 index 00000000..06eeacd2 --- /dev/null +++ b/lib/widgets/elements/Form/Button/DropdownButton/demo.dart @@ -0,0 +1,143 @@ +/** + * Created with Android Studio. + * User: 一晟 + * Date: 2018/11/22 + * Time: 上午12:03 + * email: zhu.yan@alibaba-inc.com + * tartget: DropdownButton 的示例 + */ +import 'dart:math'; +import 'package:flutter/material.dart'; + +/* +* DropdownButton 默认按钮的实例 +* isDisabled:是否是禁用,isDisabled 默认为true +* */ +class DropdownButtonDefault extends StatelessWidget { + List generateItemList() { + List items = new List(); + DropdownMenuItem item1 = new DropdownMenuItem( + value: '张三', child: new Text('张三')); + DropdownMenuItem item2 = new DropdownMenuItem( + value: '李四', child: new Text('李四')); + DropdownMenuItem item3 = new DropdownMenuItem( + value: '王二', child: new Text('王二')); + DropdownMenuItem item4 = new DropdownMenuItem( + value: '麻子', child: new Text('麻子')); + items.add(item1); + items.add(item2); + items.add(item3); + items.add(item4); + return items; + } + + var selectItemValue; + + @override + Widget build(BuildContext context) { + return DropdownButton( + hint: new Text('下拉菜单选择一个人名'), + //设置这个value之后,选中对应位置的item, + //再次呼出下拉菜单,会自动定位item位置在当前按钮显示的位置处 + value: selectItemValue, + items: generateItemList(), + onChanged: (T){ +// setState(() { +// selectItemValue=T; +// }); + }, + ); + } +} + +List getListData(){ + List items=new List(); + DropdownMenuItem dropdownMenuItem1=new DropdownMenuItem( + child:new Text('1'), + value: '1', + ); + items.add(dropdownMenuItem1); + DropdownMenuItem dropdownMenuItem2=new DropdownMenuItem( + child:new Text('2'), + value: '2', + ); + items.add(dropdownMenuItem2); + DropdownMenuItem dropdownMenuItem3=new DropdownMenuItem( + child:new Text('3'), + value: '3', + ); + items.add(dropdownMenuItem3); + DropdownMenuItem dropdownMenuItem4=new DropdownMenuItem( + child:new Text('4'), + value: '4', + ); + items.add(dropdownMenuItem4); + DropdownMenuItem dropdownMenuItem5=new DropdownMenuItem( + child:new Text('5'), + value: '5', + ); + items.add(dropdownMenuItem5); + DropdownMenuItem dropdownMenuItem6=new DropdownMenuItem( + child:new Text('6'), + value: '6', + ); + items.add(dropdownMenuItem6); + DropdownMenuItem dropdownMenuItem7=new DropdownMenuItem( + child:new Text('7'), + value: '7', + ); + items.add(dropdownMenuItem7); + DropdownMenuItem dropdownMenuItem8=new DropdownMenuItem( + child:new Text('8'), + value: '8', + ); + items.add(dropdownMenuItem8); + DropdownMenuItem dropdownMenuItem9=new DropdownMenuItem( + child:new Text('9'), + value: '9', + ); + items.add(dropdownMenuItem9); + DropdownMenuItem dropdownMenuItem10=new DropdownMenuItem( + child:new Text('10'), + value: '10', + ); + items.add(dropdownMenuItem10); + return items; +} +var selectItemValue; + +/* +* DropdownButton 自定义的实例 +* */ +class DropdownButtonCustom extends StatelessWidget { + final widget; + final parent; + const DropdownButtonCustom([this.widget,this.parent]) + : super(); + + @override + Widget build(BuildContext context) { + return DropdownButton( + items: getListData(), + //当没有默认值的时候可以设置的提示 + hint:Text('下拉选择你想要的数据'), + //下拉菜单选择完之后显示给用户的值 + value: selectItemValue, + //下拉菜单item点击之后的回调 + onChanged: (T){ + parent.setState((){ + selectItemValue = T; + }); + }, + //设置阴影的高度 + elevation: 24, + style: TextStyle(//设置文本框里面文字的样式 + color: Colors.red + ), + // isDense: true,//减少按钮的高度。默认情况下,此按钮的高度与其菜单项的高度相同。如果isDense为true,则按钮的高度减少约一半。 这个当按钮嵌入添加的容器中时,非常有用 + // 将下拉列表的内部内容设置为水平填充其父级 + isExpanded:true, + iconSize: 50.0,//设置三角标icon的大小 + ); + } +} diff --git a/lib/widgets/elements/Form/Button/DropdownButton/index.dart b/lib/widgets/elements/Form/Button/DropdownButton/index.dart new file mode 100644 index 00000000..24fc4ce9 --- /dev/null +++ b/lib/widgets/elements/Form/Button/DropdownButton/index.dart @@ -0,0 +1,102 @@ +/** + * Created with 菜鸟手册. + * User: 一晟 + * Date: 2018/11/14 + * Time: 下午4:31 + * email: zhu.yan@alibaba-inc.com + * target: DropdownButton 的示例 + * 对应文档地址:https://docs.flutter.io/flutter/material/DropdownButton-class.html + */ +import '../../../../../common/widget-demo.dart'; +import '../../../../../routers/application.dart'; +import 'dart:math'; +import 'package:flutter/material.dart'; + +import 'package:flutter_markdown/flutter_markdown.dart'; +import './demo.dart' as dropdownButton; + + +const String _dropdownText0 = +"""### **简介** +> Dropdown button “用于从项目列表中进行选择的按钮” +- 类型T是下拉菜单表示的值的类型。给定菜单中的所有条目必须表示具有一致类型的值。通常,使用枚举。每个DropdownMenuItem在项目必须专门与同类型的说法。。 +"""; + +const String _dropdownText1 = +"""### **基本用法** +> 此示例显示一个包含四个项目的菜单 +"""; + +const String _dropdownText2 = +"""### **进阶用法** +> 此示例尝试调整所有属性,展示出效果 +"""; + +class Demo extends StatefulWidget { + static const String routeName = '/element/Form/Button/DropdownButton'; + + @override + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + String buttonShapeType = 'border'; // 边框类型 + void setButtonShapeType(){ + //String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; + this.setState((){ + //buttonShapeType = _buttonShapeType; + }); + } + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'DropdownButton', + codeUrl: '${Application.github['widgetsURL']}elements/Form/Button/DropdownButton/demo.dart', + child: allDropdownButtons(context,this), + docUrl: 'https://docs.flutter.io/flutter/material/DropdownButton-class.html', + ); + } +} + +/** + * 所有的 DropdownButton 按钮 + */ +Widget allDropdownButtons(BuildContext context,_DemoState that){ + return Container( + //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + child: Column( + //mainAxisSize: MainAxisSize.max, + children: [ + MarkdownBody(data: _dropdownText0), + textAlignBar(_dropdownText1), + ButtonBar( + alignment: MainAxisAlignment.spaceAround, + mainAxisSize: MainAxisSize.max, + children: [ + dropdownButton.DropdownButtonDefault(), + ], + ), + textAlignBar(_dropdownText2), + SizedBox(height: 10.0), + dropdownButton.DropdownButtonCustom(context.widget,that), + SizedBox(height: 20.0) + ]) + ); +} + +/* +* 带align的text +* */ +Widget textAlignBar(String txt){ + //style: new TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left + return new Align( + alignment: FractionalOffset.centerLeft, + child: Column( + children: [ + SizedBox(height: 20.0), + MarkdownBody(data: txt) + //new Text(txt, style: new TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) + ]) + ); +} + diff --git a/lib/widgets/elements/Form/Button/FlatButton/demo.dart b/lib/widgets/elements/Form/Button/FlatButton/demo.dart new file mode 100644 index 00000000..106bd912 --- /dev/null +++ b/lib/widgets/elements/Form/Button/FlatButton/demo.dart @@ -0,0 +1,129 @@ +/** + * Created with Android Studio. + * User: 一晟 + * Date: 2018/11/22 + * Time: 上午12:03 + * email: zhu.yan@alibaba-inc.com + * tartget: FlatButton 的示例 + */ +import 'dart:math'; +import 'package:flutter/material.dart'; + +/* +* FlatButton 默认按钮的实例 +* isDisabled:是否是禁用,isDisabled 默认为true +* */ +class FlatButtonDefault extends StatelessWidget { + final bool isDisabled; + + const FlatButtonDefault([bool this.isDisabled = true]) + : assert(isDisabled != null), + super(); + + @override + Widget build(BuildContext context) { + return FlatButton( + // 文本内容 + child: const Text('默认按钮', semanticsLabel: 'FLAT BUTTON 1'), + onPressed: isDisabled ? () {} : null); + } +} + +/* +* FlatButton.icon 默认按钮的实例 +* Create a text button from a pair of widgets that serve as the button's icon and label +* isDisabled:是否是禁用 +* */ +class FlatButtonIconDefault extends StatelessWidget { + final bool isDisabled; + final IconData icon; + + const FlatButtonIconDefault( + [bool this.isDisabled = true, IconData this.icon = Icons.add_circle]) + : super(); + + Color _randomColor() { + var red = Random.secure().nextInt(255); + var greed = Random.secure().nextInt(255); + var blue = Random.secure().nextInt(255); + return Color.fromARGB(255, red, greed, blue); + } + + @override + Widget build(BuildContext context) { + return FlatButton.icon( + // 文本内容 + icon: Icon(icon, size: 25.0, color: _randomColor()), + label: Text('默认按钮', semanticsLabel: 'FLAT BUTTON 2'), + onPressed: isDisabled + ? () { + //_showMessage('点击了 FLAT BUTTON ', context); + } + : null); + } +} + +/* +* FlatButton 自定义的实例 +* */ +class FlatButtonCustom extends StatelessWidget { + final String txt; + final Color color; + final ShapeBorder shape; + final VoidCallback onPressed; + + const FlatButtonCustom([ + String this.txt = '自定义按钮', + Color this.color = Colors.blueAccent, + ShapeBorder this.shape, + VoidCallback this.onPressed + ]) :super(); + + @override + Widget build(BuildContext context) { + final _onPressed = onPressed; + return FlatButton( + // 文本内容 + child: Text(txt, semanticsLabel: 'FLAT BUTTON 2'), + // 按钮颜色 + color: color, + // 按钮亮度 + colorBrightness: Brightness.dark, + // 高亮时的背景色 + //highlightColor: Colors.yellow, + // 失效时的背景色 + disabledColor: Colors.grey, + // 该按钮上的文字颜色,但是前提是不设置字体自身的颜色时才会起作用 + textColor: Colors.white, + // 按钮失效时的文字颜色,同样的不能使用文本自己的样式或者颜色时才会起作用 + disabledTextColor: Colors.grey, + // 按钮主题,主要用于与ButtonTheme和ButtonThemeData一起使用来定义按钮的基色,RaisedButton,FlatButton,OutlineButton,它们是基于环境ButtonTheme配置的 + //ButtonTextTheme.accent,使用模版颜色的;ButtonTextTheme.normal,按钮文本是黑色或白色取决于。ThemeData.brightness;ButtonTextTheme.primary,按钮文本基于。ThemeData.primaryColor. + textTheme: ButtonTextTheme.normal, + // 按钮内部,墨汁飞溅的颜色,点击按钮时的渐变背景色,当你不设置高亮背景时才会看的更清楚 + splashColor: Colors.deepPurple, + // 抗锯齿能力,抗锯齿等级依次递增,none(默认),hardEdge,antiAliasWithSaveLayer,antiAlias + clipBehavior: Clip.antiAlias, + padding: new EdgeInsets.only( + bottom: 5.0, top: 5.0, left: 30.0, right: 30.0), + shape: (shape is ShapeBorder) ? shape : new Border.all( + // 设置边框样式 + color: Colors.grey, + width: 2.0, + style: BorderStyle.solid, + ), + // FlatButton 的点击事件 + onPressed: () { + // Perform some action + if (_onPressed is VoidCallback) { + _onPressed(); + } + }, + // 改变高亮颜色回掉函数,一个按钮会触发两次,按下后改变时触发一次,松手后恢复原始颜色触发一次 + // 参数 bool,按下后true,恢复false + onHighlightChanged: (isClick) { + print(isClick); + } + ); + } +} diff --git a/lib/widgets/elements/Form/Button/FlatButton/index.dart b/lib/widgets/elements/Form/Button/FlatButton/index.dart index f18f4cbc..adbb3b5b 100644 --- a/lib/widgets/elements/Form/Button/FlatButton/index.dart +++ b/lib/widgets/elements/Form/Button/FlatButton/index.dart @@ -1,20 +1,189 @@ +/** + * Created with 菜鸟手册. + * User: 一晟 + * Date: 2018/11/14 + * Time: 下午4:31 + * email: zhu.yan@alibaba-inc.com + * target: FlatButton 的示例 + * 对应文档地址:https://docs.flutter.io/flutter/material/FlatButton-class.html + */ +import '../../../../../common/widget-demo.dart'; +import '../../../../../routers/application.dart'; +import 'dart:math'; import 'package:flutter/material.dart'; +import 'package:flutter_markdown/flutter_markdown.dart'; +import './demo.dart' as flatButton; + +const String _markdownData = """# Markdown Example +Markdown allows you to easily include formatted text, images, and even formatted Dart code in your app. +## Styling +Style text as _italic_, __bold__, or `inline code`. +- Use bulleted lists +- To better clarify +- Your points +## Links +You can use [hyperlinks](hyperlink) in markdown +## Images +You can include images: +![Flutter logo](https://flutter.io/images/flutter-mark-square-100.png#100x100) +## Markdown widget +This is an example of how to create your own Markdown widget: + new Markdown(data: 'Hello _world_!'); +## Code blocks +Formatted Dart code looks really pretty too: +``` +void main() { + runApp(new MaterialApp( + home: new Scaffold( + body: new Markdown(data: markdownData) + ) + )); +} +``` +Enjoy! +"""; + + +const String _flatText0 = +"""### **简介** +> Flat button 是显示在(零高程)material widget上的文本标签 +- 通过填充颜色对触摸作出反应在工具栏上, +- 在对话框中使用Flat button,或与其他内容内联,但使用填充从该内容偏移,以便按钮的存在是显而易见的。 +- Flat buttons 故意不具有可见边框,因此必须依赖于它们相对于其他内容的位置以用于上下文。 +- 在对话框和卡片中,它们应该组合在一个底角中。避免使用平面按钮,它们会与其他内容混合,例如在列表中间。"""; + +const String _flatText1 = +"""### **基本用法** +> 参数的默认的按钮和禁用按钮 +- 如果onPressed回调为null,则该按钮将被禁用,不会对触摸做出反应,并且将按 disabledColor 属性而不是color属性指定的颜色进行着色。 +- 如果您尝试更改按钮的颜色并且没有任何效果,请检查您是否正在传递非null onPressed处理程序。"""; + + +const String _flatText2 = +"""### **进阶用法1** +> FlatButton.icon,按钮图标和标签的widget创建文本按钮。"""; + +const String _flatText3 = +"""### **进阶用法2** +> 更改项参数的自定义,比如:边框,点击效果,内容文字颜色等 +- Material design Flat buttons 按钮具有全帽标签,一些内部填充和一些定义的尺寸。 +- 要使应用程序的一部分具有交互式,使用墨水溅,而不是承诺这些样式选择,请考虑使用InkWell。 +- Flat button 的最小尺寸为88.0×36.0,可以用 ButtonTheme 覆盖。该clipBehavior参数不能为空。"""; + class Demo extends StatefulWidget { static const String routeName = '/element/Form/Button/FlatButton'; - _Demo createState() => _Demo(); + + @override + _DemoState createState() => _DemoState(); } -class _Demo extends State { +class _DemoState extends State { + @override Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: Text("FlatButton"), - ), - body: Container( - child: RaisedButton(onPressed: () {}, child: Text("FlatButton")) - ) + return WidgetDemo( + title: 'FlatButton', + codeUrl: '${Application.github['widgetsURL']}elements/Form/Button/FlatButton/demo.dart', + child: allFlatButtons(context), + docUrl: 'https://docs.flutter.io/flutter/material/FlatButton-class.html', ); - } } + +/** + * 所有的 FlatButton 按钮 + */ +Widget allFlatButtons(BuildContext context){ + return Container( + //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + child: Column( + //mainAxisSize: MainAxisSize.max, + children: [ + MarkdownBody(data: _flatText0), + textAlignBar(_flatText1), + ButtonBar( + alignment: MainAxisAlignment.spaceAround, + mainAxisSize: MainAxisSize.max, + children: [ + flatButton.FlatButtonDefault(), + SizedBox(width: 20.0), // 间距 + flatButton.FlatButtonDefault(false), + ], + ), + textAlignBar(_flatText2), + ButtonBar( + alignment: MainAxisAlignment.spaceAround, + //mainAxisSize: MainAxisSize.min, + children: [ + flatButton.FlatButtonIconDefault(), + flatButton.FlatButtonIconDefault(false), + ], + ), + ButtonBar( + alignment: MainAxisAlignment.spaceAround, + //mainAxisSize: MainAxisSize.min, + children: [ + flatButton.FlatButtonIconDefault(true, Icons.android), + flatButton.FlatButtonIconDefault(true, Icons.announcement), + ], + ), + textAlignBar(_flatText3), + //flatButton.FlatButtonCustom(context,'主要按钮',Colors.blue), + flatButton.FlatButtonCustom('主要按钮',Colors.blue), + SizedBox(height: 10.0), + flatButton.FlatButtonCustom('成功按钮',Colors.green), + SizedBox(height: 10.0), + flatButton.FlatButtonCustom('信息按钮',Colors.grey), + SizedBox(height: 10.0), + flatButton.FlatButtonCustom('警告按钮',Colors.orange), + SizedBox(height: 10.0), + flatButton.FlatButtonCustom('危险按钮',Colors.pink), + SizedBox(height: 10.0), + flatButton.FlatButtonCustom('点击我试试!', Colors.red, + new Border.all(color: Colors.brown, width: 5.0, style: BorderStyle.solid), + () => _showMessage('点击了 FLAT BUTTON ', context)), + SizedBox(height: 20.0) + ]) + ); +} + +/* + * alert 弹框 + * context:容器的父级 + * */ +void _showMessage(String name, BuildContext context) { + showDialog( + // alert 的父级 + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: new Text('提示'), + content: new Text(name), + actions: [ + new FlatButton( + // alert 的取消按钮 + onPressed: () { + // 取消的事件 + Navigator.of(context).pop(true); + }, + child: new Text('取消')) + ]); + } + ); +} + +/* +* 带align的text +* */ +Widget textAlignBar(String txt){ + //style: new TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left + return new Align( + alignment: FractionalOffset.centerLeft, + child: Column( + children: [ + SizedBox(height: 20.0), + MarkdownBody(data: txt) + //new Text(txt, style: new TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) + ]) + ); +} diff --git a/lib/widgets/elements/Form/Button/FloatingActionButton/demo.dart b/lib/widgets/elements/Form/Button/FloatingActionButton/demo.dart new file mode 100644 index 00000000..ecf373aa --- /dev/null +++ b/lib/widgets/elements/Form/Button/FloatingActionButton/demo.dart @@ -0,0 +1,117 @@ +/** + * Created with Android Studio. + * User: 一晟 + * Date: 2018/11/22 + * Time: 上午12:03 + * email: zhu.yan@alibaba-inc.com + * tartget: OutlineButton 的示例 + */ +import 'dart:math'; +import 'package:flutter/material.dart'; + +/* +* OutlineButton 默认按钮的实例 +* isDisabled:是否是禁用,isDisabled 默认为true +* */ +class FloatingActionButtonDefault extends StatelessWidget { + final bool isDisabled; + + const FloatingActionButtonDefault([bool this.isDisabled = true]) + : assert(isDisabled != null), + super(); + + @override + Widget build(BuildContext context) { + return FloatingActionButton( + // 文本内容 + backgroundColor:Colors.red, + child: const Icon(Icons.add), + heroTag: null, // 不加这个参数会黑屏... + onPressed: isDisabled ? () {} : null); + } +} + +/* +* OutlineButton 自定义的实例 +* */ +class FloatingActionButtonCustom extends StatelessWidget { + final String txt; + final Color color; + final ShapeBorder shape; + final VoidCallback onPressed; + + const FloatingActionButtonCustom( + [String this.txt = '自定义按钮', + Color this.color = Colors.orange, + ShapeBorder this.shape, + VoidCallback this.onPressed]) + : super(); + + @override + Widget build(BuildContext context) { + final _onPressed = onPressed; + return new FloatingActionButton( + // 子视图,一般为Icon,不推荐使用文字 + child: const Icon(Icons.refresh), + // FAB的文字解释,FAB被长按时显示,也是无障碍功能 + tooltip: txt, + // 前景色 + foregroundColor: Colors.white, + // 背景色 + backgroundColor: color, + // hero效果使用的tag,系统默认会给所有FAB使用同一个tag,方便做动画效果,简单理解为两个界面内拥有同样tag的元素在界面切换过程中,会有动画效果,是界面切换不再那么生硬。 + heroTag: null, + // 未点击时阴影值,默认6.0 + elevation: 7.0, + // 点击时阴影值,默认12.0 + highlightElevation: 14.0, + // 点击事件回调 + onPressed: () { + Scaffold.of(context).showSnackBar( SnackBar( + content: Text("FAB is Clicked"), + )); + _onPressed(); + }, + // 是否为“mini”类型,默认为false,FAB 分为三种类型:regular, mini, and extended + mini: false, + // 定义FAB的shape,设置shape时,默认的elevation将会失效,默认为CircleBorder + //shape: CircleBorder(), + shape: shape, + // 是否为”extended”类型 + isExtended: true + ); + } +} + +/* +* OutlineButton 自定义的实例2 +* */ +class FloatingActionButtonCustom2 extends StatelessWidget { + final String txt; + final Color color; + final ShapeBorder shape; + final VoidCallback onPressed; + + const FloatingActionButtonCustom2( + [String this.txt = '自定义按钮', + Color this.color = Colors.orange, + ShapeBorder this.shape, + VoidCallback this.onPressed]) + : super(); + + @override + Widget build(BuildContext context) { + final _onPressed = onPressed; + return FloatingActionButton.extended( + onPressed: () { + print('button click'); + _onPressed(); + }, + foregroundColor: Colors.white, + backgroundColor: Colors.amber, + //如果不手动设置icon和text颜色,则默认使用foregroundColor颜色 + icon: new Icon(Icons.flag,color: Colors.red), + label: new Text('FloatingActionButton.extended', maxLines: 1), + ); + } +} diff --git a/lib/widgets/elements/Form/Button/FloatingActionButton/index.dart b/lib/widgets/elements/Form/Button/FloatingActionButton/index.dart new file mode 100644 index 00000000..6afa2f11 --- /dev/null +++ b/lib/widgets/elements/Form/Button/FloatingActionButton/index.dart @@ -0,0 +1,193 @@ +/** + * Created with 菜鸟手册. + * User: 一晟 + * Date: 2018/11/14 + * Time: 下午4:31 + * email: zhu.yan@alibaba-inc.com + * target: FloatingActionButton 的示例 + * 对应文档地址:https://docs.flutter.io/flutter/material/FloatingActionButton-class.html + */ +import '../../../../../common/widget-demo.dart'; +import '../../../../../routers/application.dart'; +import 'dart:math'; +import 'package:flutter/material.dart'; + +import 'package:flutter_markdown/flutter_markdown.dart'; +import './demo.dart' as floatingActionButton; + +const String _floatingActionTitle = + 'FloatingAction Button 示例'; + +const String _floatingActionText0 = +"""### **简介** +> FloatingAction Button “浮动动作按钮” +- FloatingActionButton 按钮是一个圆形图标按钮,悬停在内容上以提升应用程序中的主要操作。浮动操作按钮最常用于Scaffold.floatingActionButton字段中。。 +- 每个屏幕最多使用一个浮动操作按钮。浮动操作按钮应用于积极操作,例如“创建”,“共享”或“导航”。 +- 一般用来处理界面中最常用,最基础的用户动作。它一般出现在屏幕内容的前面,通常是一个圆形,中间有一个图标。 FAB有三种类型:regular, mini, and extended。不要强行使用FAB,只有当使用场景符合FAB功能的时候使用才最为恰当 +"""; + +const String _floatingActionText1 = +"""### **基本用法** +> 默认参数的按钮和禁用按钮 +- 如果onPressed回调为null,则该按钮将被禁用,并且不会对触摸作出反应,不会变成灰色。 +"""; + +const String _floatingActionText2 = +"""### **进阶用法1** +> 更改项参数的自定义,比如:边框,点击效果,内容文字,颜色,圆角等 +"""; + +const String _floatingActionText3 = +"""### **进阶用法2** +> 更改项参数的自定义,比如:边框,点击效果,内容文字,颜色,圆角等 +"""; + +class Demo extends StatefulWidget { + static const String routeName = '/element/Form/Button/FloatingActionButton'; + + @override + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + String buttonShapeType = 'border'; // 边框类型 + void setButtonShapeType(){ + String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; + this.setState((){ + buttonShapeType = _buttonShapeType; + }); + } + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'FloatingActionButton', + // desc: _floatingActionTitle, + codeUrl: '${Application.github['widgetsURL']}elements/Form/Button/FloatingActionButton/demo.dart', + child: allFloatingActionButtons(context,this), + //child: Text('123'), + docUrl: 'https://docs.flutter.io/flutter/material/FloatingActionButton-class.html', + ); + } +} + +/** + * 所有的 FloatingActionButton 按钮 + */ +Widget allFloatingActionButtons(BuildContext context,_DemoState that){ + final ShapeBorder buttonShape = drawShape(that.buttonShapeType); + return Container( + //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + child: Column( + //mainAxisSize: MainAxisSize.max, + children: [ + MarkdownBody(data: _floatingActionText0), + textAlignBar(_floatingActionText1), + ButtonBar( + alignment: MainAxisAlignment.spaceAround, + mainAxisSize: MainAxisSize.max, + children: [ + floatingActionButton.FloatingActionButtonDefault(), + SizedBox(width: 20.0), // 间距 + floatingActionButton.FloatingActionButtonDefault(false), + ], + ), + textAlignBar(_floatingActionText2), + SizedBox(height: 10.0), + floatingActionButton.FloatingActionButtonCustom('主要按钮',Colors.deepOrangeAccent,buttonShape), + SizedBox(height: 20.0), + textAlignBar(_floatingActionText3), + SizedBox(height: 20.0), + floatingActionButton.FloatingActionButtonCustom2('扩展按钮',Colors.deepOrangeAccent,buttonShape), + SizedBox(height: 20.0) + ]) + ); +} + +/* + * alert 弹框 + * context:容器的父级 + * */ +void _showMessage(String name, BuildContext context) { + showDialog( + // alert 的父级 + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: new Text('提示'), + content: new Text(name), + actions: [ + new FlatButton( + // alert 的取消按钮 + onPressed: () { + // 取消的事件 + Navigator.of(context).pop(true); + }, + child: new Text('取消')) + ]); + } + ); +} + +/* +* 带align的text +* */ +Widget textAlignBar(String txt){ + //style: new TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left + return new Align( + alignment: FractionalOffset.centerLeft, + child: Column( + children: [ + SizedBox(height: 20.0), + MarkdownBody(data: txt) + //new Text(txt, style: new TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) + ]) + ); +} + +/* +* 绘制边框信息,比如是否有边框,是否是圆角 +* */ +ShapeBorder drawShape(String type){ + final Color _color = _randomColor(); + final borderWidth = Random.secure().nextInt(5).toDouble(); + final radiusWidth = Random.secure().nextInt(50).toDouble(); + + switch(type){ + case 'border': + return Border.all( + // 设置边框样式 + width: borderWidth, + color: _color, + style: BorderStyle.solid, + ); + break; + case 'radius': + return RoundedRectangleBorder( + side:new BorderSide( // 保留原来的边框样式 + width: borderWidth, + color: _color, + style: BorderStyle.solid, + ), + borderRadius: BorderRadius.only( + topRight: Radius.circular(radiusWidth), + topLeft: Radius.circular(radiusWidth), + bottomLeft: Radius.circular(radiusWidth), + bottomRight: Radius.circular(radiusWidth), + ), + ); + break; + default: + return null; + } +} + +/* +* 取随机颜色 +* */ +Color _randomColor() { + var red = Random.secure().nextInt(255); + var greed = Random.secure().nextInt(255); + var blue = Random.secure().nextInt(255); + return Color.fromARGB(255, red, greed, blue); +} + diff --git a/lib/widgets/elements/Form/Button/IconButton/demo.dart b/lib/widgets/elements/Form/Button/IconButton/demo.dart new file mode 100644 index 00000000..62be1b02 --- /dev/null +++ b/lib/widgets/elements/Form/Button/IconButton/demo.dart @@ -0,0 +1,94 @@ +/** + * Created with Android Studio. + * User: 一晟 + * Date: 2018/11/22 + * Time: 上午12:03 + * email: zhu.yan@alibaba-inc.com + * tartget: IconButton 的示例 + */ +import 'dart:math'; +import 'package:flutter/material.dart'; +import 'package:flutter_rookie_book/common/iconNames.dart'; + +final int len = IconNames.Names.length; + +/* +* IconButton 默认按钮的实例 +* isDisabled:是否是禁用,isDisabled 默认为true +* */ +class IconButtonDefault extends StatelessWidget { + final bool isDisabled; + + const IconButtonDefault([bool this.isDisabled = true]) + : assert(isDisabled != null), + super(); + + @override + Widget build(BuildContext context) { + return IconButton( + // 文本内容 + icon: Icon(Icons.volume_up), + tooltip: 'Increase volume by 10%', + onPressed: isDisabled ? () {} : null); + } +} + +/* +* IconButton 自定义的实例 +* */ +class IconButtonCustom extends StatelessWidget { + final String txt; + final Color color; + final ShapeBorder shape; + final VoidCallback onPressed; + + const IconButtonCustom( + [String this.txt = '自定义按钮', + Color this.color = Colors.blueAccent, + ShapeBorder this.shape, + VoidCallback this.onPressed]) + : super(); + + getIcons(){ + return Icons; + } + + @override + Widget build(BuildContext context) { + final int iconIndex = Random.secure().nextInt(len); + final IconData type = IconNames.Names[iconIndex]; + final _onPressed = onPressed; + return IconButton( + // 定义图标在IconButton中的定位方式,AlignmentGeometry 如果父Widget尺寸大于child Widget尺寸,这个属性设置会起作用,有很多种对齐方式。 + alignment:AlignmentDirectional.center, + // 按钮颜色 + color: _randomColor(), + // 如果图标被禁用,则用于按钮内图标的颜色。默认为当前主题的ThemeData.disabledColor + disabledColor:_randomColor(), + // 高亮时的背景色 + highlightColor: Colors.yellow, + // 按钮内图标的大小 + icon:Icon(type), + // 图标尺寸 + iconSize:(Random.secure().nextInt(20)+20).toDouble(), // 随机大小 + // 按钮内部,墨汁飞溅的颜色,点击按钮时的渐变背景色,当你不设置高亮背景时才会看的更清楚 + splashColor: _randomColor(), + padding: new EdgeInsets.only(bottom: 5.0, top: 5.0, left: 30.0, right: 30.0), + // 描述按下按钮时将发生的操作的文本 + tooltip:'这是${ type.codePoint }信息', + // IconButton 的点击事件 + onPressed: () { + // Perform some action + if (_onPressed is VoidCallback) { + _onPressed(); + } + }); + } +} + +Color _randomColor() { + var red = Random.secure().nextInt(255); + var greed = Random.secure().nextInt(255); + var blue = Random.secure().nextInt(255); + return Color.fromARGB(255, red, greed, blue); +} diff --git a/lib/widgets/elements/Form/Button/IconButton/index.dart b/lib/widgets/elements/Form/Button/IconButton/index.dart new file mode 100644 index 00000000..19ffdd5d --- /dev/null +++ b/lib/widgets/elements/Form/Button/IconButton/index.dart @@ -0,0 +1,168 @@ +/** + * Created with 菜鸟手册. + * User: 一晟 + * Date: 2018/11/14 + * Time: 下午4:31 + * email: zhu.yan@alibaba-inc.com + * target: IconButton 的示例 + * 对应文档地址:https://docs.flutter.io/flutter/material/IconButton-class.html + */ +import '../../../../../common/widget-demo.dart'; +import '../../../../../routers/application.dart'; +import 'dart:math'; +import 'package:flutter/material.dart'; + +import 'package:flutter_markdown/flutter_markdown.dart'; +import './demo.dart' as iconButton; + + +const String _iconText0 = +"""### **简介** +> Icon button “图标按钮” +- IconButton widget上的图片,通过填充颜色(墨水)来对触摸作出反应。 +"""; + +const String _iconText1 = +"""### **基本用法** +> 参数的默认的按钮和禁用按钮 +- 图标按钮通常在AppBar.actions字段中使用,但它们也可以在许多其他地方使用。。 +- 如果您尝试更改按钮的颜色并且没有任何效果,请检查您是否正在传递非null onPressed处理程序。"""; + +const String _iconText2 = +"""### **进阶用法** +> 更改项参数的自定义,比如:边框,点击效果,内容文字,颜色,圆角等 +- 如果可能,图标按钮的命中区域的大小至少为48.0像素,与实际的iconSize无关,以满足 Material Design规范中的触摸目标大小要求。的对准控制图标本身如何定位命中区域内。 +- ** 长按可弹出 tip 文字 ** +"""; + +class Demo extends StatefulWidget { + static const String routeName = '/element/Form/Button/IconButton'; + + @override + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + String buttonShapeType = 'border'; // 边框类型 + void setButtonShapeType(){ + String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; + this.setState((){ + buttonShapeType = _buttonShapeType; + }); + } + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'IconButton', + codeUrl: '${Application.github['widgetsURL']}elements/Form/Button/IconButton/demo.dart', + child: allIconButtons(context,this), + docUrl: 'https://docs.flutter.io/flutter/material/IconButton-class.html', + ); + } +} + +/** + * 所有的 IconButton 按钮 + */ +Widget allIconButtons(BuildContext context,_DemoState that){ + final ShapeBorder buttonShape = drawShape(that.buttonShapeType); + return Container( + //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + child: Column( + //mainAxisSize: MainAxisSize.max, + children: [ + MarkdownBody(data: _iconText0), + textAlignBar(_iconText1), + ButtonBar( + alignment: MainAxisAlignment.spaceAround, + mainAxisSize: MainAxisSize.max, + children: [ + iconButton.IconButtonDefault(), + SizedBox(width: 20.0), // 间距 + iconButton.IconButtonDefault(false), + ], + ), + textAlignBar(_iconText2), + SizedBox(height: 10.0), + iconButton.IconButtonCustom('主要按钮',Colors.blue,buttonShape), + SizedBox(height: 10.0), + iconButton.IconButtonCustom('成功按钮',Colors.green,buttonShape), + SizedBox(height: 10.0), + iconButton.IconButtonCustom('信息按钮',Colors.grey,buttonShape), + SizedBox(height: 10.0), + iconButton.IconButtonCustom('警告按钮',Colors.orange,buttonShape), + SizedBox(height: 10.0), + iconButton.IconButtonCustom('危险按钮',Colors.pink,buttonShape), + SizedBox(height: 10.0), + RaisedButton( + // 文本内容 + child: const Text('点击切换,图标按钮', semanticsLabel: 'FLAT BUTTON 1'), + onPressed: ()=> that.setButtonShapeType()), + SizedBox(height: 20.0) + ]) + ); +} + +/* +* 带align的text +* */ +Widget textAlignBar(String txt){ + //style: new TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left + return new Align( + alignment: FractionalOffset.centerLeft, + child: Column( + children: [ + SizedBox(height: 20.0), + MarkdownBody(data: txt) + //new Text(txt, style: new TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) + ]) + ); +} + +/* +* 绘制边框信息,比如是否有边框,是否是圆角 +* */ +ShapeBorder drawShape(String type){ + final Color _color = _randomColor(); + final borderWidth = Random.secure().nextInt(5).toDouble(); + final radiusWidth = Random.secure().nextInt(50).toDouble(); + + switch(type){ + case 'border': + return Border.all( + // 设置边框样式 + width: borderWidth, + color: _color, + style: BorderStyle.solid, + ); + break; + case 'radius': + return RoundedRectangleBorder( + side:new BorderSide( // 保留原来的边框样式 + width: borderWidth, + color: _color, + style: BorderStyle.solid, + ), + borderRadius: BorderRadius.only( + topRight: Radius.circular(radiusWidth), + topLeft: Radius.circular(radiusWidth), + bottomLeft: Radius.circular(radiusWidth), + bottomRight: Radius.circular(radiusWidth), + ), + ); + break; + default: + return null; + } +} + +/* +* 取随机颜色 +* */ +Color _randomColor() { + var red = Random.secure().nextInt(255); + var greed = Random.secure().nextInt(255); + var blue = Random.secure().nextInt(255); + return Color.fromARGB(255, red, greed, blue); +} + diff --git a/lib/widgets/elements/Form/Button/OutlineButton/demo.dart b/lib/widgets/elements/Form/Button/OutlineButton/demo.dart new file mode 100644 index 00000000..58212c76 --- /dev/null +++ b/lib/widgets/elements/Form/Button/OutlineButton/demo.dart @@ -0,0 +1,122 @@ +/** + * Created with Android Studio. + * User: 一晟 + * Date: 2018/11/22 + * Time: 上午12:03 + * email: zhu.yan@alibaba-inc.com + * tartget: OutlineButton 的示例 + */ +import 'dart:math'; +import 'package:flutter/material.dart'; + +/* +* OutlineButton 默认按钮的实例 +* isDisabled:是否是禁用,isDisabled 默认为true +* */ +class OutlineButtonDefault extends StatelessWidget { + final bool isDisabled; + + const OutlineButtonDefault([bool this.isDisabled = true]) + : assert(isDisabled != null), + super(); + + @override + Widget build(BuildContext context) { + return OutlineButton( + // 文本内容 + child: const Text('默认按钮', semanticsLabel: 'FLAT BUTTON 1'), + onPressed: isDisabled ? () {} : null); + } +} + +/* +* OutlineButton.icon 默认按钮的实例 +* Create a text button from a pair of widgets that serve as the button's icon and label +* isDisabled:是否是禁用 +* */ +class OutlineButtonIconDefault extends StatelessWidget { + final bool isDisabled; + final IconData icon; + + const OutlineButtonIconDefault( + [bool this.isDisabled = true, IconData this.icon = Icons.add_circle]) + : super(); + + @override + Widget build(BuildContext context) { + return OutlineButton.icon( + // 文本内容 + icon: Icon(icon, size: 25.0, color: _randomColor()), + label: Text('默认按钮', semanticsLabel: 'FLAT BUTTON 2'), + onPressed: isDisabled + ? () { + //_showMessage('点击了 FLAT BUTTON ', context); + } + : null); + } +} + +/* +* OutlineButton 自定义的实例 +* */ +class OutlineButtonCustom extends StatelessWidget { + final String txt; + final Color color; + final ShapeBorder shape; + final VoidCallback onPressed; + + const OutlineButtonCustom( + [String this.txt = '自定义按钮', + Color this.color = Colors.blueAccent, + ShapeBorder this.shape, + VoidCallback this.onPressed]) + : super(); + + @override + Widget build(BuildContext context) { + final _onPressed = onPressed; + return OutlineButton( + // 文本内容 + child: Text(txt, semanticsLabel: 'FLAT BUTTON 2'), + // 边框的颜色,颜色也可以走主题色 Theme.of(context).primaryColor + borderSide:new BorderSide(color: _randomColor(),width:Random.secure().nextInt(10).toDouble()), + // 按钮颜色 + color: _randomColor(), + // 按钮失效时边框颜色 + disabledBorderColor: Colors.red, + highlightedBorderColor:Colors.black54, + // 高亮时的背景色 + highlightColor: Colors.yellow, + // 失效时的背景色 + //disabledColor: Colors.grey, + // 该按钮上的文字颜色,但是前提是不设置字体自身的颜色时才会起作用 + textColor: _randomColor(), + // 按钮失效时的文字颜色,同样的不能使用文本自己的样式或者颜色时才会起作用 + disabledTextColor: _randomColor(), + // 按钮主题,主要用于与ButtonTheme和ButtonThemeData一起使用来定义按钮的基色,OutlineButton,OutlineButton,OutlineButton,它们是基于环境ButtonTheme配置的 + //ButtonTextTheme.accent,使用模版颜色的;ButtonTextTheme.normal,按钮文本是黑色或白色取决于。ThemeData.brightness;ButtonTextTheme.primary,按钮文本基于。ThemeData.primaryColor. + textTheme: ButtonTextTheme.normal, + // 按钮内部,墨汁飞溅的颜色,点击按钮时的渐变背景色,当你不设置高亮背景时才会看的更清楚 + splashColor: _randomColor(), + // 抗锯齿能力,抗锯齿等级依次递增,none(默认),hardEdge,antiAliasWithSaveLayer,antiAlias + clipBehavior: Clip.antiAlias, + padding: new EdgeInsets.only(bottom: 5.0, top: 5.0, left: 30.0, right: 30.0), + //高亮时候的阴影 + highlightElevation: 10.0, + shape: shape, // 在Outline 里只能设置圆角,边框用borderSide + // OutlineButton 的点击事件 + onPressed: () { + // Perform some action + if (_onPressed is VoidCallback) { + _onPressed(); + } + }); + } +} + +Color _randomColor() { + var red = Random.secure().nextInt(255); + var greed = Random.secure().nextInt(255); + var blue = Random.secure().nextInt(255); + return Color.fromARGB(255, red, greed, blue); +} diff --git a/lib/widgets/elements/Form/Button/OutlineButton/index.dart b/lib/widgets/elements/Form/Button/OutlineButton/index.dart new file mode 100644 index 00000000..e44cd71b --- /dev/null +++ b/lib/widgets/elements/Form/Button/OutlineButton/index.dart @@ -0,0 +1,217 @@ +/** + * Created with 菜鸟手册. + * User: 一晟 + * Date: 2018/11/14 + * Time: 下午4:31 + * email: zhu.yan@alibaba-inc.com + * target: OutlineButton 的示例 + * 对应文档地址:https://docs.flutter.io/flutter/material/OutlineButton-class.html + */ +import '../../../../../common/widget-demo.dart'; +import '../../../../../routers/application.dart'; +import 'dart:math'; +import 'package:flutter/material.dart'; + +import 'package:flutter_markdown/flutter_markdown.dart'; +import './demo.dart' as outlineButton; + + +const String _outlineText0 = +"""### **简介** +> Outline button “边框按钮” +- RaisedButton和FlatButton之间的交叉:一个有边框的按钮,当按下按钮时,其高度增加,背景变得不透明。。 +- 高程最初为0.0,其背景颜色 为透明。按下按钮时,其背景变为不透明,然后其高程增加到highlightElevation。 +"""; + +const String _outlineText1 = +"""### **基本用法** +> 参数的默认的按钮和禁用按钮 +- 如果onPressed回调为null,则该按钮将被禁用,不会对触摸做出反应,并且将按 disabledColor 属性而不是color属性指定的颜色进行着色。 +- 如果您尝试更改按钮的颜色并且没有任何效果,请检查您是否正在传递非null onPressed处理程序。"""; + + +const String _outlineText2 = +"""### **进阶用法1** +> OutlineButton.icon 的用法,按钮图标和标签的widget创建文本按钮。"""; + +const String _outlineText3 = +"""### **进阶用法2** +> 更改项参数的自定义,比如:边框,点击效果,内容文字,颜色,圆角等 +- Outline buttons 按钮有一个边框,其形状由形状定义 ,其外观由borderSide,disabledBorderColor和highlightedBorderColor定义。 +- 如果您想要水龙头的墨水效果,但又不想使用按钮,请考虑直接使用InkWell。 +- Outline buttons 的最小尺寸为88.0×36.0,可以用ButtonTheme 覆盖。 +- 通过 shape 属性的设置,改变边框样式和圆角。 +- 可以尝试长按按钮,按钮突出显示。 +"""; + +class Demo extends StatefulWidget { + static const String routeName = '/element/Form/Button/OutlineButton'; + + @override + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + String buttonShapeType = 'border'; // 边框类型 + void setButtonShapeType(){ + String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; + this.setState((){ + buttonShapeType = _buttonShapeType; + }); + } + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'OutlineButton', + codeUrl: '${Application.github['widgetsURL']}elements/Form/Button/OutlineButton/demo.dart', + child: allOutlineButtons(context,this), + docUrl: 'https://docs.flutter.io/flutter/material/OutlineButton-class.html', + ); + } +} + +/** + * 所有的 OutlineButton 按钮 + */ +Widget allOutlineButtons(BuildContext context,_DemoState that){ + final ShapeBorder buttonShape = drawShape(that.buttonShapeType); + return Container( + //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + child: Column( + //mainAxisSize: MainAxisSize.max, + children: [ + MarkdownBody(data: _outlineText0), + textAlignBar(_outlineText1), + ButtonBar( + alignment: MainAxisAlignment.spaceAround, + mainAxisSize: MainAxisSize.max, + children: [ + outlineButton.OutlineButtonDefault(), + SizedBox(width: 20.0), // 间距 + outlineButton.OutlineButtonDefault(false), + ], + ), + textAlignBar(_outlineText2), + ButtonBar( + alignment: MainAxisAlignment.spaceAround, + //mainAxisSize: MainAxisSize.min, + children: [ + outlineButton.OutlineButtonIconDefault(), + outlineButton.OutlineButtonIconDefault(false), + ], + ), + ButtonBar( + alignment: MainAxisAlignment.spaceAround, + //mainAxisSize: MainAxisSize.min, + children: [ + outlineButton.OutlineButtonIconDefault(true, Icons.android), + outlineButton.OutlineButtonIconDefault(true, Icons.announcement), + ], + ), + textAlignBar(_outlineText3), + SizedBox(height: 10.0), + outlineButton.OutlineButtonCustom('主要按钮',Colors.blue,buttonShape), + SizedBox(height: 10.0), + outlineButton.OutlineButtonCustom('成功按钮',Colors.green,buttonShape), + SizedBox(height: 10.0), + outlineButton.OutlineButtonCustom('信息按钮',Colors.grey,buttonShape), + SizedBox(height: 10.0), + outlineButton.OutlineButtonCustom('警告按钮',Colors.orange,buttonShape), + SizedBox(height: 10.0), + outlineButton.OutlineButtonCustom('危险按钮',Colors.pink,buttonShape), + SizedBox(height: 10.0), + outlineButton.OutlineButtonCustom( '点击切换,随机改变按钮的圆角,边框样式', Colors.blue, buttonShape, + () => that.setButtonShapeType()), + SizedBox(height: 20.0) + ]) + ); +} + +/* + * alert 弹框 + * context:容器的父级 + * */ +void _showMessage(String name, BuildContext context) { + showDialog( + // alert 的父级 + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: new Text('提示'), + content: new Text(name), + actions: [ + new FlatButton( + // alert 的取消按钮 + onPressed: () { + // 取消的事件 + Navigator.of(context).pop(true); + }, + child: new Text('取消')) + ]); + } + ); +} + +/* +* 带align的text +* */ +Widget textAlignBar(String txt){ + //style: new TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left + return new Align( + alignment: FractionalOffset.centerLeft, + child: Column( + children: [ + SizedBox(height: 20.0), + MarkdownBody(data: txt) + //new Text(txt, style: new TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) + ]) + ); +} + +/* +* 绘制边框信息,比如是否有边框,是否是圆角 +* */ +ShapeBorder drawShape(String type){ + final Color _color = _randomColor(); + final borderWidth = Random.secure().nextInt(5).toDouble(); + final radiusWidth = Random.secure().nextInt(50).toDouble(); + + switch(type){ + case 'border': + return Border.all( + // 设置边框样式 + width: borderWidth, + color: _color, + style: BorderStyle.solid, + ); + break; + case 'radius': + return RoundedRectangleBorder( + side:new BorderSide( // 保留原来的边框样式 + width: borderWidth, + color: _color, + style: BorderStyle.solid, + ), + borderRadius: BorderRadius.only( + topRight: Radius.circular(radiusWidth), + topLeft: Radius.circular(radiusWidth), + bottomLeft: Radius.circular(radiusWidth), + bottomRight: Radius.circular(radiusWidth), + ), + ); + break; + default: + return null; + } +} + +/* +* 取随机颜色 +* */ +Color _randomColor() { + var red = Random.secure().nextInt(255); + var greed = Random.secure().nextInt(255); + var blue = Random.secure().nextInt(255); + return Color.fromARGB(255, red, greed, blue); +} + diff --git a/lib/widgets/elements/Form/Button/PopupMenuButton/demo.dart b/lib/widgets/elements/Form/Button/PopupMenuButton/demo.dart new file mode 100644 index 00000000..0015ee41 --- /dev/null +++ b/lib/widgets/elements/Form/Button/PopupMenuButton/demo.dart @@ -0,0 +1,144 @@ +/** + * Created with Android Studio. + * User: 一晟 + * Date: 2018/11/22 + * Time: 上午12:03 + * email: zhu.yan@alibaba-inc.com + * tartget: RaisedButton 的示例 + */ +import 'dart:math'; +import 'package:flutter/material.dart'; + +/* +* RaisedButton 默认按钮的实例 +* isDisabled:是否是禁用,isDisabled 默认为true +* */ +enum WhyFarther { harder, smarter, selfStarter, tradingCharter } + +class PopupMenuButtonDefault extends StatelessWidget { + final bool isDisabled; + final String type; + + const PopupMenuButtonDefault( + [String this.type = 'default1', bool this.isDisabled = true]) + : assert(isDisabled != null), + super(); + + @override + Widget build(BuildContext context) { + switch (type) { + case 'default1': + return default1(context); + break; + case 'default2': + return default2(context); + break; + case 'default3': + return default3(context); + break; + default: + return default1(context); + } + } + + Widget default1(BuildContext context) { + return PopupMenuButton( + onSelected: (WhyFarther result) { + // setState(() { _selection = result; }); + }, + itemBuilder: (BuildContext context) => >[ + const PopupMenuItem( + value: WhyFarther.harder, + child: Text('Working a lot harder'), + ), + const PopupMenuItem( + value: WhyFarther.smarter, + child: Text('Being a lot smarter'), + ), + const PopupMenuItem( + value: WhyFarther.selfStarter, + child: Text('Being a self-starter'), + ), + const PopupMenuItem( + value: WhyFarther.tradingCharter, + child: Text('Placed in charge of trading charter'), + ), + ], + ); + } + + Widget default2(BuildContext context) { + return PopupMenuButton( + child: Text('点我试试'), + onSelected: (String value) {}, + itemBuilder: (BuildContext context) => >[ + new PopupMenuItem(value: "选项一的内容", child: new Text("选项一")), + new PopupMenuItem(value: "选项二的内容", child: new Text("选项二")) + ]); + } + + Widget default3(BuildContext context) { + return PopupMenuButton( + //child: Text('点我试试'),// child 和 icon 不能同时用 + icon: Icon(Icons.menu), + onSelected: (String value) {}, + itemBuilder: (BuildContext context) => >[ + new PopupMenuItem(value: "选项一的内容", child: new Text("选项一")), + new PopupMenuItem(value: "选项二的内容", child: new Text("选项二")) + ]); + } +} + + +class PopupMenuButtonCustom extends StatelessWidget { + final widget; + final parent; + const PopupMenuButtonCustom([this.widget,this.parent]) + : super(); + @override + Widget build(BuildContext context) { + print('onSelected1:${widget.options}'); + final String selectStr = widget.options['defaultSelect']; + return PopupMenuButton( + //如果提供,则用于此按钮的widget。 + child: RaisedButton.icon( + disabledColor:Colors.red, + icon: Icon(Icons.message, size: 25.0,color:Colors.yellow), + label: Text( + '自定义按钮', style: TextStyle(color: Colors.white), + semanticsLabel: 'FLAT BUTTON'), + // onPressed:(){} // 激活状态按钮 + ), + // 打开时放置菜单的z坐标。这可以控制菜单下方阴影的大小。 + elevation:10.0, + // 如果提供,则用于此按钮的图标。 + //icon + // 菜单项的值(如果有),在菜单打开时应突出显示。 + //initialValue:options['defaultSelect'], + initialValue:selectStr, + // 按下按钮时调用以创建要在菜单中显示的项目。 + itemBuilder: (BuildContext context) => >[ + new PopupMenuItem(value: "选项一的内容", child: new Text("选项一")), + new PopupMenuItem(value: "选项二的内容", child: new Text("选项二")), + new PopupMenuItem(value: "选项三的内容", child: new Text("选项三")), + new PopupMenuItem(value: "选项四的内容", child: new Text("选项四")) + ], + // 应用于弹出菜单按钮的偏移量(x,y)。 + offset:Offset(0.0,50.0), + // 当用户在不选择项目的情况下关闭弹出菜单时调用。 + onCanceled:()=> + print('onCanceled'), + // 当用户从此按钮创建的弹出菜单中选择一个值时调用。 + onSelected:(String value){ + print('onSelected:${parent.setState}'); + parent.setState((){ + widget.options['defaultSelect']= value; + }); + }, + // 默认情况下匹配IconButton的8 dps填充。在某些情况下,特别是在此按钮作为列表项的尾随元素出现的情况下,能够将填充设置为零是有用的。 + padding:new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0.0, right: 0.0), + //描述按下按钮时将发生的操作的文本。 + tooltip:'这是信息' + ); + } +} \ No newline at end of file diff --git a/lib/widgets/elements/Form/Button/PopupMenuButton/index.dart b/lib/widgets/elements/Form/Button/PopupMenuButton/index.dart new file mode 100644 index 00000000..719acf4e --- /dev/null +++ b/lib/widgets/elements/Form/Button/PopupMenuButton/index.dart @@ -0,0 +1,90 @@ +/** + * Created with Android Studio. + * User: 一晟 + * Date: 2018/11/24 + * Time: 下午5:25 + * email: zhu.yan@alibaba-inc.com + * tartget: PopupMenusButton 的示例 + * 对应文档地址:https://docs.flutter.io/flutter/material/PopupMenuButton-class.html + */ + +import '../../../../../common/widget-demo.dart'; +import '../../../../../routers/application.dart'; +import 'dart:math'; +import 'package:flutter/material.dart'; +import 'package:flutter_markdown/flutter_markdown.dart'; +import './demo.dart' as popupMenuButton; + +const String _titleText0 = """ +### **简介** +> 按下时显示菜单 +- 当菜单因为选择了项目而被解除时调用onSelected。传递给onSelected的值是所选菜单项的值。 +- 可以提供 `child` 或 `icon` 中的一个,但不是能同时设置两者。如果提供了 `icon` ,则 `PopupMenuButton` 的行为类似于 `IconButton`。 +- 如果两者都为null,则创建一个标准 overflow icon(取决于平台)。 +"""; +const String _titleText1 = """ +### **基本用法** +> 此示例显示一个包含四个项目的菜单 +- 在枚举值之间进行选择,并_selection根据选择设置字段。 +"""; + +const String _titleText2 = """ +### **进阶用法** +> 此示例尝试调整所有属性,展示出效果 +- 默认选择第二个。 +- 再次打开,`PopupMenuItem` 保留上次的选择结果。 +"""; + +class Demo extends StatefulWidget { + static const String routeName = '/element/Form/Button/PopupMenuButton'; + final Map options = {'defaultSelect': '选项二的内容'}; + @override + final _DemoState self = _DemoState(); + _DemoState createState() => self; +} + +class _DemoState extends State { + String buttonShapeType = 'border'; // 边框类型 + void setButtonShapeType(){ + String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; + this.setState((){ + buttonShapeType = _buttonShapeType; + }); + } + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'PopupMenuButton', + codeUrl: '${Application.github['widgetsURL']}elements/Form/Button/RaisedButton/demo.dart', + child: allPopupMenuButton(widget,this), + docUrl: 'https://docs.flutter.io/flutter/material/PopupMenuButton-class.html', + ); + } +} + +Widget allPopupMenuButton(Demo widget,State parent){ + return Container( + //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + child: Column( + //mainAxisSize: MainAxisSize.max, + children: [ + MarkdownBody(data: _titleText0), + SizedBox(height: 20.0), + MarkdownBody(data: _titleText1), + Row( + crossAxisAlignment:CrossAxisAlignment.center, + mainAxisAlignment:MainAxisAlignment.spaceBetween, + children: [ + popupMenuButton.PopupMenuButtonDefault('default1'), + popupMenuButton.PopupMenuButtonDefault('default2'), + popupMenuButton.PopupMenuButtonDefault('default3'), + ], + ), + SizedBox(height: 20.0), + MarkdownBody(data: _titleText2), + SizedBox(height: 20.0), + popupMenuButton.PopupMenuButtonCustom(widget,parent), + SizedBox(height: 40.0) + ] + )); +} \ No newline at end of file diff --git a/lib/widgets/elements/Form/Button/RaisedButton/demo.dart b/lib/widgets/elements/Form/Button/RaisedButton/demo.dart new file mode 100644 index 00000000..45be5193 --- /dev/null +++ b/lib/widgets/elements/Form/Button/RaisedButton/demo.dart @@ -0,0 +1,130 @@ +/** + * Created with Android Studio. + * User: 一晟 + * Date: 2018/11/22 + * Time: 上午12:03 + * email: zhu.yan@alibaba-inc.com + * tartget: RaisedButton 的示例 + */ +import 'dart:math'; +import 'package:flutter/material.dart'; + +/* +* RaisedButton 默认按钮的实例 +* isDisabled:是否是禁用,isDisabled 默认为true +* */ +class RaisedButtonDefault extends StatelessWidget { + final bool isDisabled; + + const RaisedButtonDefault([bool this.isDisabled = true]) + : assert(isDisabled != null), + super(); + + @override + Widget build(BuildContext context) { + return RaisedButton( + // 文本内容 + child: const Text('默认按钮', semanticsLabel: 'FLAT BUTTON 1'), + onPressed: isDisabled ? () {} : null); + } +} + +/* +* RaisedButton.icon 默认按钮的实例 +* Create a text button from a pair of widgets that serve as the button's icon and label +* isDisabled:是否是禁用 +* */ +class RaisedButtonIconDefault extends StatelessWidget { + final bool isDisabled; + final IconData icon; + + const RaisedButtonIconDefault( + [bool this.isDisabled = true, IconData this.icon = Icons.add_circle]) + : super(); + + Color _randomColor() { + var red = Random.secure().nextInt(255); + var greed = Random.secure().nextInt(255); + var blue = Random.secure().nextInt(255); + return Color.fromARGB(255, red, greed, blue); + } + + @override + Widget build(BuildContext context) { + return RaisedButton.icon( + // 文本内容 + icon: Icon(icon, size: 25.0, color: _randomColor()), + label: Text('默认按钮', semanticsLabel: 'FLAT BUTTON 2'), + onPressed: isDisabled + ? () { + //_showMessage('点击了 FLAT BUTTON ', context); + } + : null); + } +} + +/* +* RaisedButton 自定义的实例 +* */ +class RaisedButtonCustom extends StatelessWidget { + final String txt; + final Color color; + final ShapeBorder shape; + final VoidCallback onPressed; + + const RaisedButtonCustom( + [String this.txt = '自定义按钮', + Color this.color = Colors.blueAccent, + ShapeBorder this.shape, + VoidCallback this.onPressed]) + : super(); + + @override + Widget build(BuildContext context) { + final _onPressed = onPressed; + return RaisedButton( + // 文本内容 + child: Text(txt, semanticsLabel: 'FLAT BUTTON 2'), + // 按钮颜色 + color: color, + // 按钮亮度 + colorBrightness: Brightness.dark, + // 高亮时的背景色 + //highlightColor: Colors.yellow, + // 失效时的背景色 + disabledColor: Colors.grey, + // 该按钮上的文字颜色,但是前提是不设置字体自身的颜色时才会起作用 + textColor: Colors.white, + // 按钮失效时的文字颜色,同样的不能使用文本自己的样式或者颜色时才会起作用 + disabledTextColor: Colors.grey, + // 按钮主题,主要用于与ButtonTheme和ButtonThemeData一起使用来定义按钮的基色,RaisedButton,RaisedButton,OutlineButton,它们是基于环境ButtonTheme配置的 + //ButtonTextTheme.accent,使用模版颜色的;ButtonTextTheme.normal,按钮文本是黑色或白色取决于。ThemeData.brightness;ButtonTextTheme.primary,按钮文本基于。ThemeData.primaryColor. + textTheme: ButtonTextTheme.normal, + // 按钮内部,墨汁飞溅的颜色,点击按钮时的渐变背景色,当你不设置高亮背景时才会看的更清楚 + splashColor: Colors.deepPurple, + // 抗锯齿能力,抗锯齿等级依次递增,none(默认),hardEdge,antiAliasWithSaveLayer,antiAlias + clipBehavior: Clip.antiAlias, + padding: + new EdgeInsets.only(bottom: 5.0, top: 5.0, left: 30.0, right: 30.0), + shape: (shape is ShapeBorder) + ? shape + : new Border.all( + // 设置边框样式 + color: Colors.grey, + width: 2.0, + style: BorderStyle.solid, + ), + // RaisedButton 的点击事件 + onPressed: () { + // Perform some action + if (_onPressed is VoidCallback) { + _onPressed(); + } + }, + // 改变高亮颜色回掉函数,一个按钮会触发两次,按下后改变时触发一次,松手后恢复原始颜色触发一次 + // 参数 bool,按下后true,恢复false + onHighlightChanged: (isClick) { + print(isClick); + }); + } +} diff --git a/lib/widgets/elements/Form/Button/RaisedButton/index.dart b/lib/widgets/elements/Form/Button/RaisedButton/index.dart index f6727bbf..465ad90b 100644 --- a/lib/widgets/elements/Form/Button/RaisedButton/index.dart +++ b/lib/widgets/elements/Form/Button/RaisedButton/index.dart @@ -1,21 +1,217 @@ +/** + * Created with 菜鸟手册. + * User: 一晟 + * Date: 2018/11/14 + * Time: 下午4:31 + * email: zhu.yan@alibaba-inc.com + * target: RaisedButton 的示例 + * 对应文档地址:https://docs.flutter.io/flutter/material/RaisedButton-class.html + */ +import '../../../../../common/widget-demo.dart'; +import '../../../../../routers/application.dart'; +import 'dart:math'; import 'package:flutter/material.dart'; +import 'package:flutter_markdown/flutter_markdown.dart'; +import './demo.dart' as raisedButton; + + +const String _raisedText0 = +"""### **简介** +> Raised button “凸起按钮” +- Raised button 基于 a Material widget 窗口widget,按下按钮时,Material.elevation 会增加。 +- 使用 Raised button 可将尺寸添加到大多数平面布局中。 +- 例如在复杂的内容列表中,或在宽阔的空间中。避免在已经提出的内容(例如对话框或卡片)上使用 Raised button 。 +"""; + +const String _raisedText1 = +"""### **基本用法** +> 参数的默认的按钮和禁用按钮 +- 如果onPressed回调为null,则该按钮将被禁用,不会对触摸做出反应,并且将按 disabledColor 属性而不是color属性指定的颜色进行着色。 +- 如果您尝试更改按钮的颜色并且没有任何效果,请检查您是否正在传递非null onPressed处理程序。"""; + + +const String _raisedText2 = +"""### **进阶用法1** +> RaisedButton.icon 的用方法,按钮图标和标签的widget创建文本按钮。"""; + +const String _raisedText3 = +"""### **进阶用法2** +> 更改项参数的自定义,比如:边框,点击效果,内容文字,颜色,圆角等 +- Raised buttons 按钮具有全帽标签,一些内部填充和一些定义的尺寸。 +- 如果您想要水龙头的墨水效果,但又不想使用按钮,请考虑直接使用InkWell。 +- Raised buttons 的最小尺寸为88.0×36.0,可以用ButtonTheme 覆盖。 +- 通过 shape 属性的设置,改变边框样式和圆角。 +"""; + class Demo extends StatefulWidget { static const String routeName = '/element/Form/Button/RaisedButton'; - _Demo createState() => _Demo(); + + @override + _DemoState createState() => _DemoState(); } -class _Demo extends State { - +class _DemoState extends State { + String buttonShapeType = 'border'; // 边框类型 + void setButtonShapeType(){ + String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; + this.setState((){ + buttonShapeType = _buttonShapeType; + }); + } + @override Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: Text("FlatButton"), - ), - body: Container( - child: RaisedButton(onPressed: () {}, child: Text("BUtton")) - ) + return WidgetDemo( + title: 'RaisedButton', + codeUrl: '${Application.github['widgetsURL']}elements/Form/Button/RaisedButton/demo.dart', + child: allRaisedButtons(context,this), + docUrl: 'https://docs.flutter.io/flutter/material/RaisedButton-class.html', ); - } } + +/** + * 所有的 RaisedButton 按钮 + */ +Widget allRaisedButtons(BuildContext context,_DemoState that){ + final ShapeBorder buttonShape = drawShape(that.buttonShapeType); + return Container( + //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + child: Column( + //mainAxisSize: MainAxisSize.max, + children: [ + MarkdownBody(data: _raisedText0), + textAlignBar(_raisedText1), + ButtonBar( + alignment: MainAxisAlignment.spaceAround, + mainAxisSize: MainAxisSize.max, + children: [ + raisedButton.RaisedButtonDefault(), + SizedBox(width: 20.0), // 间距 + raisedButton.RaisedButtonDefault(false), + ], + ), + textAlignBar(_raisedText2), + ButtonBar( + alignment: MainAxisAlignment.spaceAround, + //mainAxisSize: MainAxisSize.min, + children: [ + raisedButton.RaisedButtonIconDefault(), + raisedButton.RaisedButtonIconDefault(false), + ], + ), + ButtonBar( + alignment: MainAxisAlignment.spaceAround, + //mainAxisSize: MainAxisSize.min, + children: [ + raisedButton.RaisedButtonIconDefault(true, Icons.android), + raisedButton.RaisedButtonIconDefault(true, Icons.announcement), + ], + ), + textAlignBar(_raisedText3), + SizedBox(height: 10.0), + raisedButton.RaisedButtonCustom('主要按钮',Colors.blue,buttonShape), + SizedBox(height: 10.0), + raisedButton.RaisedButtonCustom('成功按钮',Colors.green,buttonShape), + SizedBox(height: 10.0), + raisedButton.RaisedButtonCustom('信息按钮',Colors.grey,buttonShape), + SizedBox(height: 10.0), + raisedButton.RaisedButtonCustom('警告按钮',Colors.orange,buttonShape), + SizedBox(height: 10.0), + raisedButton.RaisedButtonCustom('危险按钮',Colors.pink,buttonShape), + SizedBox(height: 10.0), + raisedButton.RaisedButtonCustom( '点击切换,按钮的圆角', Colors.blue, buttonShape, + () => that.setButtonShapeType()), + SizedBox(height: 20.0) + ]) + ); +} + +/* + * alert 弹框 + * context:容器的父级 + * */ +void _showMessage(String name, BuildContext context) { + showDialog( + // alert 的父级 + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: new Text('提示'), + content: new Text(name), + actions: [ + new FlatButton( + // alert 的取消按钮 + onPressed: () { + // 取消的事件 + Navigator.of(context).pop(true); + }, + child: new Text('取消')) + ]); + } + ); +} + +/* +* 带align的text +* */ +Widget textAlignBar(String txt){ + //style: new TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left + return new Align( + alignment: FractionalOffset.centerLeft, + child: Column( + children: [ + SizedBox(height: 20.0), + MarkdownBody(data: txt) + //new Text(txt, style: new TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) + ]) + ); +} + +/* +* 绘制边框信息,比如是否有边框,是否是圆角 +* */ +ShapeBorder drawShape(String type){ + final Color _color = _randomColor(); + final borderWidth = Random.secure().nextInt(5).toDouble(); + final radiusWidth = Random.secure().nextInt(50).toDouble(); + + switch(type){ + case 'border': + return Border.all( + // 设置边框样式 + width: borderWidth, + color: _color, + style: BorderStyle.solid, + ); + break; + case 'radius': + return RoundedRectangleBorder( + side:new BorderSide( // 保留原来的边框样式 + width: borderWidth, + color: _color, + style: BorderStyle.solid, + ), + borderRadius: BorderRadius.only( + topRight: Radius.circular(radiusWidth), + topLeft: Radius.circular(radiusWidth), + bottomLeft: Radius.circular(radiusWidth), + bottomRight: Radius.circular(radiusWidth), + ), + ); + break; + default: + return null; + } +} + +/* +* 取随机颜色 +* */ +Color _randomColor() { + var red = Random.secure().nextInt(255); + var greed = Random.secure().nextInt(255); + var blue = Random.secure().nextInt(255); + return Color.fromARGB(255, red, greed, blue); +} + diff --git a/lib/widgets/elements/Form/Button/RawMaterialButton/demo.dart b/lib/widgets/elements/Form/Button/RawMaterialButton/demo.dart new file mode 100644 index 00000000..f2386338 --- /dev/null +++ b/lib/widgets/elements/Form/Button/RawMaterialButton/demo.dart @@ -0,0 +1,85 @@ +/** + * Created with Android Studio. + * User: 一晟 + * Date: 2018/11/22 + * Time: 上午12:03 + * email: zhu.yan@alibaba-inc.com + * tartget: RawMaterialButton 的示例 + */ +import 'dart:math'; +import 'package:flutter/material.dart'; + +/* +* RawMaterialButton 默认按钮的实例 +* isDisabled:是否是禁用,isDisabled 默认为true +* */ +class RawMaterialButtonDefault extends StatelessWidget { + final bool isDisabled; + + const RawMaterialButtonDefault([bool this.isDisabled = true]) + : assert(isDisabled != null), + super(); + + @override + Widget build(BuildContext context) { + return RawMaterialButton( + // 文本内容 + child: const Text('默认按钮', semanticsLabel: 'FLAT BUTTON 1'), + onPressed: isDisabled ? () {} : null); + } +} + +/* +* RawMaterialButton 自定义的实例 +* */ +class RawMaterialButtonCustom extends StatelessWidget { + final String txt; + final Color color; + final ShapeBorder shape; + final VoidCallback onPressed; + + const RawMaterialButtonCustom( + [String this.txt = '自定义按钮', + Color this.color = Colors.blueAccent, + ShapeBorder this.shape, + VoidCallback this.onPressed]) + : super(); + + @override + Widget build(BuildContext context) { + final _onPressed = onPressed; + final _fontSize = (Random.secure().nextInt(10)+15).toDouble(); + return RawMaterialButton( + // 使用Material.textStyle为按钮的子项定义默认文本样式。 + textStyle:TextStyle(color: _randomColor(),fontSize: _fontSize), + // 定义形状和高程的动画更改的持续时间 + animationDuration:Duration(seconds: 1), + // 文本内容 + child: Text(txt, semanticsLabel: 'FLAT BUTTON 2'), + // 高亮时的背景色 + highlightColor: Colors.yellow, + // 按钮内部,墨汁飞溅的颜色,点击按钮时的渐变背景色,当你不设置高亮背景时才会看的更清楚 + splashColor: _randomColor(), + // 抗锯齿能力,抗锯齿等级依次递增,none(默认),hardEdge,antiAliasWithSaveLayer,antiAlias + clipBehavior: Clip.antiAlias, + padding: new EdgeInsets.only(bottom: 5.0, top: 5.0, left: 30.0, right: 30.0), + //高亮时候的阴影 + highlightElevation: 10.0, + // 按钮材质的形状 + // shape: shape, + // RawMaterialButton 的点击事件 + onPressed: () { + // Perform some action + if (_onPressed is VoidCallback) { + _onPressed(); + } + }); + } +} + +Color _randomColor() { + var red = Random.secure().nextInt(255); + var greed = Random.secure().nextInt(255); + var blue = Random.secure().nextInt(255); + return Color.fromARGB(255, red, greed, blue); +} diff --git a/lib/widgets/elements/Form/Button/RawMaterialButton/index.dart b/lib/widgets/elements/Form/Button/RawMaterialButton/index.dart new file mode 100644 index 00000000..818aeccc --- /dev/null +++ b/lib/widgets/elements/Form/Button/RawMaterialButton/index.dart @@ -0,0 +1,189 @@ +/** + * Created with 菜鸟手册. + * User: 一晟 + * Date: 2018/11/14 + * Time: 下午4:31 + * email: zhu.yan@alibaba-inc.com + * target: RawMaterialButton 的示例 + * 对应文档地址:https://docs.flutter.io/flutter/material/RawMaterialButton-class.html + */ +import '../../../../../common/widget-demo.dart'; +import '../../../../../routers/application.dart'; +import 'dart:math'; +import 'package:flutter/material.dart'; + +import 'package:flutter_markdown/flutter_markdown.dart'; +import './demo.dart' as rawMaterialButton; + + +const String _rawMaterialText0 = +"""### **简介** +> RawMaterial button “RawMaterial 按钮” +- 基于Semantics,Material和InkWell 小部件创建按钮。 +- 此类不使用当前Theme或ButtonTheme来计算未指定参数的默认值。它旨在用于自定义材质按钮,可选择包含主题或特定于应用程序源的默认值。 +"""; + +const String _rawMaterialText1 = +"""### **基本用法** +> 参数的默认的按钮和禁用按钮 +"""; + +const String _rawMaterialText2 = +"""### **进阶用法** +> 更改项参数的自定义 +"""; + +class Demo extends StatefulWidget { + static const String routeName = '/element/Form/Button/RawMaterialButton'; + + @override + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + String buttonShapeType = 'border'; // 边框类型 + void setButtonShapeType(){ + //String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; + this.setState((){ + //buttonShapeType = _buttonShapeType; + }); + } + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'RawMaterialButton', + codeUrl: '${Application.github['widgetsURL']}elements/Form/Button/RawMaterialButton/demo.dart', + child: allRawMaterialButtons(context,this), + docUrl: 'https://docs.flutter.io/flutter/material/RawMaterialButton-class.html', + ); + } +} + +/** + * 所有的 RawMaterialButton 按钮 + */ +Widget allRawMaterialButtons(BuildContext context,_DemoState that){ + final ShapeBorder buttonShape = drawShape(that.buttonShapeType); + return Container( + //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + child: Column( + //mainAxisSize: MainAxisSize.max, + children: [ + MarkdownBody(data: _rawMaterialText0), + textAlignBar(_rawMaterialText1), + ButtonBar( + alignment: MainAxisAlignment.spaceAround, + mainAxisSize: MainAxisSize.max, + children: [ + rawMaterialButton.RawMaterialButtonDefault(), + SizedBox(width: 20.0), // 间距 + rawMaterialButton.RawMaterialButtonDefault(false), + ], + ), + textAlignBar(_rawMaterialText2), + SizedBox(height: 10.0), + rawMaterialButton.RawMaterialButtonCustom('主要按钮',Colors.blue,buttonShape), + SizedBox(height: 10.0), + rawMaterialButton.RawMaterialButtonCustom('成功按钮',Colors.green,buttonShape), + SizedBox(height: 10.0), + rawMaterialButton.RawMaterialButtonCustom('信息按钮',Colors.grey,buttonShape), + SizedBox(height: 10.0), + rawMaterialButton.RawMaterialButtonCustom('警告按钮',Colors.orange,buttonShape), + SizedBox(height: 10.0), + rawMaterialButton.RawMaterialButtonCustom('危险按钮',Colors.pink,buttonShape), + SizedBox(height: 10.0), + rawMaterialButton.RawMaterialButtonCustom( '点击切换,观察字体变化', Colors.blue, buttonShape, + () => that.setButtonShapeType()), + SizedBox(height: 20.0) + ]) + ); +} + +/* + * alert 弹框 + * context:容器的父级 + * */ +void _showMessage(String name, BuildContext context) { + showDialog( + // alert 的父级 + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: new Text('提示'), + content: new Text(name), + actions: [ + new FlatButton( + // alert 的取消按钮 + onPressed: () { + // 取消的事件 + Navigator.of(context).pop(true); + }, + child: new Text('取消')) + ]); + } + ); +} + +/* +* 带align的text +* */ +Widget textAlignBar(String txt){ + //style: new TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left + return new Align( + alignment: FractionalOffset.centerLeft, + child: Column( + children: [ + SizedBox(height: 20.0), + MarkdownBody(data: txt) + //new Text(txt, style: new TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) + ]) + ); +} + +/* +* 绘制边框信息,比如是否有边框,是否是圆角 +* */ +ShapeBorder drawShape(String type){ + final Color _color = _randomColor(); + final borderWidth = Random.secure().nextInt(5).toDouble(); + final radiusWidth = Random.secure().nextInt(50).toDouble(); + + switch(type){ + case 'border': + return Border.all( + // 设置边框样式 + width: borderWidth, + color: _color, + style: BorderStyle.solid, + ); + break; + case 'radius': + return RoundedRectangleBorder( + side:new BorderSide( // 保留原来的边框样式 + width: borderWidth, + color: _color, + style: BorderStyle.solid, + ), + borderRadius: BorderRadius.only( + topRight: Radius.circular(radiusWidth), + topLeft: Radius.circular(radiusWidth), + bottomLeft: Radius.circular(radiusWidth), + bottomRight: Radius.circular(radiusWidth), + ), + ); + break; + default: + return null; + } +} + +/* +* 取随机颜色 +* */ +Color _randomColor() { + var red = Random.secure().nextInt(255); + var greed = Random.secure().nextInt(255); + var blue = Random.secure().nextInt(255); + return Color.fromARGB(255, red, greed, blue); +} + diff --git a/lib/widgets/elements/Form/Button/index.dart b/lib/widgets/elements/Form/Button/index.dart index 2ce0834d..cdcff0bc 100644 --- a/lib/widgets/elements/Form/Button/index.dart +++ b/lib/widgets/elements/Form/Button/index.dart @@ -3,6 +3,12 @@ import "package:flutter/material.dart"; import 'FlatButton/index.dart' as FlatButton; import 'RaisedButton/index.dart' as RaisedButton; +import 'OutlineButton/index.dart' as OutlineButton; +import 'IconButton/index.dart' as IconButton; +import 'PopupMenuButton/index.dart' as PopupMenuButton; +import 'FloatingActionButton/index.dart' as FloatingActionButton; +import 'RawMaterialButton/index.dart' as RawMaterialButton; +import 'DropdownButton/index.dart' as DropdownButton; List widgetPoints = [ @@ -16,4 +22,34 @@ List widgetPoints = [ routerName: RaisedButton.Demo.routeName, buildRouter: (BuildContext context) => RaisedButton.Demo(), ), + WidgetPoint( + name: 'OutlineButton', + routerName: OutlineButton.Demo.routeName, + buildRouter: (BuildContext context) => OutlineButton.Demo(), + ), + WidgetPoint( + name: 'IconButton', + routerName: IconButton.Demo.routeName, + buildRouter: (BuildContext context) => IconButton.Demo(), + ), + WidgetPoint( + name: 'PopupMenuButton', + routerName: PopupMenuButton.Demo.routeName, + buildRouter: (BuildContext context) => PopupMenuButton.Demo(), + ), + WidgetPoint( + name: 'FloatingActionButton', + routerName: FloatingActionButton.Demo.routeName, + buildRouter: (BuildContext context) => FloatingActionButton.Demo(), + ), + WidgetPoint( + name: 'RawMaterialButton', + routerName: RawMaterialButton.Demo.routeName, + buildRouter: (BuildContext context) => RawMaterialButton.Demo(), + ), + WidgetPoint( + name: 'DropdownButton', + routerName: DropdownButton.Demo.routeName, + buildRouter: (BuildContext context) => DropdownButton.Demo(), + ) ]; \ No newline at end of file diff --git a/lib/widgets/elements/Form/CheckBox/Checkbox/demo.dart b/lib/widgets/elements/Form/CheckBox/Checkbox/demo.dart new file mode 100644 index 00000000..489225d2 --- /dev/null +++ b/lib/widgets/elements/Form/CheckBox/Checkbox/demo.dart @@ -0,0 +1,74 @@ +/** + * Created with Android Studio. + * User: 一晟 + * Date: 2018/11/22 + * Time: 上午12:03 + * email: zhu.yan@alibaba-inc.com + * tartget: Checkbox 的示例 + */ +import 'dart:math'; +import 'package:flutter/material.dart'; + +/* +* Checkbox 默认按钮的实例 +* index 当前checkbox 的索引值 +* */ +class CheckboxDefault extends StatefulWidget{ + final int index; + final parent; + const CheckboxDefault([this.parent,int this.index = -1]) : super(); + @override + State createState() =>_CheckboxDefault(); +} +class _CheckboxDefault extends State { + bool isChecked=false; + Color color = _randomColor(); // 注意和下面的 StatelessWidget 里的 _randomColor 区别 + @override + Widget build(BuildContext context) { + return Checkbox( + activeColor: color, + tristate:false, + value: isChecked, + onChanged: (bool bol) { + setState((){ + isChecked = bol; + }); + } + ); + } +} + +/* +* Checkbox 默认按钮的实例 +* index 当前checkbox 的索引值 +* */ +class CheckboxSelect extends StatelessWidget { + final int index; + final widget; + final parent; + + const CheckboxSelect([this.widget,this.parent,int this.index = -1]) + : super(); + + @override + Widget build(BuildContext context) { + Color color = _randomColor(); + return Checkbox( + activeColor: color, + tristate:false, + value: parent.selectValue == this.index, + onChanged: (bool bol) { + parent.setState((){ + parent.selectValue = bol ? this.index : -1; + }); + } + ); + } +} + +Color _randomColor() { + var red = Random.secure().nextInt(255); + var greed = Random.secure().nextInt(255); + var blue = Random.secure().nextInt(255); + return Color.fromARGB(255, red, greed, blue); +} diff --git a/lib/widgets/elements/Form/CheckBox/Checkbox/index.dart b/lib/widgets/elements/Form/CheckBox/Checkbox/index.dart new file mode 100644 index 00000000..7410ce50 --- /dev/null +++ b/lib/widgets/elements/Form/CheckBox/Checkbox/index.dart @@ -0,0 +1,112 @@ +/** + * Created with 菜鸟手册. + * User: 一晟 + * Date: 2018/11/14 + * Time: 下午4:31 + * email: zhu.yan@alibaba-inc.com + * target: Checkbox 的示例 + * 对应文档地址:https://docs.flutter.io/flutter/material/Checkbox-class.html + */ +import '../../../../../common/widget-demo.dart'; +import '../../../../../routers/application.dart'; +import 'dart:math'; +import 'package:flutter/material.dart'; + +import 'package:flutter_markdown/flutter_markdown.dart'; +import './demo.dart' as checkbox; + +const String _checkboxText0 = +"""### **简介** +> checkbox “复选框” +- 复选框本身不保持任何状态 +- 当复选框的状态发生变化时,窗口小部件会调用onChanged回调。 +- 大多数使用复选框的小部件将侦听onChanged回调,并使用新值重建复选框以更新复选框的可视外观。"""; + + +const String _checkboxText1 = +"""### **基本用法** +> 下面示例展示多个颜色(随机)样式的 `checkbox` +- 一个多选的 `checkbox` +"""; + +const String _checkboxText2 = +"""### **进阶用法** +> 下面示例展示多个颜色(随机)样式的 `checkbox` +- 一个单选 `checkbox` 操作 +"""; + +class Demo extends StatefulWidget { + static const String routeName = '/element/Form/CheckBox/Checkbox'; + + @override + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + int selectValue = -1; + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'Checkbox', + codeUrl: '${Application.github['widgetsURL']}elements/Form/Checkbox/Checkbox/demo.dart', + child: allCheckboxs(context,this), + docUrl: 'https://docs.flutter.io/flutter/material/Checkbox-class.html', + ); + } +} + +/** + * 所有的 Checkbox 按钮 + */ +Widget allCheckboxs(BuildContext context,_DemoState that){ + return Container( + //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + child: Column( + //mainAxisSize: MainAxisSize.max, + children: [ + MarkdownBody(data: _checkboxText0), + textAlignBar(_checkboxText1), + Row( + mainAxisAlignment : MainAxisAlignment.spaceAround, + mainAxisSize: MainAxisSize.max, + children:[ + checkbox.CheckboxDefault(that,0), + checkbox.CheckboxDefault(that,1), + checkbox.CheckboxDefault(that,2), + checkbox.CheckboxDefault(that,3), + checkbox.CheckboxDefault(that,4), + ], + ), + textAlignBar(_checkboxText2), + Row( + mainAxisAlignment : MainAxisAlignment.spaceAround, + mainAxisSize: MainAxisSize.max, + children: [ + checkbox.CheckboxSelect(context.widget,that,0), + checkbox.CheckboxSelect(context.widget,that,1), + checkbox.CheckboxSelect(context.widget,that,2), + checkbox.CheckboxSelect(context.widget,that,3), + checkbox.CheckboxSelect(context.widget,that,4), + ], + ), + SizedBox(width: 20.0), // 间距 + ]) + ); +} + +/* +* 带align的text +* */ +Widget textAlignBar(String txt){ + return new Align( + alignment: FractionalOffset.centerLeft, + child: Column( + children: [ + SizedBox(height: 20.0), + MarkdownBody(data: txt) + //new Text(txt, style: new TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) + ]) + ); +} + + diff --git a/lib/widgets/elements/Form/CheckBox/CheckboxListTile/demo.dart b/lib/widgets/elements/Form/CheckBox/CheckboxListTile/demo.dart new file mode 100644 index 00000000..5af9a5d3 --- /dev/null +++ b/lib/widgets/elements/Form/CheckBox/CheckboxListTile/demo.dart @@ -0,0 +1,130 @@ +/** + * Created with Android Studio. + * User: ryan + * Date: 2018/12/23 + * Time: 下午6:08 + * email: zhu.yan@alibaba-inc.com + * tartget: CheckboxListTile 的示例 + */ + +import 'dart:math'; +import 'package:flutter/material.dart'; + +/* +* Checkbox 默认按钮的实例 +* index 当前checkbox 的索引值 +* */ +class CheckboxListTileStateDefault extends StatefulWidget { + const CheckboxListTileStateDefault() : super(); + + @override + State createState() => _CheckboxListTileStateDefault(); +} + +/* +* CheckboxListTile 默认的实例,有状态 +* */ +class _CheckboxListTileStateDefault extends State { + bool _value = false; + void _valueChanged(bool value) { + for (var i = 0; i < isChecks.length; i++) { + isChecks[i] = value; + } + setState(() => _value = value); + } + bool isCheck=false; + List isChecks=[false,false,false,false]; + @override + Widget build(BuildContext context) { + return Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + new Center( + child: CheckboxListTile( + value: _value, + selected:true,// 默认文字是否高亮 + onChanged: _valueChanged, + dense: false,// 文字是否对齐 图标高度 + isThreeLine: false,// 文字是否三行显示 + title: Text('全部'), // 主标题 + controlAffinity: ListTileControlAffinity.trailing, // 将控件放在何处相对于文本,leading 按钮显示在文字后面,platform,trailing 按钮显示在文字前面 + subtitle: Text('勾选下列全部结果'), // 标题下方显示的副标题 + secondary: Icon(Icons.archive), // 从复选框显示在磁贴另一侧的小组件 + activeColor: Colors.red, // 选中此复选框时要使用的颜色 + ), + ), + new Center( + child: new CheckboxListTile( + value: isChecks[0], + title: new Text('选项1'), + activeColor: _value ? Colors.red : Colors.green, + controlAffinity: ListTileControlAffinity.platform, + onChanged: (bool){ + setState(() { + isChecks[0]=bool; + }); + }), + ), + new Center( + child: new CheckboxListTile( + value: isChecks[1], + title: new Text('选项2'), + activeColor: _value ? Colors.red : Colors.green, + controlAffinity: ListTileControlAffinity.platform, + onChanged: (bool){ + setState(() { + isChecks[1]=bool; + }); + }), + ), + new Center( + child: new CheckboxListTile( + value: isChecks[2], + title: new Text('选项3'), + activeColor: _value ? Colors.red : Colors.green, + controlAffinity: ListTileControlAffinity.platform, + onChanged: (bool){ + setState(() { + isChecks[2]=bool; + }); + }), + ), + new Center( + child: new CheckboxListTile( + value: isChecks[3], + title: new Text('选项4'), + activeColor: _value ? Colors.red : Colors.green, + controlAffinity: ListTileControlAffinity.platform, + onChanged: (bool){ + setState(() { + isChecks[3]=bool; + }); + }), + ) + ], + ); + } +} + +/* +* CheckboxListTile 默认的实例,无状态 +* */ +class CheckboxListTileDefault extends StatelessWidget { + final widget; + final parant; + const CheckboxListTileDefault ([this.widget,this.parant]) + : super(); + + @override + Widget build(BuildContext context) { + return CheckboxListTile( + title: Text('一个简单的例子'), + activeColor: Colors.red, + value: widget.valBool, + onChanged: (bool value) { + parant.setState(()=> widget.valBool = value); + }, + secondary: const Icon(Icons.hourglass_empty), + ); + } +} \ No newline at end of file diff --git a/lib/widgets/elements/Form/CheckBox/CheckboxListTile/index.dart b/lib/widgets/elements/Form/CheckBox/CheckboxListTile/index.dart new file mode 100644 index 00000000..87a801b4 --- /dev/null +++ b/lib/widgets/elements/Form/CheckBox/CheckboxListTile/index.dart @@ -0,0 +1,93 @@ +/** + * Created with Android Studio. + * User: ryan + * Date: 2018/12/23 + * Time: 下午6:07 + * email: zhu.yan@alibaba-inc.com + * tartget: CheckboxListTile 的示例 + */ +import '../../../../../common/widget-demo.dart'; +import '../../../../../routers/application.dart'; +import 'dart:math'; +import 'package:flutter/material.dart'; +import 'package:flutter/scheduler.dart'; + +import 'package:flutter_markdown/flutter_markdown.dart'; +import './demo.dart' as CheckboxListTileDemo; + +const String _CheckboxListTileText0 = +"""### **简介** +> CheckboxListTile “下拉复选框” +- 带有复选框的ListTile,带有标签的复选框。 +- 整个列表图块是交互式的:点击图块中的任意位置可切换复选框。 +"""; + + +const String _CheckboxListTileText1 = +"""### **基本用法** +> CheckboxListTile 的属性特征 +- Checkbox类似的命名属性,比如:onChanged和activeColor。 +- 和ListTile类似的命名属性,比如:title, subtitle, isThreeLine,dense。 +- selected属性和ListTile.selected 属性类似,但使用的颜色是activeColor属性,默认为当前Theme的颜色。 +- onChanged 回调函数为 null,显示禁用 +"""; + +const String _CheckboxListTileText2 = +"""### **进阶用法** +> CheckboxListTile 单选和全选的示例 +"""; + +class Demo extends StatefulWidget { + static const String routeName = '/element/Form/Checkbox/CheckboxListTile'; + bool valBool = true; + @override + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'CheckboxListTile', + codeUrl: '${Application.github['widgetsURL']}elements/Form/Checkbox/CheckboxListTile/demo.dart', + child: allCheckboxs(context, this), + docUrl: 'https://docs.flutter.io/flutter/material/CheckboxListTile-class.html', + ); + } +} + +/** + * 所有的 CheckboxListTile widget + * context: 运行上下文 + * that: 指向有状态的 StatefulWidget + */ +Widget allCheckboxs(BuildContext context, _DemoState that) { + return Container( + //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + child: Column( + //mainAxisSize: MainAxisSize.max, + children:[ + MarkdownBody(data: _CheckboxListTileText0), + textAlignBar(_CheckboxListTileText1), + CheckboxListTileDemo.CheckboxListTileDefault(context.widget,that),// CheckboxListTile 不能放在 Row 里... + textAlignBar(_CheckboxListTileText2), + CheckboxListTileDemo.CheckboxListTileStateDefault(), + SizedBox(height: 20.0), + ]) + ); +} + +/* +* 带align的text +* */ +Widget textAlignBar(String txt) { + return new Align( + alignment: FractionalOffset.centerLeft, + child: Column( + children: [ + SizedBox(height: 20.0), + MarkdownBody(data: txt) + ]) + ); +} + diff --git a/lib/widgets/elements/Form/CheckBox/index.dart b/lib/widgets/elements/Form/CheckBox/index.dart index a47f241e..5a8d53c0 100644 --- a/lib/widgets/elements/Form/CheckBox/index.dart +++ b/lib/widgets/elements/Form/CheckBox/index.dart @@ -1 +1,19 @@ -import 'package:flutter/material.dart'; +import '../../../../model/widget.dart'; +import "package:flutter/material.dart"; + +import 'Checkbox/index.dart' as Checkbox; +import 'CheckboxListTile/index.dart' as CheckboxListTile; + + +List widgetPoints = [ + WidgetPoint( + name: 'Checkbox', + routerName: Checkbox.Demo.routeName, + buildRouter: (BuildContext context) => Checkbox.Demo(), + ), + WidgetPoint( + name: 'CheckboxListTile', + routerName: CheckboxListTile.Demo.routeName, + buildRouter: (BuildContext context) => CheckboxListTile.Demo(), + ) +]; \ No newline at end of file diff --git a/lib/widgets/elements/Form/Input/TextField/index.dart b/lib/widgets/elements/Form/Input/TextField/index.dart index 351f8b96..3a4e6550 100644 --- a/lib/widgets/elements/Form/Input/TextField/index.dart +++ b/lib/widgets/elements/Form/Input/TextField/index.dart @@ -1,14 +1,71 @@ +/** + * Created with 菜鸟手册. + * User: 一晟 + * Date: 2018/11/14 + * Time: 下午4:31 + * email: zhu.yan@alibaba-inc.com + * target: TextField 的示例 + * 对应文档地址:https://docs.flutter.io/flutter/material/TextField-class.html + */ + +import '../../../../../common/widget_demo.dart'; import 'package:flutter/material.dart'; +import './text_field_demo.dart' ; + + +const String _textFieldText0 = +"""### **简介** +> Text Field “文本字段” +- 文本字段允许用户输入文本,无论是硬件键盘还是屏幕键盘。 +- 每当用户更改字段中的文本时,文本字段就会调用Onchange的回调。 +- 如果用户指示他们在字段中输入完成(例如,通过按软键盘上的按钮),则文本字段调用onSubmitted回调。 +"""; + +const String _textFieldText1 = +"""### **基本用法** +> 参数的默认的按钮和禁用按钮 +- 默认情况下,文本字段具有在文本字段下方绘制分隔符的修饰。 +- 您可以使用装饰属性来控制装饰,例如通过添加标签或图标。如果将装饰属性设置为空,则将完全删除装饰,包括装饰引入的额外填充,以节省标签的空间。 +- 如果装饰是非null(这是默认的),文本字段需要它的祖先之一是一个材质widget。当文本字段被敲击时,墨水溅到材料上的油漆被触发。 +- 若要将TeXFieldField集成到其他FieldFieldWrices窗体中,请考虑使用TeTFrimeField。"""; + +const String _textFieldText2 = +"""### **进阶用法** +> 实现稍微复杂点的效果,键盘就变成了数字优先,为输入框做一些其他的效果,如提示文字,icon、标签文字等 +- 增加一个keyboardType属性,把keyboardType设置为 TextInputType.number ,让TextField获得焦点的时候弹出的键盘就变成了数字优先。 +- 新增decoration属性,设置相关属性,可以发现当我们的TextField获得焦点时,图标会自动变色,提示文字会自动上移。 +- onChanged是每次输入框内每次文字变更触发的回调,onSubmitted是用户提交而触发的回调。 +- 每当用户改变输入框内的文字,都会在控制台输出现在的字符串.与onSubmitted用法相同。 +"""; class Demo extends StatefulWidget { - _Demo createState() => _Demo(); + static const String routeName = 'elements/Form/Input/TextField'; + @override + _DemoState createState() => _DemoState(); } -class _Demo extends State { - +class _DemoState extends State { + String buttonShapeType = 'border'; // 边框类型 + void setButtonShapeType(){ + String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; + this.setState((){ + buttonShapeType = _buttonShapeType; + }); + } + @override Widget build(BuildContext context) { - return Container( - child: TextField() + return WidgetDemo( + title: 'TextField', + codeUrl: 'elements/Form/Input/TextField/text_field_demo.dart', + contentList: [ + _textFieldText0, + _textFieldText1, + DefaultTextField(), + _textFieldText2, + CustomTextField() + ], + docUrl: 'https://docs.flutter.io/flutter/material/TextField-class.html', ); } } + diff --git a/lib/widgets/elements/Form/Input/TextField/text_field_demo.dart b/lib/widgets/elements/Form/Input/TextField/text_field_demo.dart new file mode 100644 index 00000000..b3e640f0 --- /dev/null +++ b/lib/widgets/elements/Form/Input/TextField/text_field_demo.dart @@ -0,0 +1,48 @@ +import 'package:flutter/material.dart'; + +/* +* 基本示例 +* */ +class DefaultTextField extends StatelessWidget { + @override + Widget build(BuildContext context) { + return new Container( + padding: const EdgeInsets.all(30.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, //文本是起始端对齐 + children: [ + Text('下面是基本输入框:', + style: TextStyle(fontSize: 15.5, height: 1.2, color: Colors.blue), + textAlign: TextAlign.left), + TextField() + ], + ), + ); + } +} + +/* +* 稍微复杂些的 TextField +* */ +class CustomTextField extends StatelessWidget { + void _textFieldChanged(String str) { + print(str); + } + + @override + Widget build(BuildContext context) { + return new Container( + padding: const EdgeInsets.all(30.0), + child: TextField( + keyboardType: TextInputType.number, + decoration: InputDecoration( + contentPadding: EdgeInsets.all(10.0), + icon: Icon(Icons.text_fields), + labelText: '请输入你的姓名)', + helperText: '请输入你的真实姓名', + ), + onChanged: _textFieldChanged, + autofocus: false, + )); + } +} diff --git a/lib/widgets/elements/Form/Input/index.dart b/lib/widgets/elements/Form/Input/index.dart index a47f241e..8e8cfc9f 100644 --- a/lib/widgets/elements/Form/Input/index.dart +++ b/lib/widgets/elements/Form/Input/index.dart @@ -1 +1,21 @@ -import 'package:flutter/material.dart'; +/** + * Created with 菜鸟手册. + * User: 一晟 + * Date: 2018/11/14 + * Time: 下午4:31 + * email: zhu.yan@alibaba-inc.com + * target: RaisedButton 的示例 + * 对应文档地址:https://docs.flutter.io/flutter/material/RaisedButton-class.html + */ +import '../../../../model/widget.dart'; +import "package:flutter/material.dart"; + +import './TextField/index.dart' as TextField; + +List widgetPoints = [ + WidgetPoint( + name: 'TextField', + routerName: TextField.Demo.routeName, + buildRouter: (BuildContext context) => TextField.Demo(), + ), +]; diff --git a/lib/widgets/elements/Form/Radio/Radio/demo.dart b/lib/widgets/elements/Form/Radio/Radio/demo.dart new file mode 100644 index 00000000..93022062 --- /dev/null +++ b/lib/widgets/elements/Form/Radio/Radio/demo.dart @@ -0,0 +1,57 @@ +/** + * Created with Android Studio. + * User: 三帆 + * Date: 22/11/2018 + * Time: 19:37 + * email: sanfan.hx@alibaba-inc.com + * tartget: xxx + */ + +import 'package:flutter/material.dart'; + +class RadioADemo extends StatefulWidget { + _Demo createState() => _Demo(); +} + +class _Demo extends State { + int groupValue = 1; + onChange(val) { + this.setState(() { + groupValue = val; + }); + } + Widget build(BuildContext context) { + return ( + new Container( + alignment: Alignment.centerLeft, + child: new Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + new Radio( + value: 1, + groupValue: groupValue,//当value和groupValue一致的时候则选中 + onChanged: (T){ + onChange(T); + } + ), + new Radio( + value: 2, + groupValue: groupValue, + onChanged: (T){ + onChange(T); + } + ), + new Radio( + value: 3, + groupValue: groupValue, + onChanged: (T){ + onChange(T); + } + ) + ], + ), + ) + ); + } +} diff --git a/lib/widgets/elements/Form/Radio/Radio/index.dart b/lib/widgets/elements/Form/Radio/Radio/index.dart new file mode 100644 index 00000000..11e52c41 --- /dev/null +++ b/lib/widgets/elements/Form/Radio/Radio/index.dart @@ -0,0 +1,57 @@ +/** + * Created with Android Studio. + * User: 三帆 + * Date: 22/11/2018 + * Time: 19:17 + * email: sanfan.hx@alibaba-inc.com + * tartget: Radio相关 + */ + +import 'package:flutter/material.dart'; +import '../../../../../common/widget_demo.dart'; +import 'package:flutter_markdown/flutter_markdown.dart'; +import 'demo.dart'; +const content1 = """ +# Radio +> material design 风格的单选按钮 + +Radio widget 代表表单中的单选按钮, 当groupValue = value时代表组件被选中。 + +在表单中, 单选按钮是表示一组互斥选项按钮中的一个。当一个按钮被选中,之前选中的按钮就变为非选中的。 + +# 示例显示 +"""; + +const content2 = """ +# 基本用法 + +``` +new Radio( + value: value, + groupValue: groupValue, //当value和groupValue一致的时候则选中 + onChanged: (T){ + onChange(T); + } + +```` +"""; +class Demo extends StatefulWidget { + static const String routeName = '/element/Form/Radio/index'; + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + @override + Widget build(BuildContext context) { + return WidgetDemo( + contentList: [ + content1, + new RadioADemo(), + content2 + ], + title: 'Radio', + docUrl: 'https://docs.flutter.io/flutter/material/Radio-class.html', + codeUrl: 'elements/Form/Radio/Radio/index.dart', + ); + } +} diff --git a/lib/widgets/elements/Form/Radio/RadioListTile/demo.dart b/lib/widgets/elements/Form/Radio/RadioListTile/demo.dart new file mode 100644 index 00000000..50ceb3c1 --- /dev/null +++ b/lib/widgets/elements/Form/Radio/RadioListTile/demo.dart @@ -0,0 +1,47 @@ +/** + * Created with Android Studio. + * User: 三帆 + * Date: 20/12/2018 + * Time: 14:32 + * email: sanfan.hx@alibaba-inc.com + * tartget: xxx + */ + +import 'package:flutter/material.dart'; + + +class DemoA extends StatefulWidget { + _Demo createState() => _Demo(); +} + +class _Demo extends State { + String value = ''; + + onChange(v) { + this.setState(() { + value = v; + }); + } + Widget build(BuildContext context) { + + return new Column( + children: [ + RadioListTile( + title: const Text('A'), + value: "A", + groupValue: this.value, + isThreeLine: false, + subtitle: const Text("subtitleA"), + onChanged:onChange + ), + RadioListTile( + title: const Text('B'), + value: "B", + subtitle: const Text("subtitleB"), + groupValue: this.value, + onChanged: onChange + ), + ], + ); + } +} diff --git a/lib/widgets/elements/Form/Radio/RadioListTile/index.dart b/lib/widgets/elements/Form/Radio/RadioListTile/index.dart new file mode 100644 index 00000000..eaac6d60 --- /dev/null +++ b/lib/widgets/elements/Form/Radio/RadioListTile/index.dart @@ -0,0 +1,56 @@ +/** + * Created with Android Studio. + * User: 三帆 + * Date: 22/11/2018 + * Time: 19:17 + * email: sanfan.hx@alibaba-inc.com + * tartget: Radio相关 + */ + +import 'package:flutter/material.dart'; +import '../../../../../common/widget_demo.dart'; +import 'demo.dart'; +const content1 = """ +# RadioListTile +> material design 风格的单选按钮附加文字label + +点击文字的同时 , 将会出发 Radio的点击效果. + +功能同 @Radio + +# 示例显示 +"""; + +const content2 = """ +# 基本用法 + +``` dart +RadioListTile( + title: const Text('title'), + value: value, + groupValue: groupValue, + onChanged:onChange +) +``` + +"""; +class Demo extends StatefulWidget { + static const String routeName = '/element/Form/RadioListTile/index'; + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + @override + Widget build(BuildContext context) { + return WidgetDemo( + contentList: [ + content1, + new DemoA(), + content2 + ], + title: 'RadioListTile', + docUrl: 'https://docs.flutter.io/flutter/material/RadioListTile-class.html', + codeUrl: 'elements/Form/Radio/RadioListTile/demo.dart', + ); + } +} diff --git a/lib/widgets/elements/Form/Radio/index.dart b/lib/widgets/elements/Form/Radio/index.dart index a47f241e..27825fa6 100644 --- a/lib/widgets/elements/Form/Radio/index.dart +++ b/lib/widgets/elements/Form/Radio/index.dart @@ -1 +1,20 @@ -import 'package:flutter/material.dart'; +import '../../../../model/widget.dart'; +import "package:flutter/material.dart"; + +import 'Radio/index.dart' as Radio; +import 'RadioListTile/index.dart' as RadioTile; + + +List widgetPoints = [ + WidgetPoint( + name: 'Radio', + routerName: Radio.Demo.routeName, + buildRouter: (BuildContext context) => Radio.Demo(), + ), + WidgetPoint( + name: 'RadioListTile', + routerName: RadioTile.Demo.routeName, + buildRouter: (BuildContext context) => RadioTile.Demo(), + ), + +]; \ No newline at end of file diff --git a/lib/widgets/elements/Form/Slider/Slider/demo.dart b/lib/widgets/elements/Form/Slider/Slider/demo.dart new file mode 100644 index 00000000..b7e009f2 --- /dev/null +++ b/lib/widgets/elements/Form/Slider/Slider/demo.dart @@ -0,0 +1,89 @@ +/** + * Created with Android Studio. + * User: 三帆 + * Date: 20/12/2018 + * Time: 17:51 + * email: sanfan.hx@alibaba-inc.com + * tartget: xxx + */ + +import 'package:flutter/material.dart'; + +class SliderDemo extends StatefulWidget { + _Demo createState() => _Demo(); +} + +class _Demo extends State { + double value = 0.0; + Widget build(BuildContext context) { + return new Slider( + value: value,//实际进度的位置 + inactiveColor: Colors.black12,//进度中不活动部分的颜色 + label: 'value: $value', + min: 0.0, + max: 100.0, + divisions: 1000, + activeColor: Colors.blue,//进度中活动部分的颜色 + onChanged: (double){ + setState(() { + value = double.roundToDouble(); + }); + }, + ); + } + +} + + + +class SliderThemeDemo extends StatefulWidget { + _SliderThemeDemo createState() => _SliderThemeDemo(); +} + +class _SliderThemeDemo extends State { + double value = 0.0; + Widget build(BuildContext context) { + return new Container( + child: new SliderTheme( + data: SliderTheme.of(context).copyWith( +// activeTickMarkColor:Colors.yellowAccent, + activeTrackColor: Colors.yellowAccent,//实际进度的颜色 +// inactiveTickMarkColor:Colors.black + thumbColor: Colors.black,//滑块中心的颜色 + inactiveTrackColor:Colors.red,//默 认进度条的颜色 + valueIndicatorColor: Colors.blue,//提示进度的气派的背景色 + valueIndicatorTextStyle: new TextStyle(//提示气泡里面文字的样式 + color: Colors.white, + ), + inactiveTickMarkColor:Colors.blue,//divisions对进度线分割后 断续线中间间隔的颜色 + overlayColor: Colors.pink,//滑块边缘颜色 + ), + child: new Container( + width: 340.0, + margin: EdgeInsets.fromLTRB(0.0, 50.0, 0.0, 0.0), + child: new Row( + children: [ + new Text('0.0'), + new Expanded( + flex: 1, + child: new Slider( + value: value, + label: '$value', + divisions: 10, + onChanged: (double){ + setState(() { + value=double.floorToDouble();//转化成double + }); + }, + min: 0.0, + max: 100.0, + ), + ), + new Text('100.0'), + ], + ), + ), + ), + ); + } +} diff --git a/lib/widgets/elements/Form/Slider/Slider/index.dart b/lib/widgets/elements/Form/Slider/Slider/index.dart new file mode 100644 index 00000000..2f6a6dfc --- /dev/null +++ b/lib/widgets/elements/Form/Slider/Slider/index.dart @@ -0,0 +1,93 @@ +/** + * Created with Android Studio. + * User: 三帆 + * Date: 20/12/2018 + * Time: 17:43 + * email: sanfan.hx@alibaba-inc.com + * tartget: xxx + */ + +import 'package:flutter/material.dart'; +import '../../../../../common/widget_demo.dart'; +import 'demo.dart'; + +const contentA = ''' +### **简介** +> 用来选择范围性的数据 + +slider 用来选择连续性的或者非连续性的数据. 默认是在一段最大值最小值间做任意值的选择. 如果你想选择间隔性的值, 例如0.0到50.0间,选择10, 15,...50.0这样的值, 给divisions设定一个非空的整数5,, 去分割区间范围. + +### **基本用法** + +关于slider有以下的术语: + +* **thumb** 滑块 用户可以水平拖拽移动的区域 + +* **track** 滑轨 thumb 可以滑动的线条区域 + +* **value indicator** 值指示器 当用户拖拽thumb的时候. 显示用户当前所选的属性值 + +* **active** 选中区 + +* **inactive** 非选中区 + +如果**onChanged**属性为空或者**min** .. **max**给出的范围 为空(例如如果min等于max),则将禁用滑块。 + +滑块小部件本身不保持任何状态State。相反,当滑块状态发生变化时,窗口小部件会调用 **onChanged** 回调。大多数使用滑块的小部件将侦听 **onChanged** 回调并使用新值重建滑块以更新滑块的视觉外观。要知道值何时开始更改,或何时更改,请设置可选回调**onChangeStart**或**onChangeEnd**。 + +默认情况下,滑块将尽可能宽,垂直居中。当给定无限制约束时,它将尝试使轨道宽144像素(每边有边距)并垂直收缩。 + +### **基本实例** + +'''; + + +const contentB = ''' +### **高级用法** +> 自定义Slider 样式 + +如果当前Slider样式 无法满足需求, 可以通过 ** SliderTheme ** 定制复杂样式 + +``` +new SliderTheme( + data: SliderTheme.of(context).copyWith( + activeTrackColor: Colors.yellowAccent,//实际进度的颜色 + inactiveTickMarkColor:Colors.black + thumbColor: Colors.black,//滑块中心的颜色 + inactiveTrackColor:Colors.red,//默 认进度条的颜色 + valueIndicatorColor: Colors.blue,//提示进度的气派的背景色 + valueIndicatorTextStyle: new TextStyle(//提示气泡里面文字的样式 + color: Colors.white, + ), + inactiveTickMarkColor:Colors.blue,//divisions对进度线分割后 断续线中间间隔的颜色 + overlayColor: Colors.pink,//滑块边缘颜色 + child: new Slider() +) + +``` + +### **基本实例** + +'''; + +class Demo extends StatefulWidget { + static const String routeName = 'elements/Form/Slider/Slider'; + _Demo createState() => _Demo(); +} + +class _Demo extends State { + + Widget build(BuildContext context) { + return WidgetDemo( + title: 'Slider', + codeUrl: 'elements/Form/Slider/Slider/demo.dart', + contentList: [ + contentA, + SliderDemo(), + contentB, + SliderThemeDemo() + ], + docUrl: 'https://docs.flutter.io/flutter/material/Slider-class.html', + ); + } +} diff --git a/lib/widgets/elements/Form/Slider/SliderComponentShape/index.dart b/lib/widgets/elements/Form/Slider/SliderComponentShape/index.dart new file mode 100644 index 00000000..e69de29b diff --git a/lib/widgets/elements/Form/Slider/SliderTheme/demo.dart b/lib/widgets/elements/Form/Slider/SliderTheme/demo.dart new file mode 100644 index 00000000..0fb46382 --- /dev/null +++ b/lib/widgets/elements/Form/Slider/SliderTheme/demo.dart @@ -0,0 +1,63 @@ +/** + * Created with Android Studio. + * User: 三帆 + * Date: 27/12/2018 + * Time: 14:40 + * email: sanfan.hx@alibaba-inc.com + * tartget: xxx + */ + +import 'package:flutter/material.dart'; + + +class SliderThemeDemo extends StatefulWidget { + _SliderThemeDemo createState() => _SliderThemeDemo(); +} + +class _SliderThemeDemo extends State { + double value = 0.0; + Widget build(BuildContext context) { + return new Container( + child: new SliderTheme( + data: SliderTheme.of(context).copyWith( +// activeTickMarkColor:Colors.yellowAccent, + activeTrackColor: Colors.yellowAccent,//实际进度的颜色 +// inactiveTickMarkColor:Colors.black + thumbColor: Colors.black,//滑块中心的颜色 + inactiveTrackColor:Colors.red,//默 认进度条的颜色 + valueIndicatorColor: Colors.blue,//提示进度的气派的背景色 + valueIndicatorTextStyle: new TextStyle(//提示气泡里面文字的样式 + color: Colors.white, + ), + inactiveTickMarkColor:Colors.blue,//divisions对进度线分割后 断续线中间间隔的颜色 + overlayColor: Colors.pink,//滑块边缘颜色 + ), + child: new Container( + width: 340.0, + margin: EdgeInsets.fromLTRB(0.0, 50.0, 0.0, 0.0), + child: new Row( + children: [ + new Text('0.0'), + new Expanded( + flex: 1, + child: new Slider( + value: value, + label: '$value', + divisions: 10, + onChanged: (double){ + setState(() { + value=double.floorToDouble();//转化成double + }); + }, + min: 0.0, + max: 100.0, + ), + ), + new Text('100.0'), + ], + ), + ), + ), + ); + } +} diff --git a/lib/widgets/elements/Form/Slider/SliderTheme/index.dart b/lib/widgets/elements/Form/Slider/SliderTheme/index.dart new file mode 100644 index 00000000..a21eaa90 --- /dev/null +++ b/lib/widgets/elements/Form/Slider/SliderTheme/index.dart @@ -0,0 +1,75 @@ +/** + * Created with Android Studio. + * User: 三帆 + * Date: 20/12/2018 + * Time: 17:43 + * email: sanfan.hx@alibaba-inc.com + * tartget: xxx + */ + +import 'package:flutter/material.dart'; +import '../../../../../common/widget_demo.dart'; +import 'demo.dart'; + +const contentA = ''' +### **简介** +> 用来更改Slider样式的上层部件 + +将滑块主题应用于后代Slider小部件。 + +### **基本用法** + +> 通过更改sliderTheme.data, 修改Slider总体样式 + +基本属性参考以下代码: + +``` +new SliderTheme( + data: SliderThemeData({ + @required Color activeTrackColor, + @required Color inactiveTrackColor, + @required Color disabledActiveTrackColor, + @required Color disabledInactiveTrackColor, + @required Color activeTickMarkColor, + @required Color inactiveTickMarkColor, + @required Color disabledActiveTickMarkColor, + @required Color disabledInactiveTickMarkColor, + @required Color thumbColor, + @required Color disabledThumbColor, + @required Color overlayColor, + @required Color valueIndicatorColor, + @required SliderComponentShape thumbShape, + @required SliderComponentShape valueIndicatorShape, + @required ShowValueIndicator showValueIndicator, + @required TextStyle valueIndicatorTextStyle + }), + child: anyWidgetContain(Slider) // 用来包含slider的widget容器窗口 +), + +``` + +### **基本实例** + + +'''; + + +class Demo extends StatefulWidget { + static const String routeName = 'elements/Form/Slider/SliderTheme'; + _Demo createState() => _Demo(); +} + +class _Demo extends State { + + Widget build(BuildContext context) { + return WidgetDemo( + title: 'SliderTheme', + codeUrl: 'elements/Form/Slider/SliderTheme/demo.dart', + contentList: [ + contentA, + new SliderThemeDemo(), + ], + docUrl: 'https://docs.flutter.io/flutter/material/SliderTheme-class.html', + ); + } +} diff --git a/lib/widgets/elements/Form/Slider/SliderThemeData/demo.dart b/lib/widgets/elements/Form/Slider/SliderThemeData/demo.dart new file mode 100644 index 00000000..0fb46382 --- /dev/null +++ b/lib/widgets/elements/Form/Slider/SliderThemeData/demo.dart @@ -0,0 +1,63 @@ +/** + * Created with Android Studio. + * User: 三帆 + * Date: 27/12/2018 + * Time: 14:40 + * email: sanfan.hx@alibaba-inc.com + * tartget: xxx + */ + +import 'package:flutter/material.dart'; + + +class SliderThemeDemo extends StatefulWidget { + _SliderThemeDemo createState() => _SliderThemeDemo(); +} + +class _SliderThemeDemo extends State { + double value = 0.0; + Widget build(BuildContext context) { + return new Container( + child: new SliderTheme( + data: SliderTheme.of(context).copyWith( +// activeTickMarkColor:Colors.yellowAccent, + activeTrackColor: Colors.yellowAccent,//实际进度的颜色 +// inactiveTickMarkColor:Colors.black + thumbColor: Colors.black,//滑块中心的颜色 + inactiveTrackColor:Colors.red,//默 认进度条的颜色 + valueIndicatorColor: Colors.blue,//提示进度的气派的背景色 + valueIndicatorTextStyle: new TextStyle(//提示气泡里面文字的样式 + color: Colors.white, + ), + inactiveTickMarkColor:Colors.blue,//divisions对进度线分割后 断续线中间间隔的颜色 + overlayColor: Colors.pink,//滑块边缘颜色 + ), + child: new Container( + width: 340.0, + margin: EdgeInsets.fromLTRB(0.0, 50.0, 0.0, 0.0), + child: new Row( + children: [ + new Text('0.0'), + new Expanded( + flex: 1, + child: new Slider( + value: value, + label: '$value', + divisions: 10, + onChanged: (double){ + setState(() { + value=double.floorToDouble();//转化成double + }); + }, + min: 0.0, + max: 100.0, + ), + ), + new Text('100.0'), + ], + ), + ), + ), + ); + } +} diff --git a/lib/widgets/elements/Form/Slider/SliderThemeData/index.dart b/lib/widgets/elements/Form/Slider/SliderThemeData/index.dart new file mode 100644 index 00000000..647d1bba --- /dev/null +++ b/lib/widgets/elements/Form/Slider/SliderThemeData/index.dart @@ -0,0 +1,71 @@ +/** + * Created with Android Studio. + * User: 三帆 + * Date: 20/12/2018 + * Time: 17:43 + * email: sanfan.hx@alibaba-inc.com + * tartget: xxx + */ + +import 'package:flutter/material.dart'; +import '../../../../../common/widget_demo.dart'; +import 'demo.dart'; + +const contentA = ''' +### **简介** +> SliderTheme的data修饰属性 **SliderThemeData** + + + +### **基本用法** + +> 配合SliderTheme, 修改slider组件各个部件的样式, 参照@Slider的各组件命名, 修改各部件样式 + +构造函数如下 +```` +const SliderThemeData({ + @required Color activeTrackColor, + @required Color inactiveTrackColor, + @required Color disabledActiveTrackColor, + @required Color disabledInactiveTrackColor, + @required Color activeTickMarkColor, + @required Color inactiveTickMarkColor, + @required Color disabledActiveTickMarkColor, + @required Color disabledInactiveTickMarkColor, + @required Color thumbColor, + @required Color disabledThumbColor, + @required Color overlayColor, + @required Color valueIndicatorColor, + @required SliderComponentShape thumbShape, + @required SliderComponentShape valueIndicatorShape, + @required ShowValueIndicator showValueIndicator, + @required TextStyle valueIndicatorTextStyle +}) + +```` + +### **基本实例** + + +'''; + + +class Demo extends StatefulWidget { + static const String routeName = 'elements/Form/Slider/SliderThemeData'; + _Demo createState() => _Demo(); +} + +class _Demo extends State { + + Widget build(BuildContext context) { + return WidgetDemo( + title: 'SliderThemeData', + codeUrl: 'elements/Form/Slider/SliderThemeData/demo.dart', + contentList: [ + contentA, + new SliderThemeDemo() + ], + docUrl: 'https://docs.flutter.io/flutter/material/SliderThemeData-class.html', + ); + } +} diff --git a/lib/widgets/elements/Form/Slider/index.dart b/lib/widgets/elements/Form/Slider/index.dart index a47f241e..4511d653 100644 --- a/lib/widgets/elements/Form/Slider/index.dart +++ b/lib/widgets/elements/Form/Slider/index.dart @@ -1 +1,23 @@ -import 'package:flutter/material.dart'; +import '../../../../model/widget.dart'; +import "package:flutter/material.dart"; +import "Slider/index.dart" as Slider; +import "SliderTheme/index.dart" as SliderTheme; +import "SliderThemeData/index.dart" as SliderThemeData; + +List widgetPoints = [ + WidgetPoint( + name: 'Slider', + routerName: Slider.Demo.routeName, + buildRouter: (BuildContext context) => Slider.Demo(), + ), + WidgetPoint( + name: 'SliderTheme', + routerName: SliderTheme.Demo.routeName, + buildRouter: (BuildContext context) => SliderTheme.Demo(), + ), + WidgetPoint( + name: 'SliderThemeData', + routerName: SliderThemeData.Demo.routeName, + buildRouter: (BuildContext context) => SliderThemeData.Demo(), + ) +]; diff --git a/lib/widgets/elements/Form/Switch/AnimatedSwitcher/demo.dart b/lib/widgets/elements/Form/Switch/AnimatedSwitcher/demo.dart new file mode 100644 index 00000000..a5be8eff --- /dev/null +++ b/lib/widgets/elements/Form/Switch/AnimatedSwitcher/demo.dart @@ -0,0 +1,52 @@ +/** + * Created with Android Studio. + * User: 三帆 + * Date: 28/12/2018 + * Time: 19:58 + * email: sanfan.hx@alibaba-inc.com + * tartget: xxx + */ + +import 'package:flutter/material.dart'; + +class AnimatedSwitcherDemo extends StatefulWidget { + const AnimatedSwitcherDemo({Key key}) : super(key: key); + + @override + _ClickCounterState createState() => _ClickCounterState(); +} + +class _ClickCounterState extends State { + int _count = 0; + + @override + Widget build(BuildContext context) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + AnimatedSwitcher( + duration: const Duration(milliseconds: 500), + transitionBuilder: (Widget child, Animation animation) { + return ScaleTransition(child: child, scale: animation); + }, + child: Text( + '$_count', + // This key causes the AnimatedSwitcher to interpret this as a "new" + // child each time the count changes, so that it will begin its animation + // when the count changes. + key: ValueKey(_count), + style: Theme.of(context).textTheme.display4, + ), + ), + RaisedButton( + child: const Text('Increment'), + onPressed: () { + setState(() { + _count += 1; + }); + }, + ), + ], + ); + } +} \ No newline at end of file diff --git a/lib/widgets/elements/Form/Switch/AnimatedSwitcher/index.dart b/lib/widgets/elements/Form/Switch/AnimatedSwitcher/index.dart new file mode 100644 index 00000000..357c5fe5 --- /dev/null +++ b/lib/widgets/elements/Form/Switch/AnimatedSwitcher/index.dart @@ -0,0 +1,47 @@ +/** + * Created with Android Studio. + * User: 三帆 + * Date: 28/12/2018 + * Time: 19:54 + * email: sanfan.hx@alibaba-inc.com + * tartget: xxx + */ + +import 'package:flutter/material.dart'; +import '../../../../../common/widget_demo.dart'; +import 'demo.dart'; + +const contentA = ''' +### **简介** +> 一个在新旧组件. 做渐变切换的组件. 有一定的动画效果 + +*注意*: +- 如果你切换的足够快.超过了间隔时间, 组件只会隐藏第一个 .并渐渐显示最后一个生效的组件. +- 如果你变更的组件.只是同一个组件, 不同的state或者不同的显示数据与状态. 请为当前组件每一个状态加入一个Key. 强制生效动画效果. + + + +### **基本实例** + +'''; + + +class Demo extends StatefulWidget { + static const String routeName = 'elements/Form/Switch/AnimatedSwitcher'; + _Demo createState() => _Demo(); +} + +class _Demo extends State { + + Widget build(BuildContext context) { + return WidgetDemo( + title: 'SwitchListTile', + codeUrl: 'elements/Form/Switch/AnimatedSwitcher/demo.dart', + contentList: [ + contentA, + new AnimatedSwitcherDemo() + ], + docUrl: '', + ); + } +} diff --git a/lib/widgets/elements/Form/Switch/Switch/demo.dart b/lib/widgets/elements/Form/Switch/Switch/demo.dart new file mode 100644 index 00000000..283b6f33 --- /dev/null +++ b/lib/widgets/elements/Form/Switch/Switch/demo.dart @@ -0,0 +1,76 @@ +/** + * Created with Android Studio. + * User: 三帆 + * Date: 27/12/2018 + * Time: 17:30 + * email: sanfan.hx@alibaba-inc.com + * tartget: xxx + */ + +import 'package:flutter/material.dart'; + + + +class SwitchDemo extends StatefulWidget { + _Demo createState() => _Demo(); +} + +class _Demo extends State { + bool check = false; + Widget build(BuildContext context) { + return new Switch( + value: this.check, + onChanged: (bool val) { + this.setState(() { + this.check = !this.check; + }); + }, + ); + } +} + +class SwitchHighDemo extends StatefulWidget { + _SwitchHighDemo createState() => _SwitchHighDemo(); +} + +class _SwitchHighDemo extends State { + bool check = false; + Widget build(BuildContext context) { + return new Switch.adaptive( + value: this.check, + activeColor: Colors.blue, // 激活时原点颜色 + onChanged: (bool val) { + this.setState(() { + this.check = !this.check; + }); + }, + ); + } +} + + +class SwitchTypesDemo extends StatefulWidget { + _SwitchTypesDemo createState() => _SwitchTypesDemo(); +} + +class _SwitchTypesDemo extends State { + bool check = false; + Widget build(BuildContext context) { + return new Switch( + value: this.check, + activeTrackColor:Colors.green, + inactiveThumbColor: Colors.black, + inactiveThumbImage: NetworkImage('https://flutter.io/images/homepage/header-illustration.png'), + activeThumbImage: NetworkImage( + "https://flutter.io/images/homepage/screenshot-2.png" + ), + inactiveTrackColor: Colors.yellow, + activeColor: Colors.blue, // 激活时原点颜色 + onChanged: (bool val) { + this.setState(() { + this.check = !this.check; + }); + }, + ); + } +} \ No newline at end of file diff --git a/lib/widgets/elements/Form/Switch/Switch/index.dart b/lib/widgets/elements/Form/Switch/Switch/index.dart new file mode 100644 index 00000000..75b30205 --- /dev/null +++ b/lib/widgets/elements/Form/Switch/Switch/index.dart @@ -0,0 +1,99 @@ +/** + * Created with Android Studio. + * User: 三帆 + * Date: 20/12/2018 + * Time: 17:43 + * email: sanfan.hx@alibaba-inc.com + * tartget: xxx + */ + +import 'package:flutter/material.dart'; +import '../../../../../common/widget_demo.dart'; +import 'demo.dart'; + +const contentA = ''' +### **简介** +> Switch 是一个切换按钮组件,通常用于设置的选项里。 + + +### **基本用法** + +``` +new Switch( + value: isChecked, + activeColor: Colors.blue, // 激活时原点颜色 + onChanged: (bool val) { + this.setState(() { + this.isChecked = !this.isChecked; + }); + }, +) +``` + +### **基本实例** + +@SwitchDemo +'''; + + +const contentB = ''' + +ios 风格的实例 + +如果需要ios风格下的实例, 我们可以使用**Switch**的子类**adaptive**,参数使用与Switch相同, 实例如下: + +'''; + +const contentC = ''' +### **高级用法** + +当默认的样式无法满足需求时, 我们可以通过自定义各部件样式. + +- activeColor[**Color**] 当按钮状态通激活态时, 按钮的背景颜色 +- activeThumbImage [**ImageProvider**] 当按钮状态处于激活态时, 按钮的背景图像 +- activeTrackColor [**Color**] 当按钮状态处于激活态时, 滑轨的颜色 +- inactiveThumbColor [**Color**] 当按钮处于非激活状态时, 按钮的背景颜色, 与activeColor正好状态相反 +- inactiveThumbImage [**ImageProvider**] 当按钮状态处于非激活态时, 按钮的背景图像 +- inactiveTrackColor [**Color**] 当按钮状态处于非激活态时, 滑轨的颜色 + +下面是自定义, 更改了以上属性的实例 + +'''; + +const contentD = ''' + +``` +activeTrackColor:Colors.green, +inactiveThumbColor: Colors.black, +inactiveThumbImage: NetworkImage('https://flutter.io/images/homepage/header-illustration.png'), +activeThumbImage: NetworkImage( + "https://flutter.io/images/homepage/screenshot-2.png" +), +inactiveTrackColor: Colors.yellow, +``` +'''; + +class Demo extends StatefulWidget { + static const String routeName = 'elements/Form/Switch/Switch'; + _Demo createState() => _Demo(); +} + +class _Demo extends State { + + Widget build(BuildContext context) { + return WidgetDemo( + title: 'Switch', + codeUrl: '', + contentList: [ + contentA, + SwitchDemo(), + contentB, + SwitchHighDemo(), + contentC, + SwitchTypesDemo(), + contentD + ], + docUrl: 'https://docs.flutter.io/flutter/material/Switch-class.html', + ); + } +} diff --git a/lib/widgets/elements/Form/Switch/SwitchListTile/demo.dart b/lib/widgets/elements/Form/Switch/SwitchListTile/demo.dart new file mode 100644 index 00000000..a80109b7 --- /dev/null +++ b/lib/widgets/elements/Form/Switch/SwitchListTile/demo.dart @@ -0,0 +1,28 @@ +/** + * Created with Android Studio. + * User: 三帆 + * Date: 28/12/2018 + * Time: 15:48 + * email: sanfan.hx@alibaba-inc.com + * tartget: xxx + */ + +import 'package:flutter/material.dart'; + + + +class SwitchListTileDemo extends StatefulWidget { + _Demo createState() => _Demo(); +} + +class _Demo extends State { + bool _lights = false; + Widget build(BuildContext context) { + return new SwitchListTile( + title: const Text('Lights'), + value: _lights, + onChanged: (bool value) { setState(() { _lights = value; }); }, + secondary: const Icon(Icons.lightbulb_outline), + ); + } +} \ No newline at end of file diff --git a/lib/widgets/elements/Form/Switch/SwitchListTile/index.dart b/lib/widgets/elements/Form/Switch/SwitchListTile/index.dart new file mode 100644 index 00000000..a87c3240 --- /dev/null +++ b/lib/widgets/elements/Form/Switch/SwitchListTile/index.dart @@ -0,0 +1,45 @@ +/** + * Created with Android Studio. + * User: 三帆 + * Date: 28/12/2018 + * Time: 15:48 + * email: sanfan.hx@alibaba-inc.com + * tartget: xxx + */ +import 'package:flutter/material.dart'; + +import '../../../../../common/widget_demo.dart'; +import 'demo.dart'; + +const contentA = ''' +### **简介** +> Switch 的一个衍生组件 + +基本用法与Switch相同.具体参考@Switch, 支持各种自定义样式. + + + +### **基本实例** + +'''; + + +class Demo extends StatefulWidget { + static const String routeName = 'elements/Form/Switch/SwitchListTile'; + _Demo createState() => _Demo(); +} + +class _Demo extends State { + + Widget build(BuildContext context) { + return WidgetDemo( + title: 'SwitchListTile', + codeUrl: 'elements/Form/Switch/SwitchListTile/demo.dart', + contentList: [ + contentA, + SwitchListTileDemo() + ], + docUrl: '', + ); + } +} diff --git a/lib/widgets/elements/Form/Switch/index.dart b/lib/widgets/elements/Form/Switch/index.dart index a47f241e..5529cee0 100644 --- a/lib/widgets/elements/Form/Switch/index.dart +++ b/lib/widgets/elements/Form/Switch/index.dart @@ -1 +1,24 @@ -import 'package:flutter/material.dart'; +import '../../../../model/widget.dart'; +import "package:flutter/material.dart"; +import "Switch/index.dart" as Switch; +import "SwitchListTile/index.dart" as SwitchListTile; +import "AnimatedSwitcher/index.dart" as AnimatedSwitcher; + + +List widgetPoints = [ + WidgetPoint( + name: 'Switch', + routerName: Switch.Demo.routeName, + buildRouter: (BuildContext context) => Switch.Demo(), + ), + WidgetPoint( + name: 'SwitchListTile', + routerName: SwitchListTile.Demo.routeName, + buildRouter: (BuildContext context) => SwitchListTile.Demo(), + ), + WidgetPoint( + name: 'AnimatedSwitcher', + routerName: AnimatedSwitcher.Demo.routeName, + buildRouter: (BuildContext context) => AnimatedSwitcher.Demo(), + ) +]; diff --git a/lib/widgets/elements/Form/Text/RichText/index.dart b/lib/widgets/elements/Form/Text/RichText/index.dart index af5a52d6..43811bc9 100644 --- a/lib/widgets/elements/Form/Text/RichText/index.dart +++ b/lib/widgets/elements/Form/Text/RichText/index.dart @@ -1,5 +1,60 @@ import 'package:flutter/material.dart'; +import 'package:flutter_markdown/flutter_markdown.dart'; +import '../../../../../common/widget-demo.dart'; +const String intro = """ +# 富文本显示 + +在富文本使用多个不同风格的widget显示文本。要显示的文本使用TextSpan对象树来描述,每个对象都有一个用于该子树的关联样式。文本可能会跨越多行,也可能全部显示在同一行上,具体取决于布局约束。 + +# 示例代码 + +``` +RichText( + text: TextSpan( + text: 'Hello ', + style: DefaultTextStyle.of(context).style, + children: [ + TextSpan(text: 'bold', style: TextStyle(fontWeight: FontWeight.bold)), + TextSpan(text: ' world!'), + ], + ), +) +``` + +# 示例示例 + +"""; +const String diff = """ +# RichText 与 Text.rich 对比 + +无论是Text或者Text.rich, 查看源代码发现. 都是由RichText构建出来 + +## 源码展示 + +``` +// Text 源码 +@override + Widget build(BuildContext context) { + ... + Widget result = RichText( + ... + + style: effectiveTextStyle, + text: data, + children: textSpan != null ? [textSpan] : null, + ), + ); + ... + return result; + } +``` +待补充... +"""; +const Map markDesc = { + 'intro': intro, + 'diff': diff +}; class Demo extends StatefulWidget { static const String routeName = '/element/Form/Text/RichText'; _Demo createState() => _Demo(); @@ -8,13 +63,30 @@ class Demo extends StatefulWidget { class _Demo extends State { Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: Text("FlatButton"), - ), - body: Container( - child: Text("this is RichText") - ) + return WidgetDemo( + title: 'Rich Text', + docUrl: 'https://docs.flutter.io/flutter/widgets/RichText-class.html', + codeUrl: '', + child: new Column( + children: [ + MarkdownBody(data: markDesc['intro']), + Container( + color: Color(0xff000000), + width: 750.0, + child: RichText( + text: TextSpan( + text: 'Hello ', +// style: TextStyle(fontWeight: FontWeight.normal, inherit: true, fontSize: 44), + children: [ + TextSpan(text: 'bold', style: TextStyle(fontWeight: FontWeight.bold, color: Color(0xfffffc42))), + TextSpan(text: ' world!', style: TextStyle(fontStyle: FontStyle.italic)), + ], + ), + ), + ), + MarkdownBody(data: markDesc['diff']), + ], + ), ); } } diff --git a/lib/widgets/elements/Form/Text/Text/index.dart b/lib/widgets/elements/Form/Text/Text/index.dart index 9532971d..95c15584 100644 --- a/lib/widgets/elements/Form/Text/Text/index.dart +++ b/lib/widgets/elements/Form/Text/Text/index.dart @@ -1,20 +1,116 @@ import 'package:flutter/material.dart'; +//import 'package:flutter_markdown/flutter_markdown.dart'; +import '../../../../../common/widget-demo.dart'; +import '../../../../../components/markdown.dart'; +const String intro = """ +# 说明 + +> 具有某个单一样式的文本显示的widget组件, 显示支持一行或者多行. 默认样式会继承层级最为接近的 *DefaultStyle* +当然, 你也可以重新他的样式 将 *DefaultStyle.inherit 设置为 false* + +# 示例代码 + +``` dart +Text( + 'Hello, World ! How are you?', + textAlign: TextAlign.center, + overflow: TextOverflow.ellipsis, + style: TextStyle(fontWeight: FontWeight.bold), +) +``` + +# 示例显示 + + +"""; + +const String leftDesc = """ +# 示例代码 + + +``` dart +// 左侧布局示例 +Text( + "Hello, World! I'm start from left?", + textAlign: TextAlign.left, + overflow: TextOverflow.ellipsis, + style: TextStyle(fontWeight: FontWeight.bold, inherit: true), +), +``` +# 示例显示 +"""; + +const String RichDesc = """ + +# 复杂文本显示 + +使用 Text.rich 构造函数,Text 组件可以显示具有不同样式的 TextSpan 段落。下面的示例显示每个单词具有不同样式的“Hello beautiful world”。 + +``` +Text.rich( + TextSpan( + text: 'Hello', // default text style + children: [ + TextSpan(text: ' beautiful ', style: TextStyle(fontStyle: FontStyle.italic)), + TextSpan(text: 'world', style: TextStyle(fontWeight: FontWeight.bold)), + ], + ), +) +``` +"""; + +const Map markDesc = { + "intro": intro, + "left": leftDesc, + "rich": RichDesc +}; class Demo extends StatefulWidget { static const String routeName = '/element/Form/Text/Text'; _Demo createState() => _Demo(); } class _Demo extends State { + onButtonTap() { + } Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: Text("FlatButton"), - ), - body: Container( - child: Text("this is Text") - ) + return WidgetDemo( + title: "Text", + docUrl: 'flutter/widgets/Text-class.html', + codeUrl: 'elements/Form/Text/Text/index.dart', + child: new Column( + children: [ + MarkdownBody(markDesc['intro']), + Text( + 'Hello, World! How are you?', + textAlign: TextAlign.center, + overflow: TextOverflow.ellipsis, + style: TextStyle(fontWeight: FontWeight.bold), + ), + MarkdownBody(markDesc['left']), + Container( + width: 750.0, + color: Color(0xFF0096ef), + child: Text( + "Hello, World! I'm start from left?", + textAlign: TextAlign.left, + overflow: TextOverflow.ellipsis, + style: TextStyle(color: Color(0xffffffff)), + ), + ), + MarkdownBody( markDesc['rich']), + Text.rich( + TextSpan( + text: 'Hello', // default text style + children: [ + TextSpan(text: ' beautiful ', style: TextStyle(fontStyle: FontStyle.italic)), + TextSpan(text: 'world', style: TextStyle(fontWeight: FontWeight.bold)), + ], + ), + ) + ], + ) ); } } diff --git a/lib/widgets/elements/Form/index.dart b/lib/widgets/elements/Form/index.dart index cb691eff..7a140fa3 100644 --- a/lib/widgets/elements/Form/index.dart +++ b/lib/widgets/elements/Form/index.dart @@ -1,9 +1,19 @@ import 'Button/index.dart' as Button; import 'Text/index.dart' as Text; +import 'Input/index.dart' as Input; +import 'CheckBox/index.dart' as CheckBox; +import 'Radio/index.dart' as Radio; +import 'Slider/index.dart' as Slider; +import 'Switch/index.dart' as Switch; List getWidgets() { List result = []; result.addAll(Button.widgetPoints); result.addAll(Text.widgetPoints); + result.addAll(Input.widgetPoints); + result.addAll(CheckBox.widgetPoints); + result.addAll(Radio.widgetPoints); + result.addAll(Slider.widgetPoints); + result.addAll(Switch.widgetPoints); return result; } \ No newline at end of file diff --git a/lib/widgets/elements/Frame/Box/Fittedbox/demo.dart b/lib/widgets/elements/Frame/Box/Fittedbox/demo.dart new file mode 100644 index 00000000..b1022cc7 --- /dev/null +++ b/lib/widgets/elements/Frame/Box/Fittedbox/demo.dart @@ -0,0 +1,49 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; + +/** + * Author: xiaojia.dxj + * Date: 2018/12/2 + * Email: xiaojia.dxj@alibaba-inc.com + * LastUpdateTime: 2018/12/2 + * LastUpdateBy: xj.deng + * + * Describle:FittedBox + */ + +class FittedBoxDefault extends StatelessWidget { + final BoxFit curfit; + String dec; + + FittedBoxDefault({Key key, BoxFit this.curfit, this.dec}); + + @override + Widget build(BuildContext context) { + return new Column( + children: [ + Container( + //外部有位置约束,内部大小设定失效,保持和外部约束一致 + height: 100.0, + width: 100.0, + color: Colors.yellow, + child: FittedBox( + fit: curfit, + // 修改child写入布局时期分配的空间 + alignment: Alignment.center, + //alignment修改child于父空间对齐方式,默认:Alignment.center, + child: Container( +// height: 50.0, +// width: 50.0, + color: Colors.red, + child: Text( + 'fittedBox', + style: TextStyle(color: Colors.white), + ), + ), + ), + ), + Text(dec), + ], + ); + } +} diff --git a/lib/widgets/elements/Frame/Box/Fittedbox/index.dart b/lib/widgets/elements/Frame/Box/Fittedbox/index.dart new file mode 100644 index 00000000..85160d42 --- /dev/null +++ b/lib/widgets/elements/Frame/Box/Fittedbox/index.dart @@ -0,0 +1,108 @@ + +/** + * Author: xiaojia.dxj + * Date: 2019-01-08 + * Email: xiaojia.dxj@alibaba-inc.com + * LastUpdateTime: 2019-01-08 + * LastUpdateBy: xj.deng + * + */ +import 'package:flutter/material.dart'; +import '../../../../../common/widget_demo.dart'; +import './demo.dart' as fittedBox; + +const String Text0 = """ +### **FittedBox** +> 根据自己的需要,对child进行缩放和定位 +- 可以看看变换,在绘制时任意变换应用在子窗口的widget +"""; + +const String Text1 = """ +### **基本用法** +> 根据外部约束,调整child +- 如果外部没有约束,按照child的大小。 +- 如果外部有约束,按照外部约束调整自身大小,然后缩放调整child,根据条件进行放置 +- BoxFix 属性,修改child写入布局时期分配的空间 +- alignment修改child于父空间对齐方式,默认:Alignment.center, +"""; + +class Demo extends StatefulWidget { + static const String routeName = '/element/Frame/Box/FittedBox'; + + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'FittedBox', + codeUrl: 'elements/Frame/Box/Fittedbox/demo.dart', + docUrl: 'https://docs.flutter.io/flutter/widgets/FittedBox-class.html', + contentList: [ + Text0, + Text1, + _FittedBoxCreate(), + ], + ); + } + + Column _FittedBoxCreate() { + return Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + fittedBox.FittedBoxDefault( + /** + * 设置child写入布局期间分配空间 + */ + curfit: BoxFit.contain, + dec: 'contain', + ), + fittedBox.FittedBoxDefault( + curfit: BoxFit.fill, + dec: 'fill', + ), + fittedBox.FittedBoxDefault( + curfit: BoxFit.cover, + dec: 'cover', + ), + ], + ), + SizedBox( + height: 20.0, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + fittedBox.FittedBoxDefault( + curfit: BoxFit.fitHeight, + dec: 'fitHeight', + ), + fittedBox.FittedBoxDefault( + curfit: BoxFit.fitWidth, + dec: 'fitWidth', + ), + ], + ), + SizedBox( + height: 20.0, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + fittedBox.FittedBoxDefault( + curfit: BoxFit.none, + dec: 'none', + ), + fittedBox.FittedBoxDefault( + curfit: BoxFit.scaleDown, + dec: 'scaleDown', + ), + ], + ), + ], + ); + } +} diff --git a/lib/widgets/elements/Frame/Box/RenderBox/demo.dart b/lib/widgets/elements/Frame/Box/RenderBox/demo.dart new file mode 100644 index 00000000..9c1a7565 --- /dev/null +++ b/lib/widgets/elements/Frame/Box/RenderBox/demo.dart @@ -0,0 +1,22 @@ +import 'package:flutter/material.dart'; + +class RenderBoxDemo extends StatefulWidget { + _RenderBoxDemoState createState() => _RenderBoxDemoState(); +} + +class _RenderBoxDemoState extends State { + @override + Widget build(BuildContext context) { + return Container( + // child: RenderFoo(), + ); + } +} + +class RenderFoo extends RenderBox { + @override + bool get hasSize => super.hasSize; + + @override + BoxConstraints get constraints => super.constraints; +} diff --git a/lib/widgets/elements/Frame/Box/RenderBox/index.dart b/lib/widgets/elements/Frame/Box/RenderBox/index.dart new file mode 100644 index 00000000..58539a94 --- /dev/null +++ b/lib/widgets/elements/Frame/Box/RenderBox/index.dart @@ -0,0 +1,63 @@ +/* + * @Author: xiaojia.dxj + * @Date: 2019-01-08 15:56:26 + * @Last Modified by: xiaojia.dxj + * @Last Modified time: 2019-01-08 15:56:26 + */ +import 'package:flutter/material.dart'; +import '../../../../../common/widget_demo.dart'; +import './demo.dart' as sizeBox; + +const String _Text = ''' +### **简介** +> BoxConstraints为抽象类,我们可以使用BoxConstraints,一个不可边的约束布局,renderBox布局 +- 一个尺寸尊重一个BoxConstraints,当且仅当,以下关系式的成立: +minWidth <= Size.width <= maxWidth +minHeight <= Size.height <= maxHeight +约束本身必须满足这些关系: + +0.0 <= minWidth <= maxWidth <= double.infinity +0.0 <= minHeight <= maxHeight <= double.infinity +double.infinity是每个约束的合法值。 +'''; + +class Demo extends StatefulWidget { + static const String routeName = '/element/Frame/Box/RenderBox'; + + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'Table', + codeUrl: 'elements/Frame/Box/RenderBox/demo.dart', + contentList: [ + _Text, + _SizeBoxCreate(), + ], + docUrl: 'https://docs.flutter.io/flutter/widgets/RenderBox-class.html', + ); + } + + Column _SizeBoxCreate() { + return new Column( + children: [ + /** + * Immutable layout constraints for RenderBox layout. + */ + SizedBox( + width: 900.0, + height: 50.0, + child: const Card( + child: Text( + 'SizedBox', + textAlign: TextAlign.center, + ), + color: Color(0xFFEF5350)), + ), + ], + ); + } +} diff --git a/lib/widgets/elements/Frame/Box/SizeBox/demo.dart b/lib/widgets/elements/Frame/Box/SizeBox/demo.dart new file mode 100644 index 00000000..9d7998dc --- /dev/null +++ b/lib/widgets/elements/Frame/Box/SizeBox/demo.dart @@ -0,0 +1,20 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; + +class SizeBoxDefault extends StatelessWidget { + @override + Widget build(BuildContext context) { + return SizedBox( + width: 140.0, + height: 80.0, + child: const Card( + child: Text( + 'SizedBox', + textDirection: TextDirection.rtl, + ), + margin: EdgeInsets.all(20.0), + color: Color(0xFFEF9A9A), + ), + ); + } +} diff --git a/lib/widgets/elements/Frame/Box/SizeBox/index.dart b/lib/widgets/elements/Frame/Box/SizeBox/index.dart new file mode 100644 index 00000000..36ee028f --- /dev/null +++ b/lib/widgets/elements/Frame/Box/SizeBox/index.dart @@ -0,0 +1,68 @@ +/* + * @Author: xiaojia.dxj + * @Date: 2019-01-08 15:55:46 + * @Last Modified by: xiaojia.dxj + * @Last Modified time: 2019-01-08 15:55:46 + */ +import 'package:flutter/material.dart'; +import '../../../../../common/widget_demo.dart'; +import './demo.dart' as sizeBox; + +class Demo extends StatefulWidget { + static const String routeName = '/element/Frame/Box/SizeBox'; + + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'Table', + codeUrl: 'elements/Frame/Box/SizedBox/demo.dart', + contentList: [ + _SizeBoxCreate(), + ], + docUrl: 'https://docs.flutter.io/flutter/widgets/SizedBox-class.html', + ); + } + + Column _SizeBoxCreate() { + return new Column( + children: [ + new Text("SizedBox", + textAlign: TextAlign.right, + style: TextStyle( + fontSize: 28.0, + fontWeight: FontWeight.bold, + )), + new Row( + children: [ + sizeBox.SizeBoxDefault(), + SizedBox( + width: 130.0, + height: 80.0, + child: const Card( + child: Text( + 'SizedBox', + textAlign: TextAlign.center, + ), + margin: EdgeInsets.only(left: 20.0, right: 20.0, top: 20.0), + color: Color(0xFFE57373)), + ), + ], + ), + SizedBox( + width: 900.0, + height: 50.0, + child: const Card( + child: Text( + 'SizedBox', + textAlign: TextAlign.center, + ), + color: Color(0xFFEF5350)), + ), + ], + ); + } +} diff --git a/lib/widgets/elements/Frame/Box/TextBox/demo.dart b/lib/widgets/elements/Frame/Box/TextBox/demo.dart new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/lib/widgets/elements/Frame/Box/TextBox/demo.dart @@ -0,0 +1 @@ + diff --git a/lib/widgets/elements/Frame/Box/TextBox/index.dart b/lib/widgets/elements/Frame/Box/TextBox/index.dart new file mode 100644 index 00000000..75d79d9e --- /dev/null +++ b/lib/widgets/elements/Frame/Box/TextBox/index.dart @@ -0,0 +1,50 @@ +import 'package:flutter/material.dart'; +import '../../../../../common/widget_demo.dart'; +import './demo.dart' as TextBox; + +const String _Text = """### **TextBox简介** +> 是一个包含一段文本的矩形 +- 它与rect类似,不过包含一个固定的TextDirection。 +- sizebox的width,heigh为null,child自身设置 +### **属性** +> width:宽 +> height:高 +- ex:200*50 sizebox +"""; + +class Demo extends StatefulWidget { + static const String routeName = '/element/Frame/Box/TextBox'; + + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'TextBox', + codeUrl: 'elements/Frame/Box/TextBox/demo.dart', + contentList: [ + _Text, + _creatTexbox(), + ], + docUrl: 'https://docs.flutter.io/flutter/dart-ui/TextBox-class.html', + ); + } +} + +Column _creatTexbox() { + return Column( + children: [ + // Text("TextBox ",textDirection: new TextBox.fo,), + Container( + // child: TextBox.fromLTRB(270.0, 180.0, 1360.0, 730.0,TextDirection.rtl), + + ) + +// centerSlice: new Rect.fromLTRB(270.0, 180.0, 1360.0, 730.0), + + + ], + ); +} diff --git a/lib/widgets/elements/Frame/Box/index.dart b/lib/widgets/elements/Frame/Box/index.dart deleted file mode 100644 index a47f241e..00000000 --- a/lib/widgets/elements/Frame/Box/index.dart +++ /dev/null @@ -1 +0,0 @@ -import 'package:flutter/material.dart'; diff --git a/lib/widgets/themes/Material/MaterialAccentColor/index.dart b/lib/widgets/themes/Material/MaterialAccentColor/index.dart new file mode 100644 index 00000000..1d0c220e --- /dev/null +++ b/lib/widgets/themes/Material/MaterialAccentColor/index.dart @@ -0,0 +1,41 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_rookie_book/common/widget_demo.dart'; +import 'package:flutter_rookie_book/widgets/themes/Material/MaterialColor/demo.dart'; + +const Text0 = ''' +### **简介** +> 用来定义单一的强调色,以及四种色调的色系 +- 颜色的阴影用索引表示,索引较小的颜色比较浅,较大的索引比较暗。 +- 有个四个有效索引,100,200,400,和700.此颜色的值应与索引200和shade200的值相同。 +'''; + +const String Text1 = """ +### **基本用法** +> 这里我们配合Icon来进行演示 +- 颜色的值应与指数500和shade500的值相同 +"""; + +class Demo extends StatefulWidget { + static const String routeName = + '/element/themes/Material/MaterialAccentColor'; + + @override + State createState() => _DemoState(); +} + +class _DemoState extends State { + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'MaterialAccentColor', + codeUrl: 'elements/themes/Material/MaterialAccentColor', + docUrl: + 'https://docs.flutter.io/flutter/material/MaterialAccentColor-class.html', + contentList: [ + Text0, + Text1, + ColorDemo(), + ], + ); + } +} diff --git a/lib/widgets/themes/Material/MaterialApp/demo.dart b/lib/widgets/themes/Material/MaterialApp/demo.dart new file mode 100644 index 00000000..be00903d --- /dev/null +++ b/lib/widgets/themes/Material/MaterialApp/demo.dart @@ -0,0 +1,32 @@ +/* + * @Author: 一凨 + * @Date: 2018-12-27 16:25:25 + * @Last Modified by: 一凨 + * @Last Modified time: 2018-12-27 16:25:25 + */ + +// !!! 代码示例,并非Demo +// import 'package:flutter/material.dart'; +// class MaterialApp extends StatelessWidget { +// @override +// Widget build(BuildContext context) { +// return new MaterialApp( +// title: 'title', +// theme: new ThemeData( +// primaryColor: Color(ThemeColor), +// backgroundColor: Color(0xFFEFEFEF), +// accentColor: Color(0xFF888888), +// textTheme: TextTheme( +// //设置Material的默认字体样式 +// body1: TextStyle(color: Color(0xFF888888), fontSize: 16.0), +// ), +// iconTheme: IconThemeData( +// color: Color(ThemeColor), +// size: 35.0, +// ), +// ), +// home: new MyHomePage(), +// onGenerateRoute: Application.router.generator, +// ); +// } +// } diff --git a/lib/widgets/themes/Material/MaterialApp/index.dart b/lib/widgets/themes/Material/MaterialApp/index.dart new file mode 100644 index 00000000..9fce5d86 --- /dev/null +++ b/lib/widgets/themes/Material/MaterialApp/index.dart @@ -0,0 +1,53 @@ +/* + * @Author: 一凨 + * @Date: 2018-12-27 16:25:22 + * @Last Modified by: 一凨 + * @Last Modified time: 2019-01-07 15:52:45 + */ +import 'package:flutter/material.dart'; +import '../../../../common/widget_demo.dart'; + +const String content0 = ''' +### **简介** +> MaterialApp 代表 Material 设计风格的应用 +- 包含许多 Material设计风格所需要的一些基本控件 +- 在 WidgetsApp 中通过添加一些特定与 Material 设计风格的属性 +'''; + +const String content1 = ''' +### **基本用法** +> 这里我们着重介绍MaterialApp 主要属性 +- title : 在任务管理窗口中所显示的应用名字 +- theme : 应用各种 UI 所使用的主题颜色 +- color : 应用的主要颜色值(primary color),也就是安卓任务管理窗口中所显示的应用颜色 +- home : 应用默认所显示的界面 Widget +- routes : 应用的顶级导航表格,这个是多页面应用用来控制页面跳转的,类似于网页的网址 +- initialRoute :第一个显示的路由名字,默认值为 Window.defaultRouteName +- onGenerateRoute : 生成路由的回调函数,当导航的命名路由的时候,会使用这个来生成界面 +- onLocaleChanged : 当系统修改语言的时候,会触发å这个回调 +- navigatorObservers : 应用 Navigator 的监听器 +- debugShowMaterialGrid : 是否显示 Material design 基础布局网格,用来调试 UI 的工具 +- showPerformanceOverlay : 显示性能标签 +- checkerboardRasterCacheImages 、showSemanticsDebugger、debugShowCheckedModeBanner 各种调试开关 + +'''; + +class Demo extends StatefulWidget { + static const String routeName = '/themes/Material/MaterialApp'; + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + @override + Widget build(BuildContext context) { + return WidgetDemo( + contentList: [ + content0, + content1, + ], + title: 'MaterialApp', + docUrl: 'https://docs.flutter.io/flutter/material/MaterialApp-class.html', + codeUrl: '../main.dart', + ); + } +} \ No newline at end of file diff --git a/lib/widgets/themes/Material/MaterialButton/demo.dart b/lib/widgets/themes/Material/MaterialButton/demo.dart new file mode 100644 index 00000000..03a5436e --- /dev/null +++ b/lib/widgets/themes/Material/MaterialButton/demo.dart @@ -0,0 +1,51 @@ +/* + * @Author: 一凨 + * @Date: 2018-12-27 16:25:25 + * @Last Modified by: 一凨 + * @Last Modified time: 2018-12-27 16:25:25 + */ +import 'package:flutter/material.dart'; + +class MaterialButtonDemo extends StatelessWidget { + final TextStyle txtStyle = TextStyle(color: Colors.white); + + @override + Widget build(BuildContext context) { + return Container( + child: Column( + children: [ + MaterialButton( + onPressed: () { + print('click MaterialButton'); + }, + child: Text( + 'MaterialButton', + style: txtStyle, + ), + color: Theme.of(context).primaryColor, + ), + FlatButton.icon( + icon: Icon( + Icons.bubble_chart, + color: Colors.white, + ), + label: Text( + 'FlatButton', + style: txtStyle, + ), + onPressed: () { + print('click FlatButton'); + }, + color: Theme.of(context).primaryColor, + ), + RaisedButton( + onPressed: () { + print('click RaisedButton'); + }, + child: Text('RaisedButton'), + ) + ], + ), + ); + } +} diff --git a/lib/widgets/themes/Material/MaterialButton/index.dart b/lib/widgets/themes/Material/MaterialButton/index.dart new file mode 100644 index 00000000..6658e2f2 --- /dev/null +++ b/lib/widgets/themes/Material/MaterialButton/index.dart @@ -0,0 +1,47 @@ +/* + * @Author: 一凨 + * @Date: 2018-12-27 16:25:22 + * @Last Modified by: 一凨 + * @Last Modified time: 2018-12-27 16:35:39 + */ +import 'package:flutter/material.dart'; +import '../../../../common/widget_demo.dart'; +import './demo.dart'; + +const String content0 = ''' +### **简介** +> 用于构建一个依赖于ButtonThem 和 Theme的按钮widget +- 如果有必要,按钮的大小是自是适配于其子widget的 +- 最好不要直接使用这个widget,而应该可以考虑使用FlatButton、OutlineButton或者RaiseButton,他们包含一些和主题风格相适配的一些基础样式 +- 如果要直接创建按钮而不继承主题默认值,可以考虑使用 RawMaterialButton +- 如果想使用ink-splash的效果但是又不想使用button,可以考虑使用InkWell +'''; +const String content1 = ''' +### **基本用法** +> 尽量不要直接使用 MaterialButton +- 如果 MaterialButton上的onPress为null,则按钮处于被禁用状态 +- IconButton 可以创建一些带有 图标的按钮 +'''; + +class Demo extends StatefulWidget { + static const String routeName = '/themes/Material/MaterialButton'; + + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + @override + Widget build(BuildContext context) { + return WidgetDemo( + contentList: [ + content0, + content1, + MaterialButtonDemo(), + ], + title: 'MaterialButton', + codeUrl: 'Material/MaterialButton/demo.dart', + docUrl: + 'https://docs.flutter.io/flutter/material/MaterialButton-class.html', + ); + } +} diff --git a/lib/widgets/themes/Material/MaterialColor/demo.dart b/lib/widgets/themes/Material/MaterialColor/demo.dart new file mode 100644 index 00000000..003163b3 --- /dev/null +++ b/lib/widgets/themes/Material/MaterialColor/demo.dart @@ -0,0 +1,230 @@ +/* + * @Author: 一凨 + * @Date: 2018-12-27 16:25:25 + * @Last Modified by: 一凨 + * @Last Modified time: 2018-12-27 16:25:25 + */ +import 'package:flutter/material.dart'; + +const double kColorItemHeight = 48.0; + +class Palette { + Palette({this.name, this.primary, this.accent, this.threshold = 900}); + + final String name; + final MaterialColor primary; + + /** + * MaterialAccentColor:定义单一的色滴,颜色的阴影用索引表示, + * 索引比较小的颜色比较浅,较大的索引较暗 + */ + final MaterialAccentColor accent; + final int + threshold; // titles for indices > threshold are white, otherwise black + + bool get isValid => name != null && primary != null && threshold != null; +} + +final List allPalettes = [ + Palette( + name: 'RED', + primary: Colors.red, + accent: Colors.redAccent, + threshold: 300), + Palette( + name: 'PINK', + primary: Colors.pink, + accent: Colors.pinkAccent, + threshold: 200), + Palette( + name: 'PURPLE', + primary: Colors.purple, + accent: Colors.purpleAccent, + threshold: 200), + Palette( + name: 'DEEP PURPLE', + primary: Colors.deepPurple, + accent: Colors.deepPurpleAccent, + threshold: 200), + Palette( + name: 'INDIGO', + primary: Colors.indigo, + accent: Colors.indigoAccent, + threshold: 200), + Palette( + name: 'BLUE', + primary: Colors.blue, + accent: Colors.blueAccent, + threshold: 400), + Palette( + name: 'LIGHT BLUE', + primary: Colors.lightBlue, + accent: Colors.lightBlueAccent, + threshold: 500), + Palette( + name: 'CYAN', + primary: Colors.cyan, + accent: Colors.cyanAccent, + threshold: 600), + Palette( + name: 'TEAL', + primary: Colors.teal, + accent: Colors.tealAccent, + threshold: 400), + Palette( + name: 'GREEN', + primary: Colors.green, + accent: Colors.greenAccent, + threshold: 500), + Palette( + name: 'LIGHT GREEN', + primary: Colors.lightGreen, + accent: Colors.lightGreenAccent, + threshold: 600), + Palette( + name: 'LIME', + primary: Colors.lime, + accent: Colors.limeAccent, + threshold: 800), + Palette(name: 'YELLOW', primary: Colors.yellow, accent: Colors.yellowAccent), + Palette(name: 'AMBER', primary: Colors.amber, accent: Colors.amberAccent), + Palette( + name: 'ORANGE', + primary: Colors.orange, + accent: Colors.orangeAccent, + threshold: 700), + Palette( + name: 'DEEP ORANGE', + primary: Colors.deepOrange, + accent: Colors.deepOrangeAccent, + threshold: 400), + Palette(name: 'BROWN', primary: Colors.brown, threshold: 200), + Palette(name: 'GREY', primary: Colors.grey, threshold: 500), + Palette(name: 'BLUE GREY', primary: Colors.blueGrey, threshold: 500), +]; + +class ColorItem extends StatelessWidget { + const ColorItem({ + Key key, + @required this.index, + @required this.color, + this.prefix = '', + }) : assert(index != null), + assert(color != null), + assert(prefix != null), + super(key: key); + + final int index; + final Color color; + final String prefix; + + String colorString() => + "#${color.value.toRadixString(16).padLeft(8, '0').toUpperCase()}"; + + @override + Widget build(BuildContext context) { + return Semantics( + container: true, + child: Container( + height: kColorItemHeight, + padding: const EdgeInsets.symmetric(horizontal: 16.0), + color: color, + child: SafeArea( + top: false, + bottom: false, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text('$prefix$index'), + Text(colorString()), + ], + ), + ), + ), + ); + } +} + +class PaletteTabView extends StatelessWidget { + PaletteTabView({ + Key key, + @required this.colors, + }) : assert(colors != null && colors.isValid), + super(key: key); + + final Palette colors; + + static const List primaryKeys = [ + 50, + 100, + 200, + 300, + 400, + 500, + 600, + 700, + 800, + 900 + ]; + static const List accentKeys = [100, 200, 400, 700]; + + @override + Widget build(BuildContext context) { + final TextTheme textTheme = Theme.of(context).textTheme; + final TextStyle whiteTextStyle = + textTheme.body1.copyWith(color: Colors.white); + final TextStyle blackTextStyle = + textTheme.body1.copyWith(color: Colors.black); + final List colorItems = primaryKeys.map((int index) { + return DefaultTextStyle( + style: index > colors.threshold ? whiteTextStyle : blackTextStyle, + child: ColorItem(index: index, color: colors.primary[index]), + ); + }).toList(); + + if (colors.accent != null) { + colorItems.addAll(accentKeys.map((int index) { + return DefaultTextStyle( + style: index > colors.threshold ? whiteTextStyle : blackTextStyle, + child: + ColorItem(index: index, color: colors.accent[index], prefix: 'A'), + ); + }).toList()); + } + + return ListView( + itemExtent: kColorItemHeight, + children: colorItems, + ); + } +} + +class ColorDemo extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + height: 1000.0, + child: DefaultTabController( + length: allPalettes.length, + child: Scaffold( + appBar: AppBar( + elevation: 0.0, + title: const Text('Colors'), + bottom: TabBar( + isScrollable: true, + tabs: allPalettes + .map((Palette swatch) => Tab(text: swatch.name)) + .toList(), + ), + ), + body: TabBarView( + children: allPalettes.map((Palette colors) { + return PaletteTabView(colors: colors); + }).toList(), + ), + ), + ), + ); + } +} diff --git a/lib/widgets/themes/Material/MaterialColor/index.dart b/lib/widgets/themes/Material/MaterialColor/index.dart new file mode 100644 index 00000000..106346a1 --- /dev/null +++ b/lib/widgets/themes/Material/MaterialColor/index.dart @@ -0,0 +1,44 @@ +/* + * @Author: 一凨 + * @Date: 2018-12-27 16:25:22 + * @Last Modified by: 一凨 + * @Last Modified time: 2018-12-27 16:35:39 + */ +import 'package:flutter/material.dart'; +import '../../../../common/widget_demo.dart'; +import './demo.dart'; + +const String content0 = ''' +### **简介** +> 定义单色以及具有十种色调的色样 +- 颜色的阴影由索引引用。指数越大,颜色越深。总共有十个有效指数:50、100、200、...、900. +'''; + +const String content1 = ''' +### **基础用法** +> 这里我们配合Icon来进行演示 +- 颜色的值应与指数500和shade500的值相同 +'''; + +class Demo extends StatefulWidget { + static const String routeName = '/themes/Material/MaterialColor'; + + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + @override + Widget build(BuildContext context) { + return WidgetDemo( + contentList: [ + content0, + content1, + ColorDemo(), + ], + title: "MaterialColor", + codeUrl: 'Material/MaterialColor/demo.dart', + docUrl: + 'https://docs.flutter.io/flutter/material/MaterialColor-class.html', + ); + } +} diff --git a/lib/widgets/themes/Material/MaterialPageRoute/demo.dart b/lib/widgets/themes/Material/MaterialPageRoute/demo.dart new file mode 100644 index 00000000..260e078f --- /dev/null +++ b/lib/widgets/themes/Material/MaterialPageRoute/demo.dart @@ -0,0 +1,103 @@ +import 'package:flutter/material.dart'; + +class User { + final String account, email; + + const User({ + this.account, + this.email, + }); +} + +class FirstPage extends StatefulWidget { + _FirstPageState createState() => _FirstPageState(); +} + +class _FirstPageState extends State { + var _usernameController = new TextEditingController(); + var _emailController = new TextEditingController(); + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Padding( + child: new Text( + "账号登录", + textAlign: TextAlign.center, + style: new TextStyle(fontWeight: FontWeight.bold, fontSize: 20), + ), + padding: EdgeInsets.only(bottom: 10.0), + ), + TextFormField( + decoration: InputDecoration(labelText: 'account'), + controller: _usernameController, + ), + TextFormField( + decoration: InputDecoration(labelText: "email"), + controller: _emailController, + ), + new RaisedButton( + child: Text("点击跳转"), + onPressed: () { + var route = new MaterialPageRoute( + builder: (BuildContext context) => new SecondPage( + value: User( + account: _usernameController.text, + email: _emailController.text)), + ); + Navigator.of(context).push(route); + }, + ) + ], + ); + } +} + +class SecondPage extends StatefulWidget { + final User value; + + SecondPage({Key key, this.value}) : super(key: key); + + _SecondPageState createState() => _SecondPageState(); +} + +class _SecondPageState extends State { + @override + Widget build(BuildContext context) { + return new Scaffold( + appBar: new AppBar( + title: Text("MaterialPageRoute2"), + ), + body: new Container( + child: new Center( + child: Column( + children: [ + Container( + padding: EdgeInsets.only(top: 30.0), + child: new Text("登陆成功!!!", + style: TextStyle( + fontSize: 28, fontWeight: FontWeight.bold))), + Padding( + child: new Text( + 'account:${widget.value.account}', + textAlign: TextAlign.center, + style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold), + ), + padding: EdgeInsets.only(bottom: 20.0, top: 40.0), + ), + Padding( + child: new Text( + 'email:${widget.value.email}', + textAlign: TextAlign.center, + style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold), + ), + padding: EdgeInsets.only(bottom: 20.0), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/widgets/themes/Material/MaterialPageRoute/index.dart b/lib/widgets/themes/Material/MaterialPageRoute/index.dart new file mode 100644 index 00000000..fee37767 --- /dev/null +++ b/lib/widgets/themes/Material/MaterialPageRoute/index.dart @@ -0,0 +1,40 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_rookie_book/common/widget_demo.dart'; +import './demo.dart'; + +const Text0 = ''' +### **简介** +> 页面跳转携带参数替换整个屏幕的页面路由。 +- 对于Android,页面的进入以下方滑动向上,页面退出,以上方滑动向下方。在ios上,页面进度从右边滑入,退出相反。 +- 默认情况下,当路由器被另外一个替换时,前一个路由将被保留在内存中,如果希望在不需要的时候能够释放资源,请将maintainState设置为false +'''; + +const String Text1 = """ +### **基本用法** +> 如下图示例: + +"""; + +class Demo extends StatefulWidget { + static const String routeName = '/element/themes/Material/MaterialPageRoute'; + + @override + State createState() => _DemoState(); +} + +class _DemoState extends State { + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'MaterialPageRoute', + codeUrl: 'elements/themes/Material/MaterialPageRoute', + docUrl: + 'https://docs.flutter.io/flutter/material/MaterialPageRoute-class.html', + contentList: [ + Text0, + Text1, + FirstPage(), + ], + ); + } +} diff --git a/lib/widgets/themes/Material/MergeableMaterialItem/demo.dart b/lib/widgets/themes/Material/MergeableMaterialItem/demo.dart new file mode 100644 index 00000000..df54a53e --- /dev/null +++ b/lib/widgets/themes/Material/MergeableMaterialItem/demo.dart @@ -0,0 +1,70 @@ +/* + * @Author: xiaojia.dxj + * @Date: 2019-01-08 11:33:21 + * @Last Modified by: xiaojia.dxj + * @Last Modified time: 2019-01-08 15:24:14 + */ +import 'package:flutter/material.dart'; + +class MergeableMaterialItemDemo extends StatefulWidget { + _MergeableMaterialItemState createState() => _MergeableMaterialItemState(); +} + +class _MergeableMaterialItemState extends State { + final List items = []; + bool currIndex = false; + int currIndexNum = 1; + + _isChildExpanded() { + setState(() { + currIndex ? currIndex = false : currIndex = true; + currIndexNum++; + }); + } + + @override + Widget build(BuildContext context) { + items.add( + /** + * class MaterialSlice extends MergeableMaterialItem + */ + new MaterialSlice( + key: new ValueKey(currIndexNum), + child: new Column(children: [ + // header, + new AnimatedCrossFade( + firstChild: new Container( + height: 20.0, + width: 20.0, + color: Colors.green, + ), + secondChild: new Container( + height: 20.0, + width: 20.0, + color: Colors.red, + ), + crossFadeState: currIndex + ? CrossFadeState.showSecond + : CrossFadeState.showFirst, + firstCurve: + const Interval(0.0, 0.6, curve: Curves.fastOutSlowIn), + secondCurve: + const Interval(0.4, 1.0, curve: Curves.fastOutSlowIn), + sizeCurve: Curves.fastOutSlowIn, + duration: Duration(microseconds: 6), + ) + ]))); + + return Column( + children: [ + new MergeableMaterial(hasDividers: true, children: items), + new RaisedButton( + child: Text("点击添加"), + onPressed: () { + _isChildExpanded(); + }, + ) + ], + ); + } +} diff --git a/lib/widgets/themes/Material/MergeableMaterialItem/index.dart b/lib/widgets/themes/Material/MergeableMaterialItem/index.dart new file mode 100644 index 00000000..7bd1a322 --- /dev/null +++ b/lib/widgets/themes/Material/MergeableMaterialItem/index.dart @@ -0,0 +1,45 @@ +/* + * @Author: xiaojia.dxj + * @Date: 2019-01-07 16:36:43 + * @Last Modified by: xiaojia.dxj + * @Last Modified time: 2019-01-08 14:12:32 + */ + +import 'package:flutter/material.dart'; +import '../../../../common/widget_demo.dart'; +import './demo.dart'; + +const String content0 = ''' +### **简介** +> MaterialSlice 和 MaterialGap的基本类型 +- 所有的MergeableMaterialItem对象都需要LocalKey +'''; + +const String content1 = ''' +### **基础用法** +> MaterialSlice进行演示 +- MaterialSlice做为 MergeableMaterial子类。它作为Material,可以和其他的slices合并使用 +'''; + +class Demo extends StatefulWidget { + static const String routeName = '/themes/Material/MergeableMaterialItem'; + + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + @override + Widget build(BuildContext context) { + return WidgetDemo( + contentList: [ + content0, + content1, + MergeableMaterialItemDemo(), + ], + title: "MergeableMaterialItem", + codeUrl: 'Material/MergeableMaterialItem/demo.dart', + docUrl: + 'https://docs.flutter.io/flutter/material/MergeableMaterialItem-class.html', + ); + } +} diff --git a/lib/widgets/themes/Material/index.dart b/lib/widgets/themes/Material/index.dart new file mode 100644 index 00000000..8c36a63f --- /dev/null +++ b/lib/widgets/themes/Material/index.dart @@ -0,0 +1,45 @@ +import "package:flutter/material.dart"; +import '../../../model/widget.dart'; + +import 'MaterialPageRoute/index.dart' as MaterialPageRoute; +import 'MaterialAccentColor/index.dart' as MaterialAccentColor; +import 'MaterialApp/index.dart' as MaterialApp; +import 'MaterialButton/index.dart' as MaterialButton; +import 'MaterialColor/index.dart' as MaterialColor; +import 'MergeableMaterialItem/index.dart' as MergeableMaterialItem; + + +List widgetPoints = [ + WidgetPoint( + name: 'MaterialPageRoute', + routerName: MaterialPageRoute.Demo.routeName, + buildRouter: (BuildContext context) => MaterialPageRoute.Demo(), + ), + WidgetPoint( + name: 'MaterialApp', + routerName: MaterialApp.Demo.routeName, + buildRouter: (BuildContext context) => MaterialApp.Demo(), + ), + WidgetPoint( + name: 'MaterialColor', + routerName: MaterialColor.Demo.routeName, + buildRouter: (BuildContext context) => MaterialColor.Demo(), + ), + WidgetPoint( + name: 'MaterialButton', + routerName: MaterialButton.Demo.routeName, + buildRouter: (BuildContext context) => MaterialButton.Demo(), + ), + +WidgetPoint( + name: 'MaterialAccentColor', + routerName: MaterialAccentColor.Demo.routeName, + buildRouter: (BuildContext context) => MaterialAccentColor.Demo(), + ), + WidgetPoint( + name: 'MergeableMaterialItem', + routerName: MergeableMaterialItem.Demo.routeName, + buildRouter: (BuildContext context) => MergeableMaterialItem.Demo(), + ), + +]; diff --git a/lib/widgets/themes/index.dart b/lib/widgets/themes/index.dart index e69de29b..e7a62e6c 100644 --- a/lib/widgets/themes/index.dart +++ b/lib/widgets/themes/index.dart @@ -0,0 +1,14 @@ +/* + * @Author: xiaojia.dxj + * @Date: 2018-12-24 16:31:09 + * @Last Modified by: xiaojia.dxj + * @Last Modified time: 2018-12-24 16:31:09 + */ + +import './Material/index.dart' as Material; + +List getWidgets() { + List result = []; + result.addAll(Material.widgetPoints); + return result; +} \ No newline at end of file