@@ -90,7 +90,9 @@ class _ReposHeaderItemState extends State<ReposHeaderItem> {
9090 _renderTopicGroup (BuildContext context) {
9191 if (widget.reposHeaderViewModel.topics == null ||
9292 widget.reposHeaderViewModel.topics.length == 0 ) {
93- return Container ();
93+ return Container (
94+ key: layoutTopicContainerKey,
95+ );
9496 }
9597 List <Widget > list = new List ();
9698 for (int i = 0 ; i < widget.reposHeaderViewModel.topics.length; i++ ) {
@@ -100,7 +102,7 @@ class _ReposHeaderItemState extends State<ReposHeaderItem> {
100102 return new Container (
101103 key: layoutTopicContainerKey,
102104 alignment: Alignment .topLeft,
103- margin: EdgeInsets .only (top: 5.0 ),
105+ // margin: EdgeInsets.only(top: 5.0),
104106 child: Wrap (
105107 spacing: 10.0 ,
106108 runSpacing: 5.0 ,
@@ -141,27 +143,24 @@ class _ReposHeaderItemState extends State<ReposHeaderItem> {
141143 RenderBox renderBox2 =
142144 layoutTopicContainerKey.currentContext? .findRenderObject ();
143145
144- /// 最后面的一个tag
145- RenderBox renderBox3 =
146- layoutLastTopicKey.currentContext? .findRenderObject ();
147- double overflow = ((renderBox3? .localToGlobal (Offset .zero)? .dy ?? 0 ) -
148- (renderBox2? .localToGlobal (Offset .zero)? .dy ?? 0 )) -
149- (layoutLastTopicKey.currentContext? .size? .height ?? 0 );
150- var newSize;
151- if (overflow > 0 ) {
152- newSize = layoutKey.currentContext.size.height + overflow;
153- } else {
154- newSize = layoutKey.currentContext.size.height + 10.0 ;
155- }
156- if (Config .DEBUG ) {
157- print ("newSize $newSize overflow $overflow " );
158- }
159- if (widgetHeight != newSize && newSize > 0 ) {
160- print ("widget?.layoutListener?.call" );
161- widgetHeight = newSize;
162- widget? .layoutListener
163- ? .call (Size (layoutKey.currentContext.size.width, widgetHeight));
146+ var dy = renderBox2
147+ ? .localToGlobal (Offset .zero,
148+ ancestor: layoutKey.currentContext.findRenderObject ())
149+ ? .dy ?? 0 ;
150+ var sizeTagContainer = layoutTopicContainerKey? .currentContext? .size ?? null ;
151+ var headerSize = layoutKey? .currentContext? .size;
152+ if (dy > 0 && headerSize != null && sizeTagContainer != null ) {
153+ /// 20是 card 的上下 padding
154+ var newSize = dy + sizeTagContainer.height + 20 ;
155+ if (widgetHeight != newSize && newSize > 0 ) {
156+ print ("widget?.layoutListener?.call" );
157+ widgetHeight = newSize;
158+ widget? .layoutListener
159+ ? .call (Size (layoutKey.currentContext.size.width, widgetHeight));
160+ }
164161 }
162+
163+
165164 });
166165 }
167166
0 commit comments