From cd02ecb6ded7b253628f3925cc85909f627eecdb Mon Sep 17 00:00:00 2001 From: toly <1981462002@qq.com> Date: Sat, 1 Aug 2020 10:37:14 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20FractionalTranslation=E3=80=81Mous?= =?UTF-8?q?eRegion=E3=80=81CupertinoNavigationBarBackButton=E3=80=81TabPag?= =?UTF-8?q?eSelectorIndicator=20=E3=80=81TabPageSelector?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/flutter.db | Bin 745472 -> 741376 bytes .../FractionalTranslation/node1_base.dart | 68 +++++++++++++++++ .../MouseRegion/node1_base.dart | 69 +++++++++++++++++ .../node1_base.dart | 25 ++++++ .../TabPageSelector/node1_base.dart | 72 ++++++++++++++++++ .../TabPageSelectorIndicator/node1_base.dart | 54 +++++++++++++ .../zz_no/CupertinoSegmentedControlTest.dart | 60 --------------- lib/views/widgets/exp/render_object_unit.dart | 1 + lib/views/widgets/exp/stateful_unit.dart | 1 + lib/views/widgets/exp/stateless_unit.dart | 4 + lib/views/widgets/widgets_map.dart | 21 ++++- 11 files changed, 314 insertions(+), 61 deletions(-) create mode 100644 lib/views/widgets/SingleChildRenderObjectWidget/FractionalTranslation/node1_base.dart create mode 100644 lib/views/widgets/StatefulWidget/MouseRegion/node1_base.dart create mode 100644 lib/views/widgets/StatelessWidget/CupertinoNavigationBarBackButton/node1_base.dart create mode 100644 lib/views/widgets/StatelessWidget/TabPageSelector/node1_base.dart create mode 100644 lib/views/widgets/StatelessWidget/TabPageSelectorIndicator/node1_base.dart delete mode 100755 lib/views/widgets/StatelessWidget/zz_no/CupertinoSegmentedControlTest.dart diff --git a/assets/flutter.db b/assets/flutter.db index f331e6ef31fee32f8aed3e8d3c3839ddd109fcbb..bd7700a53df306092a395ee7bcc3f75197cf3cad 100644 GIT binary patch delta 10531 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 W$^Pu{cx@;Yk-A%x*~Sd5JN|!U>Jbb8 delta 7016 zcmZ{ncYIY( zQ4y3S`gFhwI4U@x=qMv#W$X@Ep1$|i#m{^`Z$>76eDBTOd+oB;+WWWm+MUU3k0v*@ z5i2!KJKUUDKvq6Eb72R4B>o$zst=v*&@M4yvQ1cPx_sU(b7n0ir2?Doake70!$GHT z{F;@-lyJ2-uvDe?@jNx_oDY--eK>6_lWn9x5K;J z+v08XYQ44IN^hyR(3|Vs{{<$CE}Z?Bt|=p}eDp63}Jb$@lQy5G8& z-H+Y#?m72u_s{OD?oszy_o1=bh9*RtyWUqPJpM*Pp%AbHd}26CsLj=bMbL+)7P_rZ_*{AA>I zzZddezdLf9-xYa}-wAoQ-w_$|6Ok=`d*oeyJLFcsEi&l0L2mI|Bb)s=WRo9*ywi_D zZuSGnO}>lV=-bFf-$XX}61l-&!||iuXUICAB5QqwwqC79)~Hp;bt;@hzPb&m)H38+ zRgGMumLgZHD&!q%5ptDUfV^GJN3K+Jkt@_}__0Jy zK~|}W$Vyd)T&%)@Sfs*%Sg6Jz7pPIl3Kb5=ttuRd`6?WOd1^3nt_lZYwz>g1ON9e* zi|UWOS%t$t&%FuBBDJmR~$toO=Nh%dNQH6stL8TzeRBvRd z>WM5-Nyzak9H4Qk8*;1)hiQ!Jj2x{xAV;ZiXl_*Dpo~=Epo~!Q$YK?X9InDa8Kyks zQ01T#wIM1TkHJbu4pQN83{>H86e@x&2*+VSH~{@uAo_)akRSGY->}>B79w)P?#`Ko z$PPO-YbqjhG9n|K)9GPPrj13Ujz;teJ1`~ezvO|4-bqEsUWJIBVYelPz1AZS(LL;^ zZsC0G8g@ySlta&szS~I2Nls5MNz3Y+n%OrsCnYU4H#IjSJvBWwIrTa%nZdOa>;GVq zos*S&eG_cS3uaGR^9PfxwCtSgn_x?B@Y1AZe=y0&&dR*LNw_6gH+j_`Owu#5|HHzt zB`=sZ<&S$wOH0qb{w&y%6Z~w-`hS}xH7_qW^SZNKYsm|4o7(sXlibX#yz9-9iesV2 z#!vg>EII!nE~$CpmY|%z`VX^Y<)md@e->=X4j!DoLn26Sx>zJ1qt$G*JIAfHzY?XiH@{21 zNDuRu*+SOd+@;6a4aS%Bit&d2GLLn?rf-K1Mv#;))|-5`ND!}y@5Lv9V%f(IxY2B>TcM^%65l*1rWJc#i@}rgFMqU)mK}^t zOb>}D@|Y1m@@-fi4OJeKag>yXjzyEsp{JtAWZs??&`{!4qctTmv@n_sCFy9F68bor z3?_y6wI9rmAv^3ftMrXp;QPQQfwO_v0?!AY3OuY|F)9Q11~vt54^#!p10{hW#xP@= zQDg8xR-jwJ@_y4ddf#~OpnN~+J?I6!HTnl$1q$^DFVlF>c**PTwegtyoqNGO;~qyT zegqYGt$y6Cbj#fSsI-Z$=lte;<$UCvaMnEK1f7-60%y82)G2V%o%W8fuiBT4kbT-d zV(+jU?bY@?yVNe$!Opc4ZDC!pKC#|5l8q?qPu7E0qjiTh&zf$PSVOH$E6IwpT#K4N zm|vJ@%-7B5%}31p&8?=d-)}B6=bGcqY-5kv$&5CM@ssg6N_KQ&gA5JpPCf|@=s}jl zM?Hv5pnXqL#N*>wA3Cah*}OUBOXn?GSh8qQ#ZBc^+B=~cDI_x{nkCU2%a_ionpa+N zL;1pmv#PYeKrn?YA*nT5pwPSDYvs;$Ua&9PU9Af9uo-DA)L+&6%Qt1Dn8%;zI-5)% zC%=+xtp=kp3VPm1-l4EQl|<{1olEvJnBR|lMx3zlQtzM^nBpBg6q&f&gAYcKQRMI# zVkJh)yS0S>pC21AW86J zSK6A99uS#CSFx7GM3{WB=75>N7vu0Zakim*3XDvp`?#HKYNWti7id^vhsqC=w$L_< zE@PxO1as*ScDRt*grtH~ME6tD2aXJ+=ORc(XiEwGhNOdEO0PPUe%eDx znhL4qG$s^xkj90232BE$pJBzJHLnm0S}mnHW=kTK)@98t*Yo*I?J^GdKC4~QA2w~L zOBh=}u^*%;`aUK3VAjyClJtc>4RkyGJ<-uc7wRNGQcoG8-9j8y|)^JlZ2NK`h zB0{I$rLjOP|im+3KsjD~|h zgy$Fq{3^YVlN;fIU+7YcjD>i?e&b{e#9Hh%la#=R(d-9G#>442HjR>T(5E#!D=kKL zXvT4oPj;X~nh2{)m;mqPvhB<)Gc+=SOxnak7jjul$d013;irDgU~F?%DO~BuvUD$e zbQq1(>~(T3jl&TP%IZf?hL$00EGLuT^J3OYu=*><>xn`gnf73>pA zZh;q8u^Z6v_M3s;#8y$7eG@!Cmu2&)@U8^S)tr6iJG#anp}A<>jk20W^C7>HRZ=n! z9^1smQ?`EmTsXIwouy9?qQehGd=zyhCT*Izp!VjnfwLBdD$j^+ zp;Nh5>(GIpNlHs8)#1fKd<7u_`VHa7O@s0Z&7Q?8aNe1mZ>m-%*em!I$v4C+1Lobz z@8iZr&79BsYZrr&iD!821m(cKseA(C4N1y|RTFrU;G3e91)q-LTjcNV=g)<0p2Ja} z;Cw?b`Mu+>7b%u++yB=@`hF_5^kK$ zTM1s1sv@A{2A+z)E>{6~dnR8lem{E>G$-9GmEr4bpXBQkR4mNCk8h)V{Uj9w%Y6O; zCDAZ`JwM5=ojz@arrX*I+{^;L$y4!AwU2L>ytz`vLFHEdozXIeb3DZ-G;2CLfulap z_@+qJ8WtVl&5}2^SFPaGgM5d;T)=*Ew`Rr3-PmuN*@(+oBl*T^ z)fMi%%5RgT3mCugizev?f0tr^1nCZU$BT&;YUFnv#Q=#Knc72~(IpY*HE|xz&j`M? zz3K@UvqWc0r)@PnCvEZf2+AAVsoqeOD((}!sX+CD6GfuH2%lMlYGs;bXl233#9|&y zQ7JI4OgwJ##-%D5oMQ2d069}Q5*0LhwwM@+idwN;+-*oAk8AQc4*!DWTQXG|{JB1L9k8fsqXO><7`#0e)0W6HX@jVYKP9J-2JmhB}@QvEaWVe9NFD zMq~Gp7#z_cP*5Z4shDy143!1DE{Pe=R?dMp2@)arMU7v?UgtP(Nl-cPX&2ev#@jSP zlXZfy2yCK^@0z6gg307pgs-D257rUs6TYQdo0?q{g7$Dffe>8P$7kILQ_s_>DM@;eh%_0co( z1CHuj|DGIWq3XVSN&Z!!>K^(+&ay}uwEl;DUyxGx$ItQylT3uqnI0|41o+j|l}@I> z>PS7BlgY3pR(~k0pg9Tp-wZMx;yddDIcnRK?m9YfDm>Ope^!ukn46{(NoK$^Fb1yR*{jZ5Z2$kziL)oV|! zo@bHyaG^=xYNNg_+paeo1Xb!`{QxHwaAcpJ$jGhm{(ij|(=kDe@2;f>XS{KmS_GX> z>K_We*;WhT$}@VTZscp`y>b%CM~5d9-jJZG;H6`FJ3%Vp!mIiK#y6I$#n5z6FPAMl zc{nrlTt=2c!C&+z1X%*#oYR|aQVr^3{rO0gqJpb>txIl$SDA5$qeQJVj7D7-SbL<2 zaOGhMzA;{{gfEhec)Y(ys1=aa#yEwqfGL_D^UuK7WvNv#qMz|J zBn|F#`RCxxgMAJ1hZ?UKyl$de1B-Hvb9n2TQWj`t4^e=t%n-b8mQSHgh4BfdVTn&* z%^2g1Z28E<+*@lr$WY?;tuv~7kV_<ju@Q{5`gZml|H!V(DL4|E@<$;DAKOXOiv1DCzb8CE@hac%s_k$6QrIm@-v{9znM~pJG zFE)7X48INRYHQA5yndjc013<-$XnK$cts|ff1;>OFLyF`N1#^Snql69m$%tLGdrMd ztjRY`^V>t`;pPQtP&!9LshWcgQ>a%n&qs~I3{u1E2BwB~4K)+s{UPRH%3FH)9pGGv znT*fuNX?4G{<_5*Z}mGu>`L<+0eq(Uqd>*`b(U#ZSf1OO>F^tf9gIx;jn`)QUE%yP zGlTIBL;NlmfOYZNqL2jIU4kdx7F6p z8CpGU?h*JjJo>D;JFI1Mj+rk>k^;Ssn}4?O8TixNW-o51Udsf3^v+(Dp>JD}xX`v# zqY!G|HTy-PrXBm-^c_^QL08O|EpF~1-{W#VCH&4bKMO`1)|0xovD8O>!z#ib+LAOa z)I7#03B`^zI>9n(ofR#oFt22Ub&`=BI2~<88~E`2q>W{oBp1HvVkJf3tFLvIwVaVW zXwJ3fnWP{5caepcSw8F^Vof)>q&)0?#`&&9zW`zn$C1Xy$F!PW^C`B_d4GNprq4+lXtKh~2CGL16E zy_};}1S1ot^Ty@=XfQ4NN5MB__@m&~tJdN0Yq8URTNk;-wAGs3K?rR%c3#XkFn=6; z{GGLq^Nn%-Sh(EUj>9{3nm-152>U~PTQMmwX=Vnwgll`3@XaIr64(}HkJS05;r@8Y zNwVLNCZlIHXPA*dLy?Qw%Xp?a?z70B0DTkfBEjo>`epD=zTK1ax=gVl79h zlp&43Lqa%oBjL6A{v>#1q@B-rOE-Ta>`%43*;e?8Myw{yYQkQ%R-mE6pNvNylcju1 RzIJEmG&5pg=}`Md@qc~dYu5k( diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/FractionalTranslation/node1_base.dart b/lib/views/widgets/SingleChildRenderObjectWidget/FractionalTranslation/node1_base.dart new file mode 100644 index 0000000..9a24054 --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/FractionalTranslation/node1_base.dart @@ -0,0 +1,68 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/7/22 +/// contact me by email 1981462002@qq.com +/// 说明: 263 FractionalTranslation 通过offset属性将子组件进行偏移,偏移量为OffSet横纵*子组件大小。 +// { +// "widgetId": 263, +// "name": "FractionalTranslation基本使用", +// "priority": 1, +// "subtitle": "【translation】 : 偏移分度值 【Offset】\n" +// "【child】: 子组件 【Widget】", +// } + +class FractionalTranslationDemo extends StatefulWidget { + @override + _FractionalTranslationDemoState createState() => + _FractionalTranslationDemoState(); +} + +class _FractionalTranslationDemoState extends State { + var dx = 0.0; + var dy = 0.0; + + @override + Widget build(BuildContext context) { + print(dx); + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 200, + height: 100, + alignment: Alignment.topLeft, + color: Colors.grey.withAlpha(33), + child: FractionalTranslation( + translation: Offset(dx, dy), + child: Icon( + Icons.android, + color: Colors.green, + ), + ), + ), + _buildSliderX(), + _buildSliderY() + ], + ); + } + + Widget _buildSliderX() => Slider( + min: -2.0, + max: 10.0, + value: dx, + divisions: 100, + label: 'dx:${dx.toStringAsFixed(1)}', + onChanged: (v) => setState(() => dx = v), + ); + + + Widget _buildSliderY() => Slider( + min: -2.0, + max: 6.0, + value: dy, + divisions: 100, + label: 'dy:${dy.toStringAsFixed(1)}', + onChanged: (v) => setState(() => dy = v), + ); +} diff --git a/lib/views/widgets/StatefulWidget/MouseRegion/node1_base.dart b/lib/views/widgets/StatefulWidget/MouseRegion/node1_base.dart new file mode 100644 index 0000000..2d1918e --- /dev/null +++ b/lib/views/widgets/StatefulWidget/MouseRegion/node1_base.dart @@ -0,0 +1,69 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/7/22 +/// contact me by email 1981462002@qq.com +/// 说明: 293 MouseRegion 用于鼠标事件监听的组件,通常用于桌面和Web平台,可监听鼠标的移入、移除、移动事件。 +// { +// "widgetId": 293, +// "name": "MouseRegion基本使用", +// "priority": 1, +// "subtitle": "【onEnter】 : 移入事件 【PointerEnterEventListener】\n" +// "【onHover】: 移动事件 【PointerHoverEventListener】\n" +// "【onExit】: 移出事件 【PointerExitEventListener】", +// } + +class MouseRegionDemo extends StatefulWidget { + @override + _MouseRegionDemoState createState() => _MouseRegionDemoState(); +} + +class _MouseRegionDemoState extends State { + int _enterCounter = 0; + int _exitCounter = 0; + double x = 0.0; + double y = 0.0; + void _incrementEnter(PointerEvent details) { + setState(() { + _enterCounter++; + }); + } + void _incrementExit(PointerEvent details) { + setState(() { + _exitCounter++; + }); + } + void _updateLocation(PointerEvent details) { + setState(() { + x = details.position.dx; + y = details.position.dy; + }); + } + @override + Widget build(BuildContext context) { + return ConstrainedBox( + constraints: BoxConstraints.tight(Size(300.0, 200.0)), + child: MouseRegion( + onEnter: _incrementEnter, + onHover: _updateLocation, + onExit: _incrementExit, + child: Container( + color: Colors.lightBlueAccent, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text('You have entered or exited this box this many times:'), + Text( + '$_enterCounter Entries\n$_exitCounter Exits', + style: Theme.of(context).textTheme.headline4, + ), + Text( + 'The cursor is here: (${x.toStringAsFixed(2)}, ${y.toStringAsFixed(2)})', + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/views/widgets/StatelessWidget/CupertinoNavigationBarBackButton/node1_base.dart b/lib/views/widgets/StatelessWidget/CupertinoNavigationBarBackButton/node1_base.dart new file mode 100644 index 0000000..dfd81ee --- /dev/null +++ b/lib/views/widgets/StatelessWidget/CupertinoNavigationBarBackButton/node1_base.dart @@ -0,0 +1,25 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/7/22 +/// contact me by email 1981462002@qq.com +/// 说明: 218 CupertinoNavigationBarBackButton Cupertino风格的导航栏返回按钮,可指定颜色和点击事件,一般不单独使用。 +// { +// "widgetId": 218, +// "name": "返回按钮基本使用", +// "priority": 1, +// "subtitle": "【onPressed】 : 点击事件 【VoidCallback】\n" +// "【color】: 颜色 【Color】", +// } + +class CupertinoNavigationBarBackButtonDemo extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + child: CupertinoNavigationBarBackButton( + color: Colors.deepPurpleAccent, + onPressed: ()=>Navigator.of(context).pop(), + ), + ); + } +} diff --git a/lib/views/widgets/StatelessWidget/TabPageSelector/node1_base.dart b/lib/views/widgets/StatelessWidget/TabPageSelector/node1_base.dart new file mode 100644 index 0000000..dfddfcc --- /dev/null +++ b/lib/views/widgets/StatelessWidget/TabPageSelector/node1_base.dart @@ -0,0 +1,72 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/7/22 +/// contact me by email 1981462002@qq.com +/// 说明: 205 TabPageSelector 通常作为指示器与TabBarView联用,共同使用一个TabController。可指定颜色、大小、选中色。 + +// { +// "widgetId": 205, +// "name": "TabPageSelector基本使用", +// "priority": 1, +// "subtitle": "【controller】 : 控制器 【TabController】\n" +// "【indicatorSize】: 指示器大小 【double】\n" +// "【selectedColor】: 选中色 【Color】\n" +// "【color】: 颜色 【Color】", +// } + +class TabPageSelectorDemo extends StatefulWidget { + @override + _TabPageSelectorDemoState createState() => _TabPageSelectorDemoState(); +} + +class _TabPageSelectorDemoState extends State + with SingleTickerProviderStateMixin { + final tabs = ['风画庭', '雨韵舍', '雷鸣殿', '电疾堂', '霜寒阁', '雪月楼']; + TabController _tabController; + + @override + void initState() { + super.initState(); + _tabController = TabController(vsync: this, length: tabs.length); + } + + @override + void dispose() { + _tabController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Container( + height: 200, + child: Stack( + alignment: Alignment.center, + children: [ + Container(color: Colors.purple, child: _buildTableBarView()), + Positioned( + bottom: 10, + child: buildTabPageSelector(), + ), + ], + ), + ); + } + + Widget buildTabPageSelector() => TabPageSelector( + controller: _tabController, + color: Colors.white, + indicatorSize: 10, + selectedColor: Colors.orangeAccent, + ); + + Widget _buildTableBarView() => TabBarView( + controller: _tabController, + children: tabs + .map((e) => Center( + child: Text( + e, + style: TextStyle(color: Colors.white, fontSize: 20), + ))) + .toList()); +} diff --git a/lib/views/widgets/StatelessWidget/TabPageSelectorIndicator/node1_base.dart b/lib/views/widgets/StatelessWidget/TabPageSelectorIndicator/node1_base.dart new file mode 100644 index 0000000..87a352b --- /dev/null +++ b/lib/views/widgets/StatelessWidget/TabPageSelectorIndicator/node1_base.dart @@ -0,0 +1,54 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/7/22 +/// contact me by email 1981462002@qq.com +/// 说明: 206 TabPageSelectorIndicator 一个有边线的圆形组件,可指定大小、颜色、边线色。是TabPageSelector的部分之一,一般不单独使用。 + +// { +// "widgetId": 206, +// "name": "TabPageSelectorIndicator基本使用", +// "priority": 1, +// "subtitle": "【size】: 大小 【double】\n" +// "【backgroundColor】: 背景色 【Color】\n" +// "【borderColor】: 边线色 【Color】", +// } + +class TabPageSelectorIndicatorDemo extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + TabPageSelectorIndicator( + backgroundColor: Colors.greenAccent, + borderColor: Colors.deepPurpleAccent, + size: 15, + ), + TabPageSelectorIndicator( + backgroundColor: Colors.blue, + borderColor: Colors.grey, + size: 20, + ), + TabPageSelectorIndicator( + backgroundColor: Colors.green, + borderColor: Colors.red, + size: 25, + ), + TabPageSelectorIndicator( + backgroundColor: Colors.yellow, + borderColor: Colors.brown, + size: 30, + ), + TabPageSelectorIndicator( + backgroundColor: Colors.amber, + borderColor: Colors.purpleAccent, + size: 35, + ), + ], + ), + ); + } + +} + diff --git a/lib/views/widgets/StatelessWidget/zz_no/CupertinoSegmentedControlTest.dart b/lib/views/widgets/StatelessWidget/zz_no/CupertinoSegmentedControlTest.dart deleted file mode 100755 index e1e5607..0000000 --- a/lib/views/widgets/StatelessWidget/zz_no/CupertinoSegmentedControlTest.dart +++ /dev/null @@ -1,60 +0,0 @@ -import 'dart:math'; - -import 'package:flutter/cupertino.dart'; - - -//class CupertinoButtonTest extends StatelessWidget { -// CupertinoButtonTest({Key key}) : super(key: key); -// -// @override -// Widget build(BuildContext context) { -// return CupertinoSegmentedControl( -// onValueChanged: (v) { -// print(object) -// }, -// pressedColor: Color(0xff7c1c25), -// borderColor: Color(0xffac172a), -// selectedColor: Color(0xffac172a), -// groupValue: value, -// children: { -// 'a': Container( -// alignment: Alignment.center, -// width: 130.0, -// child: Text('a') -// ), -// 'c': Text('C'), -// 'b': Text('B'), -// }, -// ); -//} -// -class CupertinoSegmentedControlTest extends StatefulWidget { - _Demo createState() => _Demo(); -} - -class _Demo extends State { - String value = 'Java'; - @override - Widget build(BuildContext context) { - return CupertinoSegmentedControl( - onValueChanged: (v) { - this.setState(() { - value = v; - }); - }, - pressedColor: CupertinoColors.activeGreen,//点击时颜色 - borderColor: CupertinoColors.inactiveGray,//边框颜色 - selectedColor: CupertinoColors.activeBlue,//选中的颜色 - groupValue: value,//当前值 - children: {//对于组件 - 'Java': Container( - alignment: Alignment.center, - width: 100.0, - child: Text('Java') - ), - 'Kotlin': Text('Kotlin'), - 'Dart': Text('Dart'), - }, - ); - } -} diff --git a/lib/views/widgets/exp/render_object_unit.dart b/lib/views/widgets/exp/render_object_unit.dart index 272089f..3a789f9 100644 --- a/lib/views/widgets/exp/render_object_unit.dart +++ b/lib/views/widgets/exp/render_object_unit.dart @@ -29,6 +29,7 @@ export '../SingleChildRenderObjectWidget/CustomSingleChildLayout/node1_base.dart export '../SingleChildRenderObjectWidget/CustomSingleChildLayout/node2_offset.dart'; export '../SingleChildRenderObjectWidget/ConstrainedBox/node1_base.dart'; +export '../SingleChildRenderObjectWidget/FractionalTranslation/node1_base.dart'; export '../SingleChildRenderObjectWidget/ColorFiltered/node1_base.dart'; export '../SingleChildRenderObjectWidget/Baseline/node1_base.dart'; export '../SingleChildRenderObjectWidget/DecoratedBox/node1_base.dart'; diff --git a/lib/views/widgets/exp/stateful_unit.dart b/lib/views/widgets/exp/stateful_unit.dart index 4226bc7..e03e8b7 100644 --- a/lib/views/widgets/exp/stateful_unit.dart +++ b/lib/views/widgets/exp/stateful_unit.dart @@ -53,6 +53,7 @@ export '../StatefulWidget/CupertinoTabBar/node1_base.dart'; export '../StatefulWidget/CupertinoTextField/node1_base.dart'; export '../StatefulWidget/CupertinoTextField/node2_style.dart'; export '../StatefulWidget/ValueListenableBuilder/node1_base.dart'; +export '../StatefulWidget/MouseRegion/node1_base.dart'; export '../StatefulWidget/DropdownButton/node1_base.dart'; export '../StatefulWidget/DropdownButton/node2_style.dart'; diff --git a/lib/views/widgets/exp/stateless_unit.dart b/lib/views/widgets/exp/stateless_unit.dart index 0c8c760..6c135e2 100644 --- a/lib/views/widgets/exp/stateless_unit.dart +++ b/lib/views/widgets/exp/stateless_unit.dart @@ -33,6 +33,10 @@ export '../StatelessWidget/DataTable/node1_base.dart'; export '../StatelessWidget/DataTable/node2_operation.dart'; export '../StatelessWidget/OrientationBuilder/node1_base.dart'; export '../StatelessWidget/Title/node1_base.dart'; +export '../StatelessWidget/TabPageSelector/node1_base.dart'; +export '../StatelessWidget/TabPageSelectorIndicator/node1_base.dart'; +export '../StatelessWidget/TabPageSelectorIndicator/node1_base.dart'; +export '../StatelessWidget/CupertinoNavigationBarBackButton/node1_base.dart'; export '../StatelessWidget/CupertinoTheme/node1_base.dart'; export '../StatelessWidget/CupertinoTheme/node2_use.dart'; diff --git a/lib/views/widgets/widgets_map.dart b/lib/views/widgets/widgets_map.dart index e95be81..f6f1ed9 100644 --- a/lib/views/widgets/widgets_map.dart +++ b/lib/views/widgets/widgets_map.dart @@ -51,7 +51,26 @@ class WidgetsMap { return [ CustomBanner(), ]; - + case "FractionalTranslation": + return [ + FractionalTranslationDemo(), + ]; + case "MouseRegion": + return [ + MouseRegionDemo(), + ]; + case "TabPageSelector": + return [ + TabPageSelectorDemo(), + ]; + case "CupertinoNavigationBarBackButton": + return [ + CupertinoNavigationBarBackButtonDemo(), + ]; + case "TabPageSelectorIndicator": + return [ + TabPageSelectorIndicatorDemo(), + ]; case "Title": return [ TitleDemo(),