Skip to content

Commit 58adc67

Browse files
committed
优化详情页面针对 tag 动态调整 header 高度
1 parent 7193687 commit 58adc67

File tree

1 file changed

+21
-22
lines changed

1 file changed

+21
-22
lines changed

lib/page/repos/widget/repos_header_item.dart

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)