From 77579ba74050a01e7ae47653ce7c6087d304ba77 Mon Sep 17 00:00:00 2001 From: Kate Lovett <katelovett@google.com> Date: Thu, 14 Dec 2023 09:03:50 -0600 Subject: [PATCH] [two_dimensional_scrollables] Post 3.16 stable tech debt clean up (#5671) Fixes https://github.com/flutter/flutter/issues/136933 Fixes https://github.com/flutter/flutter/issues/132782 This cleans up some TODOs in the TableView and its tests after the stable release - removes an assertion on the builder delegate bounds now that the super class handles the assertions - refactors all of the golden file tests using PaintPattern, removing all of the golden files and enabling web testing --- .../dart_test.yaml | 3 - .../lib/src/table_view/table_delegate.dart | 4 - .../goldens/reversed.pinned.painting.png | Bin 4867 -> 0 bytes .../single-reversed.pinned.painting.png | Bin 4868 -> 0 bytes .../tableSpanDecoration.defaultMainAxis.png | Bin 9516 -> 0 bytes ...tableSpanDecoration.horizontalMainAxis.png | Bin 4499 -> 0 bytes .../test/table_view/table_test.dart | 337 +++++++++++++----- 7 files changed, 240 insertions(+), 104 deletions(-) delete mode 100644 packages/two_dimensional_scrollables/dart_test.yaml delete mode 100644 packages/two_dimensional_scrollables/test/table_view/goldens/reversed.pinned.painting.png delete mode 100644 packages/two_dimensional_scrollables/test/table_view/goldens/single-reversed.pinned.painting.png delete mode 100644 packages/two_dimensional_scrollables/test/table_view/goldens/tableSpanDecoration.defaultMainAxis.png delete mode 100644 packages/two_dimensional_scrollables/test/table_view/goldens/tableSpanDecoration.horizontalMainAxis.png diff --git a/packages/two_dimensional_scrollables/dart_test.yaml b/packages/two_dimensional_scrollables/dart_test.yaml deleted file mode 100644 index 5ea7fe8ae5..0000000000 --- a/packages/two_dimensional_scrollables/dart_test.yaml +++ /dev/null @@ -1,3 +0,0 @@ -# TODO(Piinks): Web cannot support temp golden files, re-enable once mock_canvas -# makes it to stable. See -test_on: vm diff --git a/packages/two_dimensional_scrollables/lib/src/table_view/table_delegate.dart b/packages/two_dimensional_scrollables/lib/src/table_view/table_delegate.dart index 5215413945..275bfb5bae 100644 --- a/packages/two_dimensional_scrollables/lib/src/table_view/table_delegate.dart +++ b/packages/two_dimensional_scrollables/lib/src/table_view/table_delegate.dart @@ -150,8 +150,6 @@ class TableCellBuilderDelegate extends TwoDimensionalChildBuilderDelegate int get columnCount => maxXIndex! + 1; set columnCount(int value) { assert(pinnedColumnCount <= value); - // TODO(Piinks): remove once this assertion is added in the super class - assert(value >= -1); maxXIndex = value - 1; } @@ -180,8 +178,6 @@ class TableCellBuilderDelegate extends TwoDimensionalChildBuilderDelegate int get rowCount => maxYIndex! + 1; set rowCount(int value) { assert(pinnedRowCount <= value); - // TODO(Piinks): remove once this assertion is added in the super class - assert(value >= -1); maxYIndex = value - 1; } diff --git a/packages/two_dimensional_scrollables/test/table_view/goldens/reversed.pinned.painting.png b/packages/two_dimensional_scrollables/test/table_view/goldens/reversed.pinned.painting.png deleted file mode 100644 index f3355f07dfe1273ec94ac3d82fe9f3b3c4246ed1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4867 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 CdbYm+ diff --git a/packages/two_dimensional_scrollables/test/table_view/goldens/single-reversed.pinned.painting.png b/packages/two_dimensional_scrollables/test/table_view/goldens/single-reversed.pinned.painting.png deleted file mode 100644 index a89a27353c148f83a667094f6a545146ef5116f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4868 zcmeH~YgAKL7RN6y11b;2f<hp)OvP3K8AJ$3K%}OMpcQ#Y454DJl?HGifHfglABZT? zu>}hxXsJ+MNijeO3Q<&2tB^<tDUT#zlt*HKJA{}JlFUt=_S39c^J&)VEYFv_?tk5N z&e{LF_xbHpv@Zs2yWC|t006eTK91ZE02UqqV4i5b3{uK-zRrXmW?B2u5dggpJ`KHC zW<~5eU=0nT^^pqzu$sOra{Gb2N~IXzC|SUA!CAuY5dp0f|6wj6+~dlz;hX0x=vK@P zYY%%29lnTJ79(3*WO>PEAT-6s{=x_8sW)%$$?VxMb3d`7bp=1J>@&OOvlZ{0|11de zVM~AO?x^Wr<hj4~Nny8Gla&!`!i<Vwkz!#Ak?-s!^%9-QC3B<;vugmr_<65h2+x;r zp5NYzK27(}7RRD#u%t>00GRSOw*-I-tDvaDF9Bu%aM;os031BS0ia;5nK=MFv~~ah zkDUcjY<_P){c|`l@l6{H03?X0L0ezCi-uX0z@15C=czkhMe;+pQkgg6leKIcQ7O@= zAlxst9WPoe1I!9ONO{~b{z$lTX-8Zy@<fwhplKuB0ij|<Pj33rmpnlW-kdtv-s<Y! znLs>?{Mrf#oe|4Y=Nh~(Sz*V;&t>&q9C7yneRKg3ZtsZLj0B%ip;S_B0L`vBBE(T9 zdG&9y*d(ugBl8$3X5se8UBoTa8bczH&s$$ii4hDeq?Hy^eBKQQZlEhSq3Q)o_b)#A zJoML|Lwws9Cqy7UDZVU>)pqM~&{fYwfNvr3M#cL$AymHLGt4V!p|Vp95DcN%le1G& zQidLqA64+bE0?4Z?`Er)l1>Pt9Syb_5xmtN0KcN7nDV}2C%sWltSxs52D1uh&R?)! z<Q9S8wRvCq%c|t~jJ~z-*KCDolQZJe5@@$&7?YFoOIU22PNLn*eZ&o*xV6`m_f<Rg zpaaNLhl68>tT0;#l=hPNGZ~i;2sN5S^7!|Qzu4j`H=|H@7So*t7!N2k82s{;qoQUI zjH0acHBd;Y(qFal_-*6llR9egG<l@E-GLAkaek*7?u_8^F#A|o61sP^YoVRD*VVPj zHNm@KBTb*~DpPmHj6jt<EB4Cg6EhbwvU3vLE>il!-MU=+E0Jkq=c=kcSy3-n#?;Q= z+33VOB$WR|s$p}=AMkVuhXyA$kkaxpV|r1U$ExSFCs)V^-^bODPc!Rdqp=;Yza2J? z&!-LldQ7~;rxL(oO6xW}d0od$ohL5`3ZW2QLc!&$?q#?+BI4qxO3&1J+$ko_5us{$ z0D>>rW$+?OeSJ;vf@(BNG2rd`2<@C{;|A1RaW;V9nUKJA6hn!;;fg=V>Z0X+k$@dl zdyx9<p!B%m%viUS>>tm??vZLcxwH{|_g-JOV?8r<dkw-Sd>;&-r1{04ApPZ5fNm_r zS<q1D?{0|K&%GoqoI6-1)SsEh(0=0BH~>?h7;}`b2)&6|Y&7%K<S=;=R8#~Sho{C= zE>u)guuxmP_yQ;GS6||n7PsMl)W!QWAz|vl=>|kSmvwnye3sjfELNDU>USyQo892{ z>Z{TDBq_bBsSfo0u(75*tgbLUNz$E2;=Zq%QN3tnDr8JXqn<h~8#EA&j)eIOxdne| zKWhiX{w(3#RaaFsH%sZ&+~$(01Cz-i@2Z&RJTYlPT5G@n9L`c}Z+?^$k(2_n1ZplS z+}pqR-<&CmjEb&hS9hJf#=2<?yKT`grd`iJDh|;7-9|J6&+l+@A6-TJkpsVD@g8(& zOJL@f>nE+90D!;z?eYDmcK~@yX$DM1i|C7y0`*FMTuvkEADTMML~D?Bc2!|6oYZFV z2cvsdZ2}Al$(kW4E7Ux@>@*wg&e00--gf5Lsg7z2RIhK5{{QGe*6!bqe+qI3wLEvC z#YWVIM>LUi6?6X?_I>+meYP3Dak)PB<%7Y5M=(8JfLtMeQpK*ddwM+}U3nfo`_3EU zQBJWm8iuInA3L^}<*_vF^2Zsh&2eN$h@TH0!uG@vv%R1~3*Ak;_u?V?wF#?d-pGL_ zdFLB>ej`Nc9gv=WTQjvK8p}D#)=aI2`l+uTK7KBH>0RAAPXM<YgAWo%+m9c_8b*gp z*UKVJz_oYyt!?;&?0#GB#B%aV18)j&|CZ_1C6_7etYE_ZlajM`aWa|AYZ7<pNmys2 zq|z^FCQHOP=!5Ep-#0JtVP%kGT?0ATRBq+%U?0>3?MUH~hT`cxc;_#N_OZh9Ft%L* z`=J?9_2-J^8v}_ax;2_t@;lf)8K<Fs$vrbDLgF5ZLM=O*BOfbVc3dZs<pz~cP<hJL zh&`l2&m+f<@J@i>(p@XUh%k5HsS-ocEwwa1>o_62-SK>Aw#_eHs%QxXfX?Z=3?-qa z)=E$lce%v<EBEU|b?ZJ~3D-_OtWspl8)HL+TjDBk>zc$F7brjUT4YhS&EifREWV~< zjNeBF=<apZ2d_b}e6;&*_g2MGkIVZz83P9UDx9Ear(&XTrm+}DY<&5J?g^i;*X?8u zM3=9AzN)z{tXo%W3(qb6G(m7cS?3}NSdW^DDwN3{XZhBJ={4AZZF>GA)xYRnjoCUl zYkVRtqLiANzu2E^yz&oWXyltpzZ)BW2lz;;D%AAPkA3+=9V_QjoE!5QxR|O)6EVZ; z1Gmx{p+@bj(iY~8`ETK!n&E!&%F&iO5qU0KNd&bnZk5T^f?6THY*0i?2y6>|uVvzU zysNzH+o-g@)18Dxd7&J{d!oA#QInhKu*i?oOwHy`&4CreuLalzDI=ZEg4HJYXR2O* zmV;mXM0rveW35-1rkLTd*|Z^2%IIsE8X|rg)2Ss0YcyrEtcGVup&G7Ig!fuNjyE&y z8r5NOr2A@9>v7(&%W=CBjBbhlUdX%Nb5M?Nwpy7#))K7uL^Ozfjf(cxaZ%ggQ#PXh zyIMoUifh|-PHv;g4eG|GJ4bPUO;?8a^BQn&q$Y^s&$^H3cNGBl*7#{o3*=96+TJ#9 z0lj5vOr12}<B6wiH~9`&LQT!v``Dk`fu|qf?Sb%&a`ND8s|nR^Xhay{$zAnCfsbm= rPii0H@%wEYcst%Y@IP|k`e6f%)!GrZbveb}wB)XjVj}4gDPR8+udu5+ diff --git a/packages/two_dimensional_scrollables/test/table_view/goldens/tableSpanDecoration.defaultMainAxis.png b/packages/two_dimensional_scrollables/test/table_view/goldens/tableSpanDecoration.defaultMainAxis.png deleted file mode 100644 index 47c77cd4b1324e729866df80681079a79a1c2300..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9516 zcmeI2cTiK?+wXS(L5~6=3MwUtN-xq82%t0-5kct!9;s3UiI6}D!H%@pLN6XTh)R<p zHGoPJ5JHg-p@a@eNPv()${Wx7`{T~M_rH7pxHI?cnM|^tto5ut&tB#EeAj+){hF2F zA1D6+06_5aC3AZK;FSRY9_Ri1TuVm8qfqV_2x@P25h(4IT;Ue@pcgOS+|RwD_j|_y zfDCZi{K8Fm7I7-_ZT2>DnnH%Ay6EKhC+og^;{0?}usw~h@(jOMBIR{$k88)}H>8q@ z!N$(>HnxKX<%56Ubq9}Js~K(A(7l}n=jGMay?sXa)R|LN*8X0WmAFYnF8kD((^Ypa zH!pd>8+&KZ`Q;eGjCZ}Xmr9l*Nj=7UV>tG`EV%~x+{QoO4K(|!6osRm0*GD<Q4{_J zcG4e*t-sjE)HkV0I$3!n;M>iAmZHs_JQ6y_aSBmKvLal(zg)@Jyp_}ydbUi+Nn&WW z+Fv5eZfzp0cX>c3WQ$?2i42C67X`WoWsm0w*O<81FT~*}{pgsjDpn5Y-S*9E3vY%_ zKE46d8}_KlCt#q}574x0DHi-acU6j7o$HPmcDqw1_HyEdh00#oUTxHjNNI@A;V-n2 zj`XR}J|C_rS7@1N`E~~tg9t|yufqS#tLfjITkmu!!sR$KFIts&G2uA9jO}ZQmgLr6 z{RU3Tt~?$Z!}<m@zRoIXo;+sFe{CmsU+l0$%=8`}#_BZgydKQ5z}?Jc4s{fkHQuw{ znZdGYoixjpn?D~9l3&oY?yPvDm{Z>h^O}E2uN5IJY#+^2Rn*a#c0c0B^~T%od%LiE zffE{Ks^c`;FoNH9er*JUFQ@%vevC}jA=Q;Yz*2Zu*J{Goas;Vv>Dyq9WUM39-p|x> zbwaGHsI-aDHrCQuW-@H2+&0IqPBR=8bAMB?oTFl~W3E^)->u=3cNAk8p*el>+6yDu zc7p~-qCR1lyco<OwV+Vb@nd?zHk{r3g=UI*>kChVFavd;CpQXGhLj#Jd{Z>Tydsqc zRUuR)$T<pV7+G1cXTs^E>*SABDFNw*GAwzrqX8978mEanse<cf8ngnnb|lG+W;+Ib z#6**U#@$NcY!eGUV1${Hps#_fn;=cQiSsC%@S(kt9?7g%&Ep~%OR<AHU)tuJ#=S11 z5Lp_|f-f#qcFX2LAIyJmQ!jy_2G?Oh`XS?bzPS_djiq7CbknfU8SL0i>Xl&EU{_An zcolmD++ArjF<y-%bq5=!tg8yDoKO?YP4|neYaT$&wltzW&OyT#<E<@IA){_<ki`?P zh8A*>%N4s2@D`NsYd>}t7}KJxZ=-w1H!1~4<mC*NHV3x`!l&S=eh=u>u@WV9!S!2J z-a%J9@pi;A_WFFG$p&T>%*5q6T~Kn#Svc6f6zq1+IK<7|NYn8|AgY>BS5)KR8H0cn z!APZ~Cg#Jg7I9Sx2&db+qt^pbwdCT`6g;$VTY&bUb>@(X6(HFu@yAQSZ7Y;d+ldBo zEAy?yR6>U8)crQvz0?~NxmOmPnY{JH73F-r2=!Y7^w~#w;uq`;0;C8|Lhh97szt1s zbdq1$r2P~-+0}6^@_pct6@S-W6SQr^XWC?7WFhkWbhfHTr3`BK<UhR~$gcQ7r6d<# znPyoj`x4RU?iyIfG%`BkR%3WPea6P;!JNF_yWF}RhTG<j$E;5|+`4EUGwx%S%HBv} zXL7oKcBb1}npb~BcH0PV88iQKbu^qaxkFU$8AHwx>KFkap0B5pC1l<tL7>v4=$YJN zvIL3v0W&9_lPOJhF?4`$yw|2>04u7&xrRpeG2ZmWz@=mQ2Qn_6E&Ej}fnCHOw8HJ# zE2^Wnop#lky}txd$Pb#oSi2ofuX{}3ExT3GgWs#HLH-dPhhExWt>S!Gdx0jcW)!PP z`X@}s+;PlmC?q(0@~8#}QRP9J1)B?TaoyDRc_c$;<bjy(9~nO)^OuZKtiCUtk_LR^ z-M_UB$gdR9Z2QJr>diC_Lu+f{98h`&IgFn#)=W~%)bTBtkqyZf9fAcfzwkr`_+Cv{ z0I$vVQRM<n>gGO`Xg-)}>3-I5GFRFAu=Zac-`v=l!jj!{J@qxn5Bmp3vz|AgHrON5 zsI$3-(KCdAL`j+^5x{<t(lH&@i`nQ_w~-<>ZZcLVy*3aJ`_!6RruegaQ4=QWQTwzL zRB%+~=cVxFN9CJM%qs<)@AB`BBHjBl0e?ZOLoXXeag$rWenPDAdlx-#eV#b$bXY_r zlD5~PcPrAmU+Z0ZmPr`tQ-PN?X=<{1`&qcuTB=y1K<pySIri78StEDI)05Zqwp!1s zBS13nB>NnUam~(q<@aI`zKl-lD<5UCtG&ojhox1+4ka(51sU|NPD)Hh9pe-YXY`h? z*V{lW)*t%n6{@Op67sA}D<danFw<*AJ0%|dltk-tK>xiNk9S@*f=!~$M%I*W3u8kM zac(cS7cCuy@MQFaKOUKEDAWAx|IT2h9SS6`z64yR*gpmCxeYGGK=rGWji}SgQGD8& z+$i|ui{qOs2xAiQcplSDgX1!0+crz#Xx;ZcQpI9*0<IUuC=zCR?v>bOslFhwMBIc} zy7)D|nPnmVAJ3@u6ZfJzU7-3G7JjU8>Xt?N64k&>bT^9-;9Vq9_+|U@+X6(9`_!9` zXwQo?*U8j)=g``mC|n-}yzi@<gQDym+hC%hT1?#y<X4G7#~x+8I3F-0s9<6K0G+7r zU)10&j{l%Sg^4$UfOnX;S48@?91ZiAPxWO`GdDw9RDrKAlmvebyGPLQpHiD1<zCSZ z*?M18rWUmiFfCH(A>s-hPqIPcF|J9L*v4f+04T}RhAJ4uOM_HZyWPL<2SOiRDR4zz z=|BCh?Z9CmR`lklU;FlFy)_a$2I2PT@U|<dvxysj>+UQN2++4HD8`5K^Ib~@xP=P^ z_VWwe{}M7?w*Vm4(M~Cfn^kNKpEBi^y!rM6z{^B#J>a#73;>vF^6&w`CCgZDmCpT# zx#`9U5Dx&HIsI?t{}Bx(3*nhiH$Rp5=j!#_aUG=y8au7o&uq@3FRJ>QJ9eY(g!pvm z-(G&?$lZob0gv&lC{aMhG^2O;M8aJ62+Q&6&2eGF2trp`oUlH~tx(N_zJ4NvQ();B zfMAtBWvw-xG6vr1t9=WQ?MOg(k3j6dD*3B&e<nmQm&;`%K)~LCmvX0!XXalB1O72Q ze;?rbiJapFTpt69Y4q4P^4#X(`(N_B_>Vck>6_Aze!^+AgcDxXc!p0BVoY@&<>b+U zSh+K%e}op(Yqu%QaXu2c3f|&Xuf5tjUPFqSqVS~{+hdi70DZC4+h^te)17;7?3o97 zl=9$R7fK&>N0M?LD{2rDE`Jg{@m|g2^S$;qJ?WL-HsGjL>`_u5eN=xht9DNcoYdL1 zMlPH}g~ZWgPoLK|*0nK&Q8p{f=$B3_J9u(xpR&}W<R1VEFRecx$>2sadSlks$}N~V zgp)i84#d@-V^g!ihIgVTsjcFZX+k0zsF{KuaUy+|qqvatf|bj4Ic(Fsk>$X3nQ0Y| zZbLYtdXiRv>nfnvqYwA5q#Zwh#&~#JHQv@^<JAuu$zYyRfEB4RW{cnNf7X$ZcF<<U z^vT=J-Q_?6p{}>>AUW7GW@+QcD1OA)I00Mkjr&xV)4bM+X;a|`ghCHEf)>eRhnpEm z(`Z^}f7~b-oLkHE(r~<oF3dlzhHr!fXf0VPhO`n*n49{3Yg+r%pDk+rzU9H^Fji{s zc%O4Cn@(T+RTT44x}Z8WfGCyl+$thG9M;n%8<N$qmfn!E9_bt2p9um$_G!En%48yx zV5`O$I<8D^)_|Z@a!PxXtzp4QZX?JW(O)$r<ItF?CAG+ROBJ3Uz*r4P0@r6{N@C)A z?F0DKPOAW*Eesm?TbDi43BQ9&)-SACKHFD6Y(zIlhK9COolSk4ki!FDyC5?A+^YR- zqM4mIb1Nh#X~ku}f3IY3u6zmBp4+6U*QBjoH1o8NsV3!7$zI}@-ZNPknN0IQY#=7| zj2a`@!qwU_Bve^fnNq|lAT$=Z%VWK#*V>WGy!yZ<*&OFNC2Hc)EWau>^uei{VznpM z>fR#Dm+UvTY@NAdbqN_nHJqL*pM5F_<))6v5bKzP{h-)I?&N75U<*<vgxPjRl~B)L z2A^J~Ry^)thu*#rZTIBseN_qM-Ax@_H1VKB4Ka<qo10G#?hIjg;uf65^@V}`pn;ny zR;cKJ_Jsa)9U((nC&=&Oj5!uLOmFvW`n-iwE=Ys3%AZ#+k|X5!fcOQuEjj4riR-@` zP*%RxJ(oh<E>`a?OKzoB&+?>PSgVcj2#Qx=P4A5?k)v4ULkPkna1gGh+3VioR3GRa zz@3xs1G-01x?aKDy|}>LP+gb%+1t#60l@RH17iO!z5gHWEfs%Bly%vTyy3v_TNP&y zim|2&jxVdUHI-7?99YVoyw};KAqV9b@TtvF8-$(Sy8N$aL%WhJTYKY1(|s7dSiA9b ziy(BI6}fSfw0CVmuZx3_WKO+i5jVt*0Raat8Yfj@=3bnYqO{H>!&iUOj+gCb^Y)n= zoSrL=(^tk-#;KS%AE=o^c3d}ShD%e1D4nZ~)9ej*-nJgTnV$8xd_SJK4AJK%5O>;K zqzdO&fJ-4)%%f!z=%!ZTn)e#^lJ`y)w3DYeO^6(YsN+D0ntb?y;pC4P`kW4gvOLh+ zk{piKo6A!bE%#nB-%8fagH?&#usYdq=!(AElJsHNb^_xWYF}@%HTn(xoLs;9q{+7n zCJn7ezlX7wVoLJ;+H>l*E$>Ds-ib)@tK5tmb7{pywhD^$!$!py#!@9jIIC<!vd5-n zQ>yi6KtCgQ_0SJIDJ*)02%+>b-236%BUirUbVN?b-(f6LoSPzz#K;+mSG@r3Bmop_ z(@TUhP{fg%gQ0d{)@XOy{6c}{%3@rtqHJkW9PI~HI7JqZnsCB%>g?;-WK!fbWa0>p zf5v7}Fc;)<-_a_1HRY}bd(~zh;+0gp@NpKtbEBnSr(a+7^r^FcrZRKy)sg-IR^e2# zMXO0-+=;T7D1{29IH`dUxC17yWrIL7{`kJ`jhKaC2qhP92x(V#xe6}rC^M>1XRj@J zCL4mmN5Mdd>_3lWr;$^{X@XYNpX;WgBt<4<?_8N5YyAE2Oq8R*K*`z@9`A~*wn98a zwdp~)?YzkS!O9j&2Pe>PvOY{<JfO6a2VPmf)&fhyBRWQm&;Oc+MR+s(?r_LSCUCM7 znLe<cyQfoT#Pd}mViH&(E44K<`hL=92YQ#KLt0H(yLft%fWV}=(1sXwrVJIc-elNB z%Z$uH%E<0+8X5l@9N}ybJsXhM`X>NxQgY~JXP6j=LOW6Zr>{=$w6O?^&WUI{rk+$V z&TsmLv6~G;6=W@lTeY5!Y{ev5u1M5OqO1}94S>HCW=XAy`ayt0edKg!FtHy#@+_w| z;)ZPy1Ys9sqc0R6>R=SX6lm-%W1+zYXD<zQ%a&pCHEwmCY{6hPZgrk)87kKOCF<oS z=4<GwKPx{j`pS<1Lrt>g=NGGkM{trkn*>}8t<uwYUgHfIGPDVTztLaq-Y||{ylrF> zsBQc?Ad1UPK21Q08oJm%f%@x5_YHX(N>&y<Dhesr$kgf2PAbV1Ybjbvp_K;X<dY-o z4ZACuU4JP{XABHg?lF?Zjp?m#<;xnvmZ{I*FfRc9ce!Auqt!n5&EoO>y@SX(-WgRH zTz;?uxi(b6Ky7j|O~ieSUSD~oK|1XOZ%6brdef@cUFXD`ozgXD6vESLn#KjT;ezo) zrhx|Q(l04t(w-0wrZ&dR_7*kFNhA|c7`=pV+G6ZJLYI8VW&QOKi)b&GZix0Ci{JMK z3cfW|x7%CZm9}?*i(f4~^M6(H6Y{d%?@ztYk);8B=Fjp7-wP!YVwP6g=O&)zZ+>V# zj@N}R?Ch>0i<}-9LEXEMKvfQx+del+OYF51hQHiM80R(JR1}<dcPcJcXB%d2jx9+M zFN_F!K*>#AU-KTWnuc`U2dYxcc;+V(cG?ibv}0fP#mWuG6(h~OhSf{&sTj?<B>%4v zXCK1*E?n}^%j~Hy3QI0O|3SD|xf*41<DWjr&g?HABxwh|zR|J4uPhu})d1I)Zvcb+ z{afw*#>z!Na{BfIHB?3Ue2COa)64GX>TE}DRQv@C;^I2Pr2R;N38YT1CJh5XQai^9 z2QMw(2+^)sJ*B>azd=5s6d(%plpPf*ZwfI=L3FwU_;(a+RQrwXr?8`qys^V}@o_&Y z<ErbeBS3J%GitAo`uyg!%a#z}YNjZgH>nWC50nJ?;bAS+X?0c0Qh;{zz;MnB=Sgx> zAV~i}q__Hz-;{>kr`@MKUo|jMa$R<JYngw<z8Q?O-x(jjMSddm+uYI3Mb8<VIZSld zke7=Utltpu_way;$KH@b7gxMD-f_1ebJ3K`de=Ta#I8~E^ngArm(>b0Bo2b~mHuV2 z|3?V*z5Ny-R1@Bw2dC$`q2cTGeq=NQp?k)IucQz^Bqdt8Bu#Oi=q1`opSXtI55ygo zvGH3=w4f}k#VE@u5uZyn++T2N708N>a)Kphheym8wAfOsL#Ac9>}L8u(Qg$$wXc{5 z5aPPI82z<V6b$q+`7Vhb28U9)seKhc$o?D!BySrHn64d`*>~hWX0ftI4lnaNtfciy zv2M{{4;<z;i{iTkN<Ieu4L;>T1ktDKj~v5_>C2<_ib^cRLFavdB$`WLqW|%r=4X1u zpr1af%PNNZGZ4viN&JEAntIVBbd(?L>QBnGWuPyJ@6xPL5<008_o88%(w|mbB}J?K zZ`4!};>vS5#|@$7u!{n*a`Q)upZvxqa5R0e-%$d!t@XUUV_Zuuu{nCFBl$SE#)z^{ z@4cD%TdQaJUW9~KIwu88cE;&xX#*1ZeyZogqJyU9+qsOG23%e@ee&RHqT~_q+OAle zygL1oHv%R_rQ74<+`ycKTK^V;#m}ejADp|mx@|V+^|?ejhva^I?^(ML>yZ&Uxg;}h z6@M5|$g=+Y$2k=48NDZj8B=AOZ223?S{J|x<zWaTDXIGu645U6yxx__)Au;DxgF=- zauwkk+PTypp$|&jkGV8Ti|i2yPhG6@axizG`H}|(tnzCLp{VGfvBMZ7?>=>YK$h>) zpF*u2P_5o1le&2)uVO5xeaol<UT<KiHuXj4p8Jjs1=JBLW6W>xzIFUWLS7DQ{%_Kv zB_gXX<czN%R)sqrUexjxT@Ge`dqZj6G>p#ysRpz1ZQI5RM~*>w0k|N@{<9Ba_`ezJ z*UofWj)ipNbiKMXBF2xoq6{Tin^pedvA-u|b@X~xO(62^X6|H~F=J!Lt0mrnLKt%M z+Fpe0E9C_|tYftw7O*7d2(~eD^>S8uOJ$@N;Ie7a?c{)8MGN$N<iWYpKSg*t2DLOQ zOfIf|N#ip5Xl(%TTW&tMWK686Chjoc&(HJsWfkJ|;bzthxJ}D&$D$<vWTc`Yd|g;T ztX14%zoZkc^^%H5ji&Csv9M8GKiXqd3>QK>f(5Q?g9gn1H<<Qw`CdY%y8BTKbr#hK zsrGHqIt5%mSN3SgTkWnyyloF$!x*B!^Vv%{al4H%^vW5(=$<v}?7I`*(UYnce{9Xu zczv`zn^&W;P|MersC4_pZ!xCtY_J){Pit5V!s|M|-bA7^x>Jw-4yRP=ZLTKvuLSmg zC<vwxz(2Zf@%!I38zSY&13*>cfOB2G$JTy-p9aJC;=jd9pSRqF@QnpJ)=`ctGG4oN z7dxr@-xVeb|4}!&6_khixeBH-l%K1*wqoSEF|)smqA~y=U#i{TU-yx#=yrK5ySZ-h z0kJ7|UAqP`%LVY+Lam#`cyLdB@$v}(P|bhq$7n4rb>X!Te(1RMBdh36#Z5)-Zf@Gm z)p6G|HMgJUJvUX}C1GJ=zwfKyt*q=SGJCqruOP3+)H+?oVQyBdRPA>IYefrlZ%oj1 zX>a;z3-m)r>S%HIoe$#<TZg#4hiz1K^p0(kl*9H{W!T<gx>?u)fd6>`-oLdAn9LN# z&B;U|`I$1YTi~@Qad8N5#=zU4t-60Uc%eE90du~R+<RI%;9%7gN|;-87^8zb)om0L zun`fFdo>Ao5Lf#?V_MNmZMV50PErauRQ0GqY+7uhzL%SsXcsgM{6Hf%``KKHp${vB zSSdn6ePilUFbShPHX$FzkL8}{gm4FYhP@({QcxfzEY3}N79*Tvy@SVk!z+6uKgDVE zt+R>8ING%89qz)CF_69h@m%}S@$7fkP{X-Q)GuEcDx6i-=4Ow6=u0!f?X}T|nYr9Z zY8R}G&FqM`cjNx?3i|~EOQxH!pl*dfr&7ZXX%~g`aMI}npJuzQL;hE$#zr^AQ}j@U z+#IUvnO7q#(u@3^!9j)~JXOa|DmWJy#cU8d$Ju%(ZfS*IW+v3IHvPRlP6>IGsTMUx z-;Eq}sxZO{N0;hNOx&L#bozspd`|#9tInV!F6Y5hQH!r}!cGR8UJxO?%6O5<`4v4) zV=WI-*0E+N5fw)XLp&^ccOH{p9^z8X;9#hoX6(NLESqA+AEKXErW+2Z^S(=$(lV8m zt)K<1SzD_!TNiU8Jse-@HPTjX@d;39mS_!&ncLBwUHQi?zMhZrmbrDGur%93@6*rS zKTV8`8nC{0>{Xnf7*ykZHzuXW^^|wyG_PL|i||D&rF6&gDK@>4cId~>`^n>8z0qI) z^u_Q?*H&TK%9sx}(kt)~uaR$BGKdPT-{5#yUQDL!WUk>h%0!R+$SS~P;gQ#=%iLE3 zx_-Y4@PPR6q7B(yTtq~@<2zgl;rA`@UENz*u;<P3?WdcSs=`uh_n`zvf~>5iR~O!4 ztS4}wnD?Cnmhw6c&&XbCP>U&rjgSn*g@V!@;@j`0?Ypa!chn3jm)C%V{mMIuvfq82 zmROzVccIe%YLBI3&J8@p)XzBTXJ%KbUQ^^XC%lO~+MczCK_mY(THClN2T0Bp8em?9 zdmHkL_wH6M`To>z2w6&=5I;m*?)i>ft;#W~aGr+xGW}@_6kDZcQ4tZ(AMBW*q_g|f zA1|IO(5_xx59)wLdBMpqm^#hHlo35k^I}ETPdz;!aiYQ09^em=4_9><c8I!vyB}*S zbf~uuzDNo-LA7u6mfp}gbgjl_YLj49sh%(;HArxxa*k?k22<+RJ=@L3h!(bwzlXPv zCL|~$njojiCbJ0rdmoW=5F+FHG_)X-%&=pKJ7x895vcSARLjbiu`&fYn2Xnm^!4<) zO&`bq#fJK!*H=q)vmy&4ucmw||A_DiT6Q@uQK-TlRc_v|I;Oi&CcbUM^wa`%OVm%5 zD7mAu-FNZ~CEWB>!BKzSV_<ZMjMmW?IiqS8tqp-(YAzksBjUT7*=2~zr;iK6RRC4u zTf9w<!zO$8XK7ipX64#iSt~ZKk$e1`n5_0`SiWIA;0vvK7w(4e%A2&4P<Ej1eq;`F zPyW6XAIZlgA6JE~b5I4REtRs%8=(<F8Je6Kf`OO*VmocQ8`j1eQ}0ODulzdn(o!t4 zL^5gCe)xFleA4Wd;p6ubc5jF1Rz${B2NH{f<3$D0q~reNz#!sEQZ_`ni@e9Ctv`Yk phCsN-L;qg?M&SQa1VSHhz~_&iHpc$l{Q9@c%NEznOE2Dj^j}%V>g50c diff --git a/packages/two_dimensional_scrollables/test/table_view/goldens/tableSpanDecoration.horizontalMainAxis.png b/packages/two_dimensional_scrollables/test/table_view/goldens/tableSpanDecoration.horizontalMainAxis.png deleted file mode 100644 index 6a04b91e480abaaf9913680bb49e30c53750d904..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4499 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 TnYWjxb?AG{|7ewWMEbu04;=1= diff --git a/packages/two_dimensional_scrollables/test/table_view/table_test.dart b/packages/two_dimensional_scrollables/test/table_view/table_test.dart index d910b772bc..670caf00b6 100644 --- a/packages/two_dimensional_scrollables/test/table_view/table_test.dart +++ b/packages/two_dimensional_scrollables/test/table_view/table_test.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:io' show Platform; - import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; @@ -40,14 +38,6 @@ TableSpan getMouseTrackingSpan( ); } -final bool masterChannel = !Platform.environment.containsKey('CHANNEL') || - Platform.environment['CHANNEL'] == 'master'; - -// TODO(Piinks): Remove once painting can be validated by mock_canvas in -// flutter_test, and re-enable web tests in https://github.com/flutter/flutter/issues/132782 -// Regenerate goldens on a Mac computer by running `flutter test --update-goldens` -final bool runGoldens = Platform.isMacOS && masterChannel; - void main() { group('TableView.builder', () { test('creates correct delegate', () { @@ -1253,11 +1243,6 @@ void main() { testWidgets('paints decorations in correct order', (WidgetTester tester) async { - // TODO(Piinks): Rewrite this to remove golden files from this repo when - // mock_canvas is public - https://github.com/flutter/flutter/pull/131631 - // * foreground, background, and precedence per mainAxis - // * Break out a separate test for padding and radius decorations to - // validate paint rect calls TableView tableView = TableView.builder( rowCount: 2, columnCount: 2, @@ -1304,17 +1289,123 @@ void main() { height: 200, width: 200, color: Colors.grey.withOpacity(0.5), - child: const Center(child: FlutterLogo()), ); }, ); await tester.pumpWidget(MaterialApp(home: tableView)); await tester.pumpAndSettle(); - await expectLater( - find.byType(TableView), - matchesGoldenFile('goldens/tableSpanDecoration.defaultMainAxis.png'), - skip: !runGoldens, + expect( + find.byType(TableViewport), + paints + // background row + ..rrect( + rrect: RRect.fromRectAndRadius( + const Rect.fromLTRB(0.0, 210.0, 410.0, 410.0), + const Radius.circular(30.0), + ), + color: const Color(0xff2196f3), + ) + // background column + ..rrect( + rrect: RRect.fromRectAndRadius( + const Rect.fromLTRB(0.0, 0.0, 210.0, 410.0), + const Radius.circular(30.0), + ), + color: const Color(0xfff44336), + ) + // child at 0,0 + ..rect( + rect: const Rect.fromLTRB(0.0, 0.0, 200.0, 200.0), + color: const Color(0x809e9e9e), + ) + // child at 0,1 + ..rect( + rect: const Rect.fromLTRB(0.0, 210.0, 200.0, 410.0), + color: const Color(0x809e9e9e), + ) + // child at 1,0 + ..rect( + rect: const Rect.fromLTRB(210.0, 0.0, 410.0, 200.0), + color: const Color(0x809e9e9e), + ) + // child at 1,1 + ..rect( + rect: const Rect.fromLTRB(210.0, 210.0, 410.0, 410.0), + color: const Color(0x809e9e9e), + ) + // foreground row border (1) + ..drrect( + outer: RRect.fromRectAndRadius( + const Rect.fromLTRB(0.0, 0.0, 410.0, 200.0), + const Radius.circular(30.0), + ), + inner: RRect.fromLTRBAndCorners( + 0.0, + 3.0, + 410.0, + 200.0, + topLeft: const Radius.elliptical(30.0, 27.0), + topRight: const Radius.elliptical(30.0, 27.0), + bottomRight: const Radius.circular(30.0), + bottomLeft: const Radius.circular(30.0), + ), + color: const Color(0xff4caf50), + ) + // foreground row border (2) + ..drrect( + outer: RRect.fromRectAndRadius( + const Rect.fromLTRB(0.0, 200.0, 410.0, 410.0), + const Radius.circular(30.0), + ), + inner: RRect.fromLTRBAndCorners( + 0.0, + 203.0, + 410.0, + 410.0, + topLeft: const Radius.elliptical(30.0, 27.0), + topRight: const Radius.elliptical(30.0, 27.0), + bottomRight: const Radius.circular(30.0), + bottomLeft: const Radius.circular(30.0), + ), + color: const Color(0xff4caf50), + ) + // foreground column border (1) + ..drrect( + outer: RRect.fromRectAndRadius( + const Rect.fromLTRB(0.0, 0.0, 200.0, 410.0), + const Radius.circular(10.0), + ), + inner: RRect.fromLTRBAndCorners( + 0.0, + 0.0, + 197.0, + 410.0, + topLeft: const Radius.circular(10.0), + topRight: const Radius.elliptical(7.0, 10.0), + bottomRight: const Radius.elliptical(7.0, 10.0), + bottomLeft: const Radius.circular(10.0), + ), + color: const Color(0xffff9800), + ) + // foreground column border (2) + ..drrect( + outer: RRect.fromRectAndRadius( + const Rect.fromLTRB(210.0, 0.0, 410.0, 410.0), + const Radius.circular(10.0), + ), + inner: RRect.fromLTRBAndCorners( + 210.0, + 0.0, + 407.0, + 410.0, + topLeft: const Radius.circular(10.0), + topRight: const Radius.elliptical(7.0, 10.0), + bottomRight: const Radius.elliptical(7.0, 10.0), + bottomLeft: const Radius.circular(10.0), + ), + color: const Color(0xffff9800), + ), ); // Switch main axis @@ -1351,27 +1442,90 @@ void main() { ), ), cellBuilder: (_, TableVicinity vicinity) { - return const SizedBox.square( - dimension: 200, - child: Center(child: FlutterLogo()), + return Container( + height: 200, + width: 200, + color: Colors.grey.withOpacity(0.5), ); }, ); await tester.pumpWidget(MaterialApp(home: tableView)); await tester.pumpAndSettle(); - await expectLater( - find.byType(TableView), - matchesGoldenFile('goldens/tableSpanDecoration.horizontalMainAxis.png'), - skip: !runGoldens, + expect( + find.byType(TableViewport), + paints + // background column goes first this time + ..rect( + rect: const Rect.fromLTRB(0.0, 0.0, 200.0, 400.0), + color: const Color(0xfff44336), + ) + // background row + ..rect( + rect: const Rect.fromLTRB(0.0, 200.0, 400.0, 400.0), + color: const Color(0xff2196f3), + ) + // child at 0,0 + ..rect( + rect: const Rect.fromLTRB(0.0, 0.0, 200.0, 200.0), + color: const Color(0x809e9e9e), + ) + // child at 1,0 + ..rect( + rect: const Rect.fromLTRB(0.0, 200.0, 200.0, 400.0), + color: const Color(0x809e9e9e), + ) + // child at 0,1 + ..rect( + rect: const Rect.fromLTRB(200.0, 0.0, 400.0, 200.0), + color: const Color(0x809e9e9e), + ) + // child at 1,1 + ..rect( + rect: const Rect.fromLTRB(200.0, 200.0, 400.0, 400.0), + color: const Color(0x809e9e9e), + ) + // foreground column border (1) + ..path( + includes: <Offset>[ + const Offset(200.0, 0.0), + const Offset(200.0, 200.0), + const Offset(200.0, 400.0), + ], + color: const Color(0xffff9800), + ) + // foreground column border (2) + ..path( + includes: <Offset>[ + const Offset(400.0, 0.0), + const Offset(400.0, 200.0), + const Offset(400.0, 400.0), + ], + color: const Color(0xffff9800), + ) + // foreground row border + ..path( + includes: <Offset>[ + Offset.zero, + const Offset(200.0, 0.0), + const Offset(400.0, 0.0), + ], + color: const Color(0xff4caf50), + ) + // foreground row border(2) + ..path( + includes: <Offset>[ + const Offset(0.0, 200.0), + const Offset(200.0, 200.0), + const Offset(400.0, 200.0), + ], + color: const Color(0xff4caf50), + ), ); }); - testWidgets('paint rects are correct when reversed and pinned', + testWidgets('child paint rects are correct when reversed and pinned', (WidgetTester tester) async { - // TODO(Piinks): Rewrite this to remove golden files from this repo when - // mock_canvas is public - https://github.com/flutter/flutter/pull/131631 - // * foreground, background, and precedence per mainAxis // Both reversed - Regression test for https://github.com/flutter/flutter/issues/135386 TableView tableView = TableView.builder( verticalDetails: const ScrollableDetails.vertical(reverse: true), @@ -1380,48 +1534,43 @@ void main() { pinnedRowCount: 1, columnCount: 2, pinnedColumnCount: 1, - columnBuilder: (int index) => TableSpan( - extent: const FixedTableSpanExtent(200.0), - foregroundDecoration: const TableSpanDecoration( - border: TableSpanBorder( - trailing: BorderSide( - color: Colors.orange, - width: 3, - ), - ), - ), - backgroundDecoration: TableSpanDecoration( - color: index.isEven ? Colors.red : null, - ), + columnBuilder: (int index) => const TableSpan( + extent: FixedTableSpanExtent(200.0), ), - rowBuilder: (int index) => TableSpan( - extent: const FixedTableSpanExtent(200.0), - foregroundDecoration: const TableSpanDecoration( - border: TableSpanBorder( - leading: BorderSide( - color: Colors.green, - width: 3, - ), - ), - ), - backgroundDecoration: TableSpanDecoration( - color: index.isOdd ? Colors.blue : null, - ), + rowBuilder: (int index) => const TableSpan( + extent: FixedTableSpanExtent(200.0), ), cellBuilder: (_, TableVicinity vicinity) { - return const SizedBox.square( - dimension: 200, - child: Center(child: FlutterLogo()), + return Container( + height: 200, + width: 200, + color: Colors.grey.withOpacity(0.5), ); }, ); await tester.pumpWidget(MaterialApp(home: tableView)); await tester.pumpAndSettle(); - await expectLater( - find.byType(TableView), - matchesGoldenFile('goldens/reversed.pinned.painting.png'), - skip: !runGoldens, + // All children are painted in the right place + expect( + find.byType(TableViewport), + paints + ..rect( + rect: const Rect.fromLTRB(400.0, 200.0, 600.0, 400.0), + color: const Color(0x809e9e9e), + ) + ..rect( + rect: const Rect.fromLTRB(600.0, 200.0, 800.0, 400.0), + color: const Color(0x809e9e9e), + ) + ..rect( + rect: const Rect.fromLTRB(400.0, 400.0, 600.0, 600.0), + color: const Color(0x809e9e9e), + ) + ..rect( + rect: const Rect.fromLTRB(600.0, 400.0, 800.0, 600.0), + color: const Color(0x809e9e9e), + ), ); // Only one axis reversed - Regression test for https://github.com/flutter/flutter/issues/136897 @@ -1431,48 +1580,42 @@ void main() { pinnedRowCount: 1, columnCount: 2, pinnedColumnCount: 1, - columnBuilder: (int index) => TableSpan( - extent: const FixedTableSpanExtent(200.0), - foregroundDecoration: const TableSpanDecoration( - border: TableSpanBorder( - trailing: BorderSide( - color: Colors.orange, - width: 3, - ), - ), - ), - backgroundDecoration: TableSpanDecoration( - color: index.isEven ? Colors.red : null, - ), + columnBuilder: (int index) => const TableSpan( + extent: FixedTableSpanExtent(200.0), ), - rowBuilder: (int index) => TableSpan( - extent: const FixedTableSpanExtent(200.0), - foregroundDecoration: const TableSpanDecoration( - border: TableSpanBorder( - leading: BorderSide( - color: Colors.green, - width: 3, - ), - ), - ), - backgroundDecoration: TableSpanDecoration( - color: index.isOdd ? Colors.blue : null, - ), + rowBuilder: (int index) => const TableSpan( + extent: FixedTableSpanExtent(200.0), ), cellBuilder: (_, TableVicinity vicinity) { - return const SizedBox.square( - dimension: 200, - child: Center(child: FlutterLogo()), + return Container( + height: 200, + width: 200, + color: Colors.grey.withOpacity(0.5), ); }, ); await tester.pumpWidget(MaterialApp(home: tableView)); await tester.pumpAndSettle(); - await expectLater( - find.byType(TableView), - matchesGoldenFile('goldens/single-reversed.pinned.painting.png'), - skip: !runGoldens, + expect( + find.byType(TableViewport), + paints + ..rect( + rect: const Rect.fromLTRB(400.0, 200.0, 600.0, 400.0), + color: const Color(0x809e9e9e), + ) + ..rect( + rect: const Rect.fromLTRB(600.0, 200.0, 800.0, 400.0), + color: const Color(0x809e9e9e), + ) + ..rect( + rect: const Rect.fromLTRB(400.0, 0.0, 600.0, 200.0), + color: const Color(0x809e9e9e), + ) + ..rect( + rect: const Rect.fromLTRB(600.0, 0.0, 800.0, 200.0), + color: const Color(0x809e9e9e), + ), ); });