From e5148246a5303d63bbb868d4c6d3ec48fd3b4b7b Mon Sep 17 00:00:00 2001 From: toly <1981462002@qq.com> Date: Sun, 11 Apr 2021 10:36:31 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E6=B7=BB=E5=8A=A0CupertinoFullscre?= =?UTF-8?q?enDialogTransition=E3=80=81CupertinoPageTransition=E3=80=81Html?= =?UTF-8?q?ElementView=E3=80=81PrimaryScrollController=20=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E4=BB=8B=E7=BB=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle | 8 ++-- android/key.properties | 4 ++ assets/flutter.db | Bin 983040 -> 987136 bytes .../rep/impl/catagory_db_repository.dart | 3 -- .../PrimaryScrollController/node1_base.dart | 36 ++++++++++++++++++ .../CupertinoContextMenu/node1_base.dart | 6 +-- .../node1_base.dart | 35 +++++++++++++++++ .../CupertinoPageTransition/node1_base.dart | 35 +++++++++++++++++ .../HtmlElementView/node1_base.dart | 30 +++++++++++++++ lib/views/widgets/exp/proxy_unit.dart | 1 + lib/views/widgets/exp/stateless_unit.dart | 4 ++ lib/views/widgets/widgets_map.dart | 12 ++++++ 12 files changed, 164 insertions(+), 10 deletions(-) create mode 100644 lib/views/widgets/ProxyWidget/PrimaryScrollController/node1_base.dart create mode 100644 lib/views/widgets/StatelessWidget/CupertinoFullscreenDialogTransition/node1_base.dart create mode 100644 lib/views/widgets/StatelessWidget/CupertinoPageTransition/node1_base.dart create mode 100644 lib/views/widgets/StatelessWidget/HtmlElementView/node1_base.dart diff --git a/android/app/build.gradle b/android/app/build.gradle index 800bc5f..2486e7f 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -54,10 +54,10 @@ android { signingConfigs { release { -// keyAlias keystoreProperties['keyAlias'] -// keyPassword keystoreProperties['keyPassword'] -// storeFile file(keystoreProperties['storeFile']) -// storePassword keystoreProperties['storePassword'] + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile file(keystoreProperties['storeFile']) + storePassword keystoreProperties['storePassword'] } } buildTypes { diff --git a/android/key.properties b/android/key.properties index e69de29..c78b0c5 100644 --- a/android/key.properties +++ b/android/key.properties @@ -0,0 +1,4 @@ +storePassword=toly1994 +keyPassword=toly1994328 +keyAlias= king +storeFile=/Users/mac/Coder/files/key/toly1994.jks \ No newline at end of file diff --git a/assets/flutter.db b/assets/flutter.db index e8fc819fda824bdfd1e23f654b1abfbfc141ab1e..9e7b22a01e44148c4fa694b397cef0377f46e47b 100644 GIT binary patch delta 10527 zcmdUVX;>6j+IF8hwQr3IhJIMk?_a6jtIc-9ASWW99;pwbp!+c z!x0GhjUxcC!Ql^B@8|$n=kNt|Ic$JVhdF$$qcz}Hj+TJ89X^1!9NvI`cX$GR>1Yc0 zg~JN?SBC=lxkCc{EZ-r(+ouj5@Dm3M__2cqyy>6-Z#WR(M-BkXhx&5B5A>yg*Yy_x zujz{c-`5ucUe)se-_y-Ud{@r`d`F)P__jU=@GX5d;9vA~z&G`ofN$tC0I%rzc6fVT zPXWBFPY1lDPXl~Sp91)*J_+!mJ`V7Lo&b1W9|L$!9|c&Wj|4ocj{rQQ4+kXr5Ws4E zFyLu@5a20&AmB+o9`KmnAFxV~0X(Yr1w5kn&WE?ddQZSZdKBP6-Au;;y*pr~ZYJdw zy&K?u-Au~Mx|x)HdS}4BdMCg=dPl$t-Au}E-Au|Zy&d3Ay)EENjVoh^Zl-3t-U@J= zZl-3d?gh9-Z)$<@4c!C2Y}Qr4O}Y$Nu8V+Wx|x)XItN&)o2e<$&D3nr&D5;d%&D)_ z%%rTOYv69MzI@qoFSnV=jk5inaD3z(&i2Ar#z zY0A*d1kKUR1kKil0j6tanr3Ncg7Rl-1K@3jW@gB)#Q~;iv4E*sKfn~NH(;{X129Q5 zQ}cpmCS{stCS|H-?w2W=nVQL32;d~mOwdFv2ylWH2smCd6EsdUQ+;01na2EDYAn$Pd!Y$PY9_KET`n@p%CK%_Sd~ z0T630@)$Fk{n7yXrU3Mr4$#|N($Qw{dYP=z(+pG(bMZ!*L5XZ>2BrH@fCw`r;pQ^! z76TC0=j6Ikf8m3}!V<$mdxeMh3JvQL(IdQPx2SHR-NHgbBSQZBN?F0g)lW6(78Tax z*$v=I&$37e+LQf+b??#b*$v=Ic-hyJ7CqG*y9<*8?gis~5_`s@bgm9n}iMNf?o86Mg5*$vDqW!t8%3wq+Aqau2SKRZh1m9nwZ zik})FJR++5vj;G*l(8=qJk_9EXymh_3fYVdFFWx<-ct=iyGMjSdj#`JS;F+E@)j8p z5%uh-npdJuB(b4rLm5{Rj3-+*l(i3?R90N_p3vP}wDf7m^QdfEX$OqMx^LXv_T+)m zDa)~s<%Gd`AU~BJgo~-Ks9ba#^|qXVmM`XOtTsioBt-GN&`h)T&&#&w$yc4N zuX@Q-*W zQ~tU@w`soG1kuvf4~Dbqxc@9Wu{T4BC_hUZCt8BK!k-nb`QY5S83QuxbM2YAi3C(o!rYGtv4K1Y@A8sMFL*T6wxl`gU zp%p(IpWyx@oab(F*Z7rm7@xzxKo8@)^UbKHyg{85hRM^VVEVAynhUhPDGiZZ%OUKG z(&xrV8w#e`wd~KvavSo_mp`NGWQ0AKEIfuif+MLs=B6@}`B7{w9#U3HcbIYb4<<ZyYqYphEfkSpSlc5-WNO6s=^1QGMlw3LN54>1mC?}` zt!j=7Ep$^HK*eUJ&rQy?rzOsU*jsKHvL9+6*a;_457))>7pdj1Mu;DZZPOY@Kf3+N zWn}r($n-<;UYhcb?Bm3)kFf8=W{>wtW`n_z!xKw5fka!Q6h(Y`3x z@?#6!ohpkVp2l2%G=gr4qbQ?E5bMPvt}X6I8TYZ=fLq_{2P1F#-kR2NK|nRpj z2Zg%>n&BV>VVIfuXlG{$1C6ji1 zwoqj;rxBl?1CIljlQYtD7o&bgVIW$7tmM}~j)r zGBQjyKra|~g3xmGk&zLM{N0fprSlNUF~*5t)WH|*o|%}3Yt~Jtv5gZ(No{c~GAbs> zElJZ5^gWe-2rsl)f3SXSy=i@yFSlN{o@6ZS3hM#ucIzry#y?vNtXb9+Ya$C<~NSdX_Rt8Kgui z9hDZ`I%YCAQlaEK@_THRe3E13{jwn!$cyCJ@-%sf910vYQ*JM->`!!G={KoXdYc_5 zRZ9n?a;ZSdqc5{aN@c30VN$4MW3Dmvl85*oW;;_Lelt~kpNST$@nx}6EEiXa`5fT| zF-M#(CW^6Q4>3e+D+8@&`Zu@cPjg5W#*bGg@rkaY>Plvx{(*2 zqJGOwa-avA#&u4%Si{tv%Ew9*xswzw_7v9eH+YfrW>+(B&~@}kOsGGoK4^#~88kMG zydI1CsHDaNrJx7}R*|>mrp3Bk-K<=ZZ^><>@nVrsE5!4qFxTnqDK>T}R!_&b%zwEY|7jtI8jWk33a6Es5ed z;Q;?TKY}Y}KVid}4fKcj4?LEdfi7CE!F*mKS91_e=l9e{iI(Un9tnQhlIMifS^Sdo zl{Kz&rOwrruJx}ti>sYmE1B?!p26V}5y4@R5zeCy*On^Vkjz>3oOIajf2!w^lDgyP zz&A7$Yy-1lONAr>@7bIsrOqQIuHB`zXL=n0wRLW&a(C|5W49G(IJc$#=sr`6pU$w& z37+G41-ZHag$v|b5{gAOGX^qy-C}L4zM#yJ7fDye2GLVU;y-~MvxL14Yv&kC?5ogr zmh{L*o2Zo~sJet=lUP3sejEA0_2#I}3csF$h3YA23B|)KH=kNO#;eJEP-yBbP?)a^ zO2w}WN)`ZrBreXj!&h4`o9Qduw!&Fn1s~2qcf6oXJqBfHJNUBdgdIPbK}}4{+N)LGb1@wwcF~>71o}sb{^eX zxBi$BwhfIpvj5;q$lE_q(XvdVuPjP}@HX`!`U)cTA;Q|+KE_5G-$lKN&fuR|6ipV( zxCrAFoqLgX_o;(awFe%JPz)K<1Vj$?BSp>d>kR5khPA-aJnB!1+T&l590&0pA?RWI z0xg6 zK)UwAJ1G=T-tUdG88npii^DH*XbAao2(F^gV6tvF?yaC<>We8t35Xx=pe;jMxC=N%k$mFLNl73@yMx3`!siR^Txd8cW_P!nY9`Lk_OO7ZDmw z(%0Y^3JB-mI=l^|31mPi-b17Dq<$0T7&MOD+lD$8v;5T^c;mHXKHPXMh+?LvXWEl<9%-t3al!U-mh7*qdDT_$irbDuwqXgTWMySM zSdH0kJ{+5smuq)hFOXDsYxf4OCslRj$Blw`)!R5G(m=-0!F)UH$~557XSJ(4e7Lq| z?NjYije=^4^M1B>GcHYK{Eh3IG26Jh^Ud}4P&%LVZ#LK?uH6LIcYW2%50+oeCUD#j z)^0*ZdfH=E!xJkM8a-U_wP()N@7G}SG!&FWm|T?=wdY=aP{8Dy6%5?`jKby5x&=55 zN(y%^?^{Sx1&aN(3>QhFIrqfipLdjDl63wa_oLA)GW#d&!?-6zD;9nSt-wf#_FpAuK${^zB>KH?8k zwj%yFF^l+U2|mRpZms-(;E4YlH9TMj_jYxkF*F#b>Kiw#DX;Fskw$WOeEGZb|7VQw z|3?V>bz7{>J-2*k@iAK*>?7MV3BOU{pF`@l2FC?pE!c_X5l?8B(2%}iT|&+C4mU$V zrw>`xxoTZ~!HNgG*+^-&I9uJOwGCs;gQM+m4Dxt{?w;T7ELs0_gV@FfaQ~h|_4`-W zZQuOtxEk6*CBbOdfE44ke{wmVw!q*oxUiRO{s z9&}F{Ws?P-P*0(2YC$s;noGi3(RVnMN80((Ur{KRP#x)bjOLR;f%Gy8 z<&Zam=mji#k@W6HXH#e~ITAsSqtGIPqv)FyT1Y|sVdILtwN$(i?7DCHN zn>hLx3N0l*1L*H)w1jX&=|33pfp^LLLio8CWo<~y}BHhQ)voNJu z$j*s$dyMkQYg6cDG@?o0Bzm@pFgY-ruH_I<*5}Z{4C2VSg|r_O{^akA>BSUc$fTuo zgNg*we+|7HiZ61x)SRnGe9GxIR;ZLC_tFF-m3+6~oU=kM9iUYT$>jPWI)z5fNcb`O zTf~f96RR~P9Zt|!7}SI`5c9b`$mAM2rZd$3+iU4V6!Id2>gcr$c%U2K(m@!Fs=h~m zz@g^k!=LGPB5>08h#5txEqDtG6Xvc=9p4{L)r|WqWglboB)Ovz`a9}QF4N3ngnUSE zmZ=m`8{+g}HnXTTS=yX|$7@9nv}XRvARF1`%d}=tJ90jNIgC+Tk{-l#=8-Qc4`+U0 zQF~I{i>YQ%N765bnMxslvLg=8r%(qnY!Ks1AwQBigc+isKyqe01NN^InJ|g@l0pHb z`&4ECje^LMB&L)_oe7+bB{s7L3l`K>(59Eijx&!fjO4GxSYuAS>SY{m&n6mwk5?Je zZV7WO!)%G64z-BgTFv8>3LdA7pMy zs2lm)Y37;-iXcbdWWGbp^!3xVa8mIWQ`7=QlEAMRgN5K+s%Q3bs0W#Gk7*E56dC<1 zQ_F&l?oP2cD6r8Y!|tU}FLIP)3n{2fEmVS_DVv5FS@)P0hUhJLlQ|;Wg9S^y&x2jW zf~9WLoULb2AHud_y=bt>t=qFcf*b=)M+sWLO)U`Dc&tRmb!KA~6i19Gc7h0Y`ED%R zj|D592f7fBwb=S^`>gmHcZYKW+JGx?jpp`a6-_3)=W_!*z!10`T+=3KD*1Og7bSs~hwbK8AT*tj3N8(y z7f9>9=1|Kv&DW+8Eb|{&+u5dmIN+o}Mz};X`3c2wqw}uDFPP)xqw(!iw% zXeKHBo;!un3^MR1&LyJRBn0t&7?e)tuzap5)3-$4pAjrOEK+l3sAUHb!TOL@owd1* z8m&z)>4Qc+r@*$=o?BCQZk=K4FAX$qRf>$!h7%)=>xgPDKYq$#T+o%)hDQkH<#yN4 z>&~>M&n?Dl&+c*_J6>OP%C%)Z6z))b*Peqj?HYGU?lyex65O?`q_$?eyAXG6I_6q; z^a+JHl5f`V?)Fbr_^y{;u3t}_8#dRTSq+ZAyjMYU_K=Gw99zaPYXUen9gp>Y7;r{#Uk z5G{j@^y1%R&>YgL74M`sm(bv=QM5%K%Q{gsxZMy$uj!~|lRFXo0S46G=*7=sm=#5x zwM??R34ah*+jz!V^+PzG&} z`6oY=0c~IN3tu6D=7+EXkSR|ZyoC2v(DpMOgljZtesQ2MLIN%SI6@e0YJWhqaE}MA z_lXy*ENFeFp~Ale(DC+(0>^?E2%KzwZ%TaA1ej_QaxY!j&4aF&<_K^$;YlJE3e8MU zFnEdZJ_jP*+#&R*LExtp31evR0Y}ydXH1cvQ7T{-1b?<66w#;!`F^_)#Dj>p-6w2q z2BLn32)k4e?TK#+XH^jKrZyw^4reOVCiDj(5i1<}49AihI`xNi>@56~!>3#jrv9e#W`Ly zQI92^z7_w9(FsD|6C(pafTNpB{RI%(e4F%%d5$$9KziL11h`di=}Q&__up|+l?Mp$ zfdol6g*G@<`UQgk2h5bfdk!Vu84~XS!rN}CRK>x0)-{JTyD128ugy|F3C^irtdLr8 zAim|5(m@H%vHG2oF47>vzn_sh@gTARm!v5?2(aUADVdihf!!G+6h^P^-q#58gI`W| z7K$v9K9oT9CX&}~N?_6^khz~pvoHwr$6rYE1W??;E(!8DndE#cO=i$Ea`nDs=RkqO z|1F&mL3v$R?!|!ewio0E0n}A$CJ&^QWEd+jo~_IWvt0ZtisSzgEk=UjY89?1i@C?Cn-f)|l}pUFqf!Xx39+_kB^6x_iu!4a^1 zh~>D^{zti)F|H%k%J6uD6O4A7aVK);dpVN>Dw_I>4Eu5U=_KXvJTOs=pd?6?!$LNB zDsdc8(5J1Givs09WQ)IY&`LQd65n0X-26{ zN;JIMOTNS}QTf!Qqu(YeHw2)e4^ow8JkXMJjv@#^Lw9qPXc_1yNK+uaA}K9a=E*=m zc#~4h0X?nVp?GmXKYR8nupL#BP^nyyfQFi!QvNV$s7Z|i+u(0S%N-tsI#&F2U+AJg`z=ceSMqtP>xrUZqS{idW|{z)}T6)R87TT^pz7Gr&%x zrl=QLU?nw0on)30v(nTMMe>KxbQg-ePPBMsnC(~kY>EgHyc*&+3J8c1sCF%?L#3%PSr{fz;V`sS?K zzyUekxTL|^eyWOazZ$OO^ai7aIKX|*qU%vOo0dIL@f!}$ff!}&N0RQf72fXQZI=8iUc)<(c&Rf;MkE}(&53Pm353KpX_pQ0WbJlF&dzLfZvsMN0j5Q1R zt~C?*jx_^#+A0FRZA}HfWlaITX?cKeSOvgSRzC1`t0oV=PFjJMzP`T!4FnZTE=-oQqy7w~|U4%~00 z0ry#{z!$7;z`a&V4Semf5`nv|cwmF&q~m$Z4SddWlCsO{1bo(VlCslslJbnz9=OA5 z3*2tC20m?t1GiaDQl7F}0H3r%fLkpmHCrqvHJh#Gz$YvxHIG}qK-)4n=)d05;9`@d z05@6^u+9>I8!RU&>n#jiXE~`^YXP`5rjwf0<^td<(@Dxoa~^Po=`61057yu^(@9FL zSq^;6ECnt#OMpwvVxVPC2bw0NriNQ=7Q#i1nGdWsbAgLYCmjpSiNN`$la6`jSm0dK zNy;2^G;p@*q^8o$0#=wKfwN2}O{J!jrV`UhQ?WT1IKy<(G~IO4RAf47nr8L|PBoo0 z6-_aF!I#I(02Z1~h6>D{z;I#_QfF6iTyy+iTVK3iF$w2*%19q z1nldqjy_JDGo8@(cB0wK31fz{w9}oHo#q6ur?ZHAOa`P*0CXP*=;lPJs}r6SCl<-h zicJb}LXqf1BEbnkyfgJK&Yaz;jjM;fCB?+WXS)--C3fi+=kAo)B{?ywB-CBWnfp+Kgf2|^$_QT>5)-_l9am56IMt6Tkzan zliVqfY~YmCjhwjb-#c)p#HYkPy1r9VCrn!WP=jO$>Z2PtC3OcTRXx-oG1=Yq(G8rb z)n!e7C~xk##FYQg1C+!c$Q9zyvN~~H49?<~)kVaOtXsS8jFuXxa6Q5#N%XUV?KR_Z zP+iS>SxGmhJova1H`KRkY*;_O8aL;T*rE?=qv3lvn?J#aq9NQ7xXlvw)KHX6xPxR$4Z;v9afbi_4Qd|BBhw~z+ogW@0ZE8->bob(ueM=F;l@h7B2 z$&YU)+5G2X2W_$%LlTTo;R)B9>HsZNixuXpqwS&LD2C9_=ux{m90lg9A8H84(o*3C zoW)ns-}R~FjuNWu(H~Q9(NXwMvPkJkHVG%yBGreS!X?6Q@^&#$T_JrZ_a}qp66vgX zN)}0g{=K5eOXNDN(dKj?*+;i()%*{5J-^?+7mnH+U$5A?s;IcoQ_fwr z-EC2beYFkhrIUG_0e<-FWAAB;g6#!RSmSisx2m$L-19%J_L2sUG{OB2*+M|_gQ7crT5u2&oG|qBR5MEi(~SfA0-J`jW2BIg%rg)@-7eX171n#H0Y`I-jYz`1^MU2$D-z3V#ZYNP?e zW> z>R0r0`eAZI->t9JXX^!ej^0mC(%b97;tpCW7U;ZoOFJW+(i+7U+Ahu37Hf00>DokX zfEI_ZiVL*}%@9>mrruYts;7nNYLnWaZd4bmRpetKP%WVEs)N)xHJo0hf2cmnAM{1K zN%_0-9vwbbX~K7v=ar4ha-~K*Behb>mB~uBlA)w1u}UjNmcNxR)3)*%`E~rNd{EvY z+tMX@DS1tvM_!O;NE7AJ;t{#4*iUXpR>^^qEMAt0^t<#eob-qB_MCWhhb>J&F2Wj8 z&_uCg4(CcSD)bfFCUuK)OG%Q8rMcpFVx%wt#uQBQ@HT!AdL3nOIpE$XRzC?%M=UQL z^)Qlj5JGdVlyh}52I{riarKTmRM{v0E>Dt9ORYp(_*jUetEf&U;e$AYPeWerZLSn< z)0M@Qp!X5GFdUuG6aKo*InFiM*r@+QkJaX?Z>en*6I8iIIxb!ny9o94ByBlF21gMx8)3H4&N5%_nc zWyl;qM7G>Jqd3!E9EttyzUie87^=DrU!25aBkF6ezQ*|_uy_4hgJ%|bU zxPuD~VV!5;QKB~Z!5F-qH>;f2&WJ?*Z0B73tcbGMz{NP4qLFO&Qapl3BiP%u_%cGn z+3w}|7(&BX(Mp`oqoHi~YP=bv(X7vUyn~=o?8YW6Qk2bZZ^r&qBWNk7Y?Ef=kI_5N;MF50GWRL`flz;26@(;C*MuavUq=D2&dOu4H}OXT zUOFq6&AN#1@b$+LmC+VXdW&{NTcFx%glk(AvX6hoPhwQSs_x^J7_UjnXLm2-B++n| z9_D#YwS=iW5B2XNV_E)G7*CFDC9mnjEpdV#!k!mM8bMRo4TS_zyljDo<=n*!Nd5bo zAk=X36}|@AR`7UDUJ=_CMDj$uDrDNhDI`Rw4=3GG2}=zpT?v}WX1668M#anM+i*$bIu z6pyMH?nf^0sFHm;fPBcK3buDJS&PvEmO7kVLTEl~Ig;Gt(L5G3ihNJdTqceqe^TW* zr@ks}p_je^MNlh=?C?f1=Eos9e%)VMq=JAMUIjhJ`0|~767E&!BiJjc;3{+%6J4s6y(pXX> zVHm0G`zB|=3OjL_7(9Yaew5@B44DT)ks^DSr6Ive*6N$-gK z*p|Cw509F$e*Yk=DDq|J?~`bZhQ3Tc5MhISDAF(mHD^Ei(qX(2C~?Rw&wQ+4bZ<{d zrG2Mf3$lk7Y3=Q}f1*To(x1*lD1fB~(&rV(^R;kVFQ8zyFp|RTf>=Wg{h6YcY+Dx^ zN>M0#C7JHUs0AzPPCH5{jBV^qe-cnDwrn76qNoi^8%`(is5RR<5{{cFf(;r&Tk~-4 zD9ND%bkv?5nnFPa?bw(i`UQ{LvczKAhoBB@K^a{yph%|Aq1k?}DA*>QWpnbzj8V?% z!_NCr$*^Z+8v*uSw~%drm2FTKwvxUgqmJzJjr4g#je!Ut;lf-29NaQexIw|eLaY!#K)a!CAxPGGJlOqa+NNM6+P>X| z00z51LkB(E{e&?J%3wc?5YhxtZ0E7UOFHQJvPbBlfm*}Lg{LW~_4phCc70#==3=3b z4C>WZ2>uc%He!R&nSf$P)C)&lpk95K&`AT;rXCRdebHbx;&lPm+RRNo%|Wc!8$yTH zpxqhY2p2TaXU1J&DNoBbB$`9nyT1r$TY_Sr@E4(e`G(o%aJC{)+#d@1?G`V3d_c!f z_ZIuK1ifC*6?Z70*X1+B*#uQJm5HMW*mrcLIKTz|eA+Aa@j+wR^*XVcFBtZ>ono?z zz;G{$OA(sD*h^v|LgQIzqtn&GO%>)irXLhP2}6_E_48toj&j+bm&Nk}n#|7M5LZel zpXJ^W&x$CIb^1-rmr)^G&r2^mvg<2I*A+CC#rjG;D9CF@pj1hahg}Mh+CjXwa%yur z5N!o>twE%=qdA?8PL+0JvT}e~#D=z$&QLUswTPCkk*0Ks`iSHvr__;~Q2z@;R<<{b zS(;mFpkT3^NzycmyiLQUCIqr$BcvT7$ZlMYBxxY80*{oTf!v;*C5^=(w|`bj;S}T+ zHeZ@%fV7q^la9(Dv&;?B4Gc1it(TUoAUn2QI!r)zvvx_hG?3WjM(HdCiNzk4GF>3I z^0%d29c1^>1?g#pH>+9ICFygXHy5$2E7BhLv9Rg76ygGFwfI@ugL$)tz5S~+M*~fz zQ+Xf-t*un#?eHI478@wT5+UqnJNZ3FUxyOpa|ATEtgAdk1&v+Il!wEs4~rZm-0&y$~)KvC;08J@mAETLBRBgn=2 zuaw_&WYxS*?oB{x<865a0j0gLMLtA9UQ@QqSU`bn`g3wE0YUw^M~;?2NUdI$pYQ`g z9ePXNW`MB9UX%|TAf#s3FM@Zj&sS!; zz&qJ1lo$mZV{TMl^#$jo?NSPL5c1AOO8J>gf5S@~a4nNxrARK6u%+NsGbi7tX=$w~^|8AFxS7foi$HCNUN2 zJq$L9oTI{{v@Z)>s7gLym9SOnei5v4u1=la3=VMJcByG9m}LG-YOn~F*?36Zt%6a~ zPN~NT9LWCpw%S1gn?!z~j+fxT=KWO7lfWF;E~}qmFvsz0Dm-Jd*vy+MJc&oLi{GiU zWKc){UsOohXjXn-9Y;YOXOZR+K_&6Bc0d7TT=&zuQ8bQ41Zy{C(1qGY>r3>B@MLhy zOWZ5dI%XByCmuIK?DSLmlXmz`J=7NSls>l7R!gyOx93H6u!Hs-4-%Rft;I+nloj#X zPy)jFG+E2XAe_|hTCE7eIn_(sBKBpymV`kq0h_fr1?zg_0hkQz&h!{dX~yt3)!Z&dM^=l^GURROy;dc?D0f>w~M!`S!N&o7Y#JieWczf z@>UJIoueO+RsO+K+3HsxHPK!lr)Jv$ZnZUQQ>cI9sONr>eqILUd{CkLNuZ!>3v^iq z<@~Tj@2-JrqSxz?UxBTET%Vag_`mUT#fRR!hvp3?tx zl;iu34om)v+G?-H_%r%yf6&glOZqtxw3B;7AE<$5_T1IswCBrO{-$qGKtnHL<6QwX zv`{gwQqWGGkD*}t^%Fkc09NK_oN5c|NlY<*#h|86sm47C6cp9R2+=?>nInv|yrZCO zV0K%)36!FF#!~0lp8rbC}>)x5v!{a5Sv7~HsCv9oendjr$ag^!L-oO%Y6V{sZHT04Cc0iE&H<6Xjkuc2O{q_>GZC!B~U8GbR%- t(carelnQ3L_`9)C)e>N}z`I}GhBR(%-HEULS-I#MNkLR^Xs+(~zW~4C(6Imj diff --git a/lib/repositories/rep/impl/catagory_db_repository.dart b/lib/repositories/rep/impl/catagory_db_repository.dart index 98002cb..784156a 100644 --- a/lib/repositories/rep/impl/catagory_db_repository.dart +++ b/lib/repositories/rep/impl/catagory_db_repository.dart @@ -11,9 +11,6 @@ import 'package:flutter_unit/repositories/rep/category_repository.dart'; import 'package:sqflite/sqflite.dart'; - - - /// create by 张风捷特烈 on 2020-04-21 /// contact me by email 1981462002@qq.com /// 说明: diff --git a/lib/views/widgets/ProxyWidget/PrimaryScrollController/node1_base.dart b/lib/views/widgets/ProxyWidget/PrimaryScrollController/node1_base.dart new file mode 100644 index 0000000..c59121f --- /dev/null +++ b/lib/views/widgets/ProxyWidget/PrimaryScrollController/node1_base.dart @@ -0,0 +1,36 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/3/31 +/// contact me by email 1981462002@qq.com +/// +/// 说明: 335 PrimaryScrollController 5 初始滑动控制器 它是 InheritedWidget 子类,通过 context 向子树中的可滑动视图提供默认的 ScrollController 对象。 +// { +// "widgetId": 335, +// "name": 'PrimaryScrollController 介绍', +// "priority": 1, +// "subtitle": +// "【controller】 : 滑动控制器 【ScrollController】\n" +// "【child】 : 子组件 【Widget】", +// } +class PrimaryScrollControllerDemo extends StatelessWidget { + final String info = + 'PrimaryScrollController 是 InheritedWidget 子类,也就说明它可以为子树组件提供某些默认数据,' + '子树可以通过 context 来获取上层该组件的提供 ScrollController 对象。\n' + '对于一些可滑动组件 ScrollView、SingleChildScrollView、NestedScrollView 等,' + '在使用者未提供 ScrollController 时,且 primary 属性为 true 时(默认true) ,' + '会使用上层 PrimaryScrollController 组件提供的滑动控制器。\n' + '使用 MaterialApp 组件,其已经内置 PrimaryScrollController,'; + + @override + Widget build(BuildContext context) { + + ScrollController label = PrimaryScrollController.of(context); + + return Container( + color: Colors.blue.withOpacity(0.1), + padding: EdgeInsets.all(10), + margin: EdgeInsets.all(10), + child: Text(info+"当前其持有的滑动控制器对象: $label"), + ); + } +} diff --git a/lib/views/widgets/StatefulWidget/CupertinoContextMenu/node1_base.dart b/lib/views/widgets/StatefulWidget/CupertinoContextMenu/node1_base.dart index 8508d4a..0c9f7a4 100644 --- a/lib/views/widgets/StatefulWidget/CupertinoContextMenu/node1_base.dart +++ b/lib/views/widgets/StatefulWidget/CupertinoContextMenu/node1_base.dart @@ -1,3 +1,6 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + /// create by 张风捷特烈 on 2020-03-25 /// contact me by email 1981462002@qq.com @@ -11,9 +14,6 @@ // "【actions】 : 行为组件集 【List】\n" // "【previewBuilder】 : 动画构造器 【ContextMenuPreviewBuilder】", // } -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; - class CustomCupertinoContextMenu extends StatelessWidget { @override Widget build(BuildContext context) { diff --git a/lib/views/widgets/StatelessWidget/CupertinoFullscreenDialogTransition/node1_base.dart b/lib/views/widgets/StatelessWidget/CupertinoFullscreenDialogTransition/node1_base.dart new file mode 100644 index 0000000..6dfce8a --- /dev/null +++ b/lib/views/widgets/StatelessWidget/CupertinoFullscreenDialogTransition/node1_base.dart @@ -0,0 +1,35 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020/4/11 +/// contact me by email 1981462002@qq.com +/// +/// 说明: 219 CupertinoFullscreenDialogTransition 0 全页面过渡变换 创建一个 iOS 风格的转换,用于唤出全屏对话框。link 216 +// { +// "widgetId": 219, +// "name": '组件介绍', +// "priority": 1, +// "subtitle": +// "【child】 : 子组件 【Widget】\n" +// "【linearTransition】 : 是否线性转换 【bool】\n" +// "【primaryRouteAnimation】 : 初始路由动画 【Animation】\n" +// "【secondaryRouteAnimation】 : 第二路由动画 【Animation】", +// } + +class CupertinoFullscreenDialogTransitionDemo extends StatelessWidget { + final String info = + '和 CupertinoPageTransition 一样,该组件底层基于 SlideTransition 组件实现,' + '主要用途是模仿 iOS 风格,用于唤出全屏对话框动画过渡效果。' + '源码中唯一的使用处是 CupertinoPageRoute 处理路由跳转动画时,一般不会单独使用。' + '当【route.fullscreenDialog】为 true 时,会使用 CupertinoFullscreenDialogTransition 组件,否则使用 CupertinoPageTransition 组件。' + '其中个属性信息和 CupertinoPageTransition 组件一致,详见之。'; + + @override + Widget build(BuildContext context) { + return Container( + color: Colors.blue.withOpacity(0.1), + padding: EdgeInsets.all(10), + margin: EdgeInsets.all(10), + child: Text(info), + ); + } +} diff --git a/lib/views/widgets/StatelessWidget/CupertinoPageTransition/node1_base.dart b/lib/views/widgets/StatelessWidget/CupertinoPageTransition/node1_base.dart new file mode 100644 index 0000000..8cd35c9 --- /dev/null +++ b/lib/views/widgets/StatelessWidget/CupertinoPageTransition/node1_base.dart @@ -0,0 +1,35 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/4/11 +/// contact me by email 1981462002@qq.com +/// +/// 说明: 216 CupertinoPageTransition 0 风格的页面过渡动画变换 提供一个 iOS 风格的页面过渡动画。 link 219 +// { +// "widgetId": 216, +// "name": 'CupertinoPageTransition 介绍', +// "priority": 1, +// "subtitle": +// "【child】 : 子组件 【Widget】\n" +// "【linearTransition】 : 是否线性转换 【bool】\n" +// "【primaryRouteAnimation】 : 初始路由动画 【Animation】\n" +// "【secondaryRouteAnimation】 : 第二路由动画 【Animation】", +// } +class CupertinoPageTransitionDemo extends StatelessWidget { + final String info = + '该组件底层基于 SlideTransition 组件实现,主要用途是模仿 iOS 风格,处理页面间跳转的过渡动画。' + '源码中唯一的使用处是 CupertinoPageRoute 处理路由跳转动画时,一般不会单独使用。' + '如 A 跳转到 B, primaryRouteAnimation 和 secondaryRouteAnimation 都是一个 0.0->1.0 的动画,' + '前者用于处理 B 界面进入过渡动画;后者用于处理 A 界面被覆盖的过渡动画。' + ; + + @override + Widget build(BuildContext context) { + return Container( + color: Colors.blue.withOpacity(0.1), + padding: EdgeInsets.all(10), + margin: EdgeInsets.all(10), + child: Text(info ), + ); + } +} diff --git a/lib/views/widgets/StatelessWidget/HtmlElementView/node1_base.dart b/lib/views/widgets/StatelessWidget/HtmlElementView/node1_base.dart new file mode 100644 index 0000000..d2e28d4 --- /dev/null +++ b/lib/views/widgets/StatelessWidget/HtmlElementView/node1_base.dart @@ -0,0 +1,30 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/4/11 +/// contact me by email 1981462002@qq.com +/// +/// 说明: 213 HtmlElementView 0 在 Flutter Web 的 Widget 层次结构中嵌入一个 HTML 元素。 +// { +// "widgetId": 213, +// "name": 'HtmlElementView 介绍', +// "priority": 1, +// "subtitle": +// "【child】 : 子组件 【child】\n" +// "【viewType】 : html元素唯一表识 【String】", +// } +class HtmlElementViewDemo extends StatelessWidget { + final String info = + '该组件只能用于 Flutter Web 中,嵌入 Html 元素的较为昂贵。' + '内部基于 PlatformViewLink 和 PlatformViewSurface 组件实现。'; + + @override + Widget build(BuildContext context) { + return Container( + color: Colors.blue.withOpacity(0.1), + padding: EdgeInsets.all(10), + margin: EdgeInsets.all(10), + child: Text(info), + ); + } +} diff --git a/lib/views/widgets/exp/proxy_unit.dart b/lib/views/widgets/exp/proxy_unit.dart index 3992a74..fdc1ec8 100644 --- a/lib/views/widgets/exp/proxy_unit.dart +++ b/lib/views/widgets/exp/proxy_unit.dart @@ -33,3 +33,4 @@ export '../ProxyWidget/InheritedTheme/node1_base.dart'; export '../ProxyWidget/DefaultAssetBundle/node1_base.dart'; export '../ProxyWidget/InheritedWidget/node1_base.dart'; export '../ProxyWidget/ParentDataWidget/node1_base.dart'; +export '../ProxyWidget/PrimaryScrollController/node1_base.dart'; diff --git a/lib/views/widgets/exp/stateless_unit.dart b/lib/views/widgets/exp/stateless_unit.dart index d975f95..c5e4f0a 100644 --- a/lib/views/widgets/exp/stateless_unit.dart +++ b/lib/views/widgets/exp/stateless_unit.dart @@ -33,6 +33,10 @@ export '../StatelessWidget/MaterialBanner/node1_one_btn.dart'; export '../StatelessWidget/MaterialBanner/node2_two_btn.dart'; export '../StatelessWidget/SafeArea/node1_base.dart'; +export '../StatelessWidget/CupertinoFullscreenDialogTransition/node1_base.dart'; +export '../StatelessWidget/CupertinoPageTransition/node1_base.dart'; +export '../StatelessWidget/HtmlElementView/node1_base.dart'; + export '../StatelessWidget/DataTable/node1_base.dart'; export '../StatelessWidget/DataTable/node2_operation.dart'; export '../StatelessWidget/OrientationBuilder/node1_base.dart'; diff --git a/lib/views/widgets/widgets_map.dart b/lib/views/widgets/widgets_map.dart index 131e279..900dd56 100644 --- a/lib/views/widgets/widgets_map.dart +++ b/lib/views/widgets/widgets_map.dart @@ -33,6 +33,18 @@ class WidgetsMap { case "CompositedTransformFollower": return [ const CompositedTransformFollowerDemo(), + ]; case "PrimaryScrollController": + return [ + PrimaryScrollControllerDemo(), + ];case "CupertinoFullscreenDialogTransition": + return [ + CupertinoFullscreenDialogTransitionDemo(), + ];case "CupertinoPageTransition": + return [ + CupertinoPageTransitionDemo(), + ];case "HtmlElementView": + return [ + HtmlElementViewDemo(), ]; case "Text": return [