Skip to content

Commit a8e6b58

Browse files
committed
fix 动画问题
1 parent aedb550 commit a8e6b58

File tree

2 files changed

+28
-18
lines changed

2 files changed

+28
-18
lines changed

lib/page/repostory_detail_info_page.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,8 @@ class ReposDetailInfoPageState extends State<ReposDetailInfoPage>
208208
SliverPersistentHeader(
209209
pinned: true,
210210
delegate: _InfoHeaderDelegate(
211-
maxHeight: 70,
212-
minHeight: 70,
211+
maxHeight: 60,
212+
minHeight: 60,
213213
changeSize: true,
214214
snapConfig: FloatingHeaderSnapConfiguration(
215215
vsync: this,
@@ -219,11 +219,11 @@ class ReposDetailInfoPageState extends State<ReposDetailInfoPage>
219219
builder: (BuildContext context, double shrinkOffset,
220220
bool overlapsContent) {
221221
///根据数值计算偏差
222-
var lr = 10 - shrinkOffset / 70 * 10;
223-
var radius = Radius.circular(4 - shrinkOffset / 70 * 4);
222+
var lr = 10 - shrinkOffset / 60 * 10;
223+
var radius = Radius.circular(4 - shrinkOffset / 60 * 4);
224224
return SizedBox.expand(
225225
child: Padding(
226-
padding: EdgeInsets.only(bottom: 20, left: lr, right: lr),
226+
padding: EdgeInsets.only(bottom: 10, left: lr, right: lr),
227227
child: new GSYSelectItemWidget(
228228
[
229229
CommonUtils.getLocale(context).repos_tab_activity,

lib/widget/repos_header_item.dart

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:flutter/material.dart';
2+
import 'package:gsy_github_app_flutter/common/config/config.dart';
23
import 'package:gsy_github_app_flutter/common/model/Repository.dart';
34
import 'package:gsy_github_app_flutter/common/style/gsy_style.dart';
45
import 'package:gsy_github_app_flutter/common/utils/common_utils.dart';
@@ -26,8 +27,8 @@ class ReposHeaderItem extends StatefulWidget {
2627

2728
class _ReposHeaderItemState extends State<ReposHeaderItem> {
2829
final GlobalKey layoutKey = new GlobalKey();
29-
final GlobalKey layoutKey2 = new GlobalKey();
30-
final GlobalKey layoutKey3 = new GlobalKey();
30+
final GlobalKey layoutTopicContainerKey = new GlobalKey();
31+
final GlobalKey layoutLastTopicKey = new GlobalKey();
3132

3233
double widgetHeight = 0;
3334

@@ -55,7 +56,7 @@ class _ReposHeaderItemState extends State<ReposHeaderItem> {
5556
_renderTopicItem(BuildContext context, String item, index) {
5657
return new RawMaterialButton(
5758
key: index == widget.reposHeaderViewModel.topics.length - 1
58-
? layoutKey3
59+
? layoutLastTopicKey
5960
: null,
6061
onPressed: () {
6162
NavigatorUtils.gotoCommonList(context, item, "repository", "topics",
@@ -91,7 +92,7 @@ class _ReposHeaderItemState extends State<ReposHeaderItem> {
9192
list.add(_renderTopicItem(context, item, i));
9293
}
9394
return new Container(
94-
key: layoutKey2,
95+
key: layoutTopicContainerKey,
9596
alignment: Alignment.topLeft,
9697
margin: EdgeInsets.only(top: 5.0),
9798
child: Wrap(
@@ -123,20 +124,29 @@ class _ReposHeaderItemState extends State<ReposHeaderItem> {
123124
void didUpdateWidget(ReposHeaderItem oldWidget) {
124125
super.didUpdateWidget(oldWidget);
125126
///如果没有tag列表,不需要处理
126-
if(layoutKey2.currentContext == null || layoutKey3.currentContext == null) {
127+
/*if(layoutTopicContainerKey.currentContext == null || layoutLastTopicKey.currentContext == null) {
127128
return;
128-
}
129+
}*/
129130
///如果存在tag,根据tag去判断,修复溢出
130131
new Future.delayed(Duration(seconds: 0), (){
131132
/// tag 所在 container
132-
RenderBox renderBox2 = layoutKey2.currentContext.findRenderObject();
133+
RenderBox renderBox2 = layoutTopicContainerKey.currentContext?.findRenderObject();
133134
/// 最后面的一个tag
134-
RenderBox renderBox3 = layoutKey3.currentContext.findRenderObject();
135-
double overflow = (renderBox3.localToGlobal(Offset.zero).dy -
136-
renderBox2.localToGlobal(Offset.zero).dy) -
137-
layoutKey3.currentContext.size.height;
138-
var newSize = layoutKey.currentContext.size.height + overflow;
139-
if (widgetHeight != newSize) {
135+
RenderBox renderBox3 = layoutLastTopicKey.currentContext?.findRenderObject();
136+
double overflow = ((renderBox3?.localToGlobal(Offset.zero)?.dy ?? 0) -
137+
(renderBox2?.localToGlobal(Offset.zero)?.dy ?? 0)) -
138+
(layoutLastTopicKey.currentContext?.size?.height ?? 0);
139+
var newSize;
140+
if(overflow > 0) {
141+
newSize = layoutKey.currentContext.size.height + overflow;
142+
} else {
143+
newSize = layoutKey.currentContext.size.height + 10.0;
144+
}
145+
if(Config.DEBUG) {
146+
print("newSize $newSize overflow $overflow");
147+
}
148+
if (widgetHeight != newSize && newSize > 0) {
149+
print("widget?.layoutListener?.call");
140150
widgetHeight = newSize;
141151
widget?.layoutListener
142152
?.call(Size(layoutKey.currentContext.size.width, widgetHeight));

0 commit comments

Comments
 (0)