X Tutup
Skip to content

Commit c4359dc

Browse files
committed
add other controller
1 parent 1359061 commit c4359dc

File tree

4 files changed

+81
-2
lines changed

4 files changed

+81
-2
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import 'package:flare_dart/math/mat2d.dart';
2+
import 'package:flare_flutter/flare.dart';
3+
import 'package:flare_flutter/flare_controller.dart';
4+
5+
mixin GSYFlarePullMutliController implements FlareController {
6+
7+
ActorAnimation _loadingAnimation;
8+
ActorAnimation _successAnimation;
9+
ActorAnimation _pullAnimation;
10+
ActorAnimation _cometAnimation;
11+
12+
double pulledExtentFlare = 0;
13+
bool _isSurround = false;
14+
15+
16+
double _refreshTriggerPullDistance = 140;
17+
18+
double _successTime = 0.0;
19+
double _loadingTime = 0.0;
20+
double _cometTime = 0.0;
21+
22+
@override
23+
void initialize(FlutterActorArtboard artboard) {
24+
_pullAnimation = artboard.getAnimation("pull");
25+
_successAnimation = artboard.getAnimation("success");
26+
_loadingAnimation = artboard.getAnimation("loading");
27+
_cometAnimation = artboard.getAnimation("idle comet");
28+
}
29+
30+
@override
31+
void setViewTransform(Mat2D viewTransform) {}
32+
33+
@override
34+
bool advance(FlutterActorArtboard artboard, double elapsed) {
35+
double animationPosition = pulledExtentFlare / _refreshTriggerPullDistance;
36+
animationPosition *= animationPosition;
37+
_cometTime += elapsed;
38+
_cometAnimation.apply(_cometTime % _cometAnimation.duration, artboard, 1.0);
39+
_pullAnimation.apply(
40+
_pullAnimation.duration * animationPosition, artboard, 1.0);
41+
if (_isSurround) {
42+
_successTime += elapsed;
43+
if (_successTime >= _successAnimation.duration) {
44+
_loadingTime += elapsed;
45+
}
46+
} else {
47+
_successTime = _loadingTime = 0.0;
48+
}
49+
if (_successTime >= _successAnimation.duration) {
50+
_loadingAnimation.apply(
51+
_loadingTime % _loadingAnimation.duration, artboard, 1.0);
52+
} else if (_successTime > 0.0) {
53+
_successAnimation.apply(_successTime, artboard, 1.0);
54+
}
55+
return true;
56+
}
57+
58+
void onRefreshing() {
59+
_isSurround = true;
60+
}
61+
62+
void onRefreshEnd() {
63+
_isSurround = false;
64+
}
65+
66+
bool get getPlayAuto;
67+
}

lib/widget/pull/gsy_pull_new_load_widget.dart

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'package:gsy_github_app_flutter/common/utils/common_utils.dart';
77
import 'dart:math';
88

99
import 'custom_bouncing_scroll_physics.dart';
10+
import 'gsy_flare_mutli_pull_controller.dart';
1011
import 'gsy_flare_pull_controller.dart';
1112

1213
const double iosRefreshHeight = 140;
@@ -43,6 +44,7 @@ class GSYPullLoadWidget extends StatefulWidget {
4344

4445
class _GSYPullLoadWidgetState extends State<GSYPullLoadWidget>
4546
with GSYFlarePullController {
47+
//with GSYFlarePullMutliController {
4648
ScrollController _scrollController;
4749

4850
bool isRefreshing = false;
@@ -307,6 +309,11 @@ class _GSYPullLoadWidgetState extends State<GSYPullLoadWidget>
307309
) {
308310
pulledExtentFlare = pulledExtent * 0.6;
309311
playAuto = refreshState == IOS.RefreshIndicatorMode.refresh;
312+
/*if(refreshState == IOS.RefreshIndicatorMode.refresh) {
313+
onRefreshing();
314+
} else {
315+
onRefreshEnd();
316+
}*/
310317
return Align(
311318
alignment: Alignment.bottomCenter,
312319
child: new Container(
@@ -316,11 +323,15 @@ class _GSYPullLoadWidgetState extends State<GSYPullLoadWidget>
316323
///动态大小处理
317324
height:
318325
pulledExtent > iosRefreshHeight ? pulledExtent : iosRefreshHeight,
319-
child: FlareActor("static/file/loading_world_now.flr",
326+
child: FlareActor(
327+
//"static/file/Space-Demo.flr",
328+
"static/file/loading_world_now.flr",
320329
alignment: Alignment.topCenter,
321330
fit: BoxFit.cover,
322331
controller: this,
323-
animation: "Earth Moving"),
332+
animation: "Earth Moving"
333+
//animation: "idle"
334+
),
324335
),
325336
);
326337
}

pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ flutter:
103103
- static/file/rejection2.json
104104
- static/file/flare_flutter_logo_.flr
105105
- static/file/loading_world_now.flr
106+
- static/file/Space-Demo.flr
106107

107108
fonts:
108109
- family: wxcIconFont

static/file/Space-Demo.flr

27.3 KB
Binary file not shown.

0 commit comments

Comments
 (0)
X Tutup