mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
mod: listener
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -31,13 +31,17 @@ class AnimatedDialogState extends State<AnimatedDialog>
|
|||||||
opacityAnimation = Tween<double>(begin: 0.0, end: 0.6)
|
opacityAnimation = Tween<double>(begin: 0.0, end: 0.6)
|
||||||
.animate(CurvedAnimation(parent: controller, curve: Curves.linear));
|
.animate(CurvedAnimation(parent: controller, curve: Curves.linear));
|
||||||
scaleAnimation = CurvedAnimation(parent: controller, curve: Curves.linear);
|
scaleAnimation = CurvedAnimation(parent: controller, curve: Curves.linear);
|
||||||
controller.addListener(() => setState(() {}));
|
controller.addListener(listener);
|
||||||
controller.forward();
|
controller.forward();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void listener() {
|
||||||
|
setState(() {});
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
controller.removeListener(() {});
|
controller.removeListener(listener);
|
||||||
controller.dispose();
|
controller.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,10 +127,7 @@ class _InteractiveviewerGalleryState extends State<InteractiveviewerGallery>
|
|||||||
_animationController = AnimationController(
|
_animationController = AnimationController(
|
||||||
vsync: this,
|
vsync: this,
|
||||||
duration: const Duration(milliseconds: 300),
|
duration: const Duration(milliseconds: 300),
|
||||||
)..addListener(() {
|
)..addListener(listener);
|
||||||
_transformationController!.value =
|
|
||||||
_animation?.value ?? Matrix4.identity();
|
|
||||||
});
|
|
||||||
|
|
||||||
if (widget.setStatusBar != false) {
|
if (widget.setStatusBar != false) {
|
||||||
setStatusBar();
|
setStatusBar();
|
||||||
@@ -141,6 +138,10 @@ class _InteractiveviewerGalleryState extends State<InteractiveviewerGallery>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void listener() {
|
||||||
|
_transformationController!.value = _animation?.value ?? Matrix4.identity();
|
||||||
|
}
|
||||||
|
|
||||||
setStatusBar() async {
|
setStatusBar() async {
|
||||||
if (Platform.isIOS || Platform.isAndroid) {
|
if (Platform.isIOS || Platform.isAndroid) {
|
||||||
await StatusBarControl.setHidden(
|
await StatusBarControl.setHidden(
|
||||||
@@ -155,7 +156,7 @@ class _InteractiveviewerGalleryState extends State<InteractiveviewerGallery>
|
|||||||
widget.onClose?.call(true);
|
widget.onClose?.call(true);
|
||||||
_player?.dispose();
|
_player?.dispose();
|
||||||
_pageController?.dispose();
|
_pageController?.dispose();
|
||||||
_animationController.removeListener(() {});
|
_animationController.removeListener(listener);
|
||||||
_animationController.dispose();
|
_animationController.dispose();
|
||||||
if (widget.setStatusBar != false) {
|
if (widget.setStatusBar != false) {
|
||||||
if (Platform.isIOS || Platform.isAndroid) {
|
if (Platform.isIOS || Platform.isAndroid) {
|
||||||
|
|||||||
@@ -105,6 +105,10 @@ class _ListSheetContentState extends State<ListSheetContent>
|
|||||||
.indexWhere((e) => e.cid == widget.currentCid)
|
.indexWhere((e) => e.cid == widget.currentCid)
|
||||||
: episodes.indexWhere((e) => e.cid == widget.currentCid));
|
: episodes.indexWhere((e) => e.cid == widget.currentCid));
|
||||||
|
|
||||||
|
void listener() {
|
||||||
|
_indexStream?.add(_ctr?.index);
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
@@ -114,9 +118,7 @@ class _ListSheetContentState extends State<ListSheetContent>
|
|||||||
vsync: this,
|
vsync: this,
|
||||||
length: widget.season.sections.length,
|
length: widget.season.sections.length,
|
||||||
initialIndex: _index,
|
initialIndex: _index,
|
||||||
)..addListener(() {
|
)..addListener(listener);
|
||||||
_indexStream?.add(_ctr?.index);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
itemScrollController = _isList
|
itemScrollController = _isList
|
||||||
? List.generate(
|
? List.generate(
|
||||||
@@ -148,7 +150,7 @@ class _ListSheetContentState extends State<ListSheetContent>
|
|||||||
_favStream = null;
|
_favStream = null;
|
||||||
_indexStream?.close();
|
_indexStream?.close();
|
||||||
_indexStream = null;
|
_indexStream = null;
|
||||||
_ctr?.removeListener(() {});
|
_ctr?.removeListener(listener);
|
||||||
_ctr?.dispose();
|
_ctr?.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,28 +43,28 @@ class _BangumiPageState extends State<BangumiPage>
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
_bangumiController.scrollController.addListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
void listener() {
|
||||||
StreamController<bool> mainStream =
|
StreamController<bool> mainStream =
|
||||||
Get.find<MainController>().bottomBarStream;
|
Get.find<MainController>().bottomBarStream;
|
||||||
StreamController<bool> searchBarStream =
|
StreamController<bool> searchBarStream =
|
||||||
Get.find<HomeController>().searchBarStream;
|
Get.find<HomeController>().searchBarStream;
|
||||||
_bangumiController.scrollController.addListener(
|
final ScrollDirection direction =
|
||||||
() async {
|
_bangumiController.scrollController.position.userScrollDirection;
|
||||||
final ScrollDirection direction =
|
if (direction == ScrollDirection.forward) {
|
||||||
_bangumiController.scrollController.position.userScrollDirection;
|
mainStream.add(true);
|
||||||
if (direction == ScrollDirection.forward) {
|
searchBarStream.add(true);
|
||||||
mainStream.add(true);
|
} else if (direction == ScrollDirection.reverse) {
|
||||||
searchBarStream.add(true);
|
mainStream.add(false);
|
||||||
} else if (direction == ScrollDirection.reverse) {
|
searchBarStream.add(false);
|
||||||
mainStream.add(false);
|
}
|
||||||
searchBarStream.add(false);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_bangumiController.scrollController.removeListener(() {});
|
_bangumiController.scrollController.removeListener(listener);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -225,29 +225,29 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
|
|||||||
|
|
||||||
// 滑动事件监听
|
// 滑动事件监听
|
||||||
void scrollListener() {
|
void scrollListener() {
|
||||||
_dynamicDetailController.scrollController.addListener(
|
_dynamicDetailController.scrollController.addListener(listener);
|
||||||
() {
|
}
|
||||||
// 标题
|
|
||||||
if (_dynamicDetailController.scrollController.offset > 55 &&
|
|
||||||
!_visibleTitle) {
|
|
||||||
_visibleTitle = true;
|
|
||||||
_titleStreamC.add(true);
|
|
||||||
} else if (_dynamicDetailController.scrollController.offset <= 55 &&
|
|
||||||
_visibleTitle) {
|
|
||||||
_visibleTitle = false;
|
|
||||||
_titleStreamC.add(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// fab按钮
|
void listener() {
|
||||||
final ScrollDirection direction = _dynamicDetailController
|
// 标题
|
||||||
.scrollController.position.userScrollDirection;
|
if (_dynamicDetailController.scrollController.offset > 55 &&
|
||||||
if (direction == ScrollDirection.forward) {
|
!_visibleTitle) {
|
||||||
_showFab();
|
_visibleTitle = true;
|
||||||
} else if (direction == ScrollDirection.reverse) {
|
_titleStreamC.add(true);
|
||||||
_hideFab();
|
} else if (_dynamicDetailController.scrollController.offset <= 55 &&
|
||||||
}
|
_visibleTitle) {
|
||||||
},
|
_visibleTitle = false;
|
||||||
);
|
_titleStreamC.add(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// fab按钮
|
||||||
|
final ScrollDirection direction =
|
||||||
|
_dynamicDetailController.scrollController.position.userScrollDirection;
|
||||||
|
if (direction == ScrollDirection.forward) {
|
||||||
|
_showFab();
|
||||||
|
} else if (direction == ScrollDirection.reverse) {
|
||||||
|
_hideFab();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _showFab() {
|
void _showFab() {
|
||||||
@@ -269,7 +269,7 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
|
|||||||
_titleStreamC.close();
|
_titleStreamC.close();
|
||||||
_fabAnimationCtr?.dispose();
|
_fabAnimationCtr?.dispose();
|
||||||
_fabAnimationCtr = null;
|
_fabAnimationCtr = null;
|
||||||
_dynamicDetailController.scrollController.removeListener(() {});
|
_dynamicDetailController.scrollController.removeListener(listener);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,23 +47,7 @@ class _DynamicsTabPageState extends State<DynamicsTabPage>
|
|||||||
..mid = dynamicsController.mid.value,
|
..mid = dynamicsController.mid.value,
|
||||||
tag: widget.dynamicsType,
|
tag: widget.dynamicsType,
|
||||||
);
|
);
|
||||||
_dynamicsTabController.scrollController.addListener(() {
|
_dynamicsTabController.scrollController.addListener(listener);
|
||||||
try {
|
|
||||||
StreamController<bool> mainStream =
|
|
||||||
Get.find<MainController>().bottomBarStream;
|
|
||||||
StreamController<bool> searchBarStream =
|
|
||||||
Get.find<HomeController>().searchBarStream;
|
|
||||||
final ScrollDirection direction = _dynamicsTabController
|
|
||||||
.scrollController.position.userScrollDirection;
|
|
||||||
if (direction == ScrollDirection.forward) {
|
|
||||||
mainStream.add(true);
|
|
||||||
searchBarStream.add(true);
|
|
||||||
} else if (direction == ScrollDirection.reverse) {
|
|
||||||
mainStream.add(false);
|
|
||||||
searchBarStream.add(false);
|
|
||||||
}
|
|
||||||
} catch (_) {}
|
|
||||||
});
|
|
||||||
if (widget.dynamicsType == 'up') {
|
if (widget.dynamicsType == 'up') {
|
||||||
_listener = dynamicsController.mid.listen((mid) {
|
_listener = dynamicsController.mid.listen((mid) {
|
||||||
// debugPrint('midListen: $mid');
|
// debugPrint('midListen: $mid');
|
||||||
@@ -76,10 +60,28 @@ class _DynamicsTabPageState extends State<DynamicsTabPage>
|
|||||||
.get(SettingBoxKey.dynamicsWaterfallFlow, defaultValue: true);
|
.get(SettingBoxKey.dynamicsWaterfallFlow, defaultValue: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void listener() {
|
||||||
|
try {
|
||||||
|
StreamController<bool> mainStream =
|
||||||
|
Get.find<MainController>().bottomBarStream;
|
||||||
|
StreamController<bool> searchBarStream =
|
||||||
|
Get.find<HomeController>().searchBarStream;
|
||||||
|
final ScrollDirection direction =
|
||||||
|
_dynamicsTabController.scrollController.position.userScrollDirection;
|
||||||
|
if (direction == ScrollDirection.forward) {
|
||||||
|
mainStream.add(true);
|
||||||
|
searchBarStream.add(true);
|
||||||
|
} else if (direction == ScrollDirection.reverse) {
|
||||||
|
mainStream.add(false);
|
||||||
|
searchBarStream.add(false);
|
||||||
|
}
|
||||||
|
} catch (_) {}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_listener?.cancel();
|
_listener?.cancel();
|
||||||
_dynamicsTabController.scrollController.removeListener(() {});
|
_dynamicsTabController.scrollController.removeListener(listener);
|
||||||
dynamicsController.mid.close();
|
dynamicsController.mid.close();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,22 +82,22 @@ class _DynamicsPageState extends State<DynamicsPage>
|
|||||||
debugPrint('upPanelPosition: $upPanelPosition');
|
debugPrint('upPanelPosition: $upPanelPosition');
|
||||||
if (GStorage.setting
|
if (GStorage.setting
|
||||||
.get(SettingBoxKey.dynamicsShowAllFollowedUp, defaultValue: false)) {
|
.get(SettingBoxKey.dynamicsShowAllFollowedUp, defaultValue: false)) {
|
||||||
_dynamicsController.scrollController.addListener(() {
|
_dynamicsController.scrollController.addListener(listener);
|
||||||
if (_dynamicsController.scrollController.position.pixels >=
|
}
|
||||||
_dynamicsController.scrollController.position.maxScrollExtent -
|
}
|
||||||
300) {
|
|
||||||
EasyThrottle.throttle('following', const Duration(seconds: 1), () {
|
void listener() {
|
||||||
_dynamicsController.queryFollowing2();
|
if (_dynamicsController.scrollController.position.pixels >=
|
||||||
});
|
_dynamicsController.scrollController.position.maxScrollExtent - 300) {
|
||||||
}
|
EasyThrottle.throttle('following', const Duration(seconds: 1), () {
|
||||||
|
_dynamicsController.queryFollowing2();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_dynamicsController.tabController.removeListener(() {});
|
_dynamicsController.scrollController.removeListener(listener);
|
||||||
_dynamicsController.scrollController.removeListener(() {});
|
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,20 +33,20 @@ class _FavDetailPageState extends State<FavDetailPage> {
|
|||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
mediaId = Get.parameters['mediaId']!;
|
mediaId = Get.parameters['mediaId']!;
|
||||||
_favDetailController.scrollController.addListener(
|
_favDetailController.scrollController.addListener(listener);
|
||||||
() {
|
}
|
||||||
if (_favDetailController.scrollController.offset > 160) {
|
|
||||||
_favDetailController.titleCtr.value = true;
|
void listener() {
|
||||||
} else if (_favDetailController.scrollController.offset <= 160) {
|
if (_favDetailController.scrollController.offset > 160) {
|
||||||
_favDetailController.titleCtr.value = false;
|
_favDetailController.titleCtr.value = true;
|
||||||
}
|
} else if (_favDetailController.scrollController.offset <= 160) {
|
||||||
},
|
_favDetailController.titleCtr.value = false;
|
||||||
);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_favDetailController.scrollController.removeListener(() {});
|
_favDetailController.scrollController.removeListener(listener);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,21 +27,21 @@ class _FollowListState extends State<FollowList> {
|
|||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
_futureBuilderFuture = widget.ctr.queryFollowings('init');
|
_futureBuilderFuture = widget.ctr.queryFollowings('init');
|
||||||
scrollController.addListener(
|
scrollController.addListener(listener);
|
||||||
() async {
|
}
|
||||||
if (scrollController.position.pixels >=
|
|
||||||
scrollController.position.maxScrollExtent - 200) {
|
void listener() {
|
||||||
EasyThrottle.throttle('follow', const Duration(seconds: 1), () {
|
if (scrollController.position.pixels >=
|
||||||
widget.ctr.queryFollowings('onLoad');
|
scrollController.position.maxScrollExtent - 200) {
|
||||||
});
|
EasyThrottle.throttle('follow', const Duration(seconds: 1), () {
|
||||||
}
|
widget.ctr.queryFollowings('onLoad');
|
||||||
},
|
});
|
||||||
);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
scrollController.removeListener(() {});
|
scrollController.removeListener(listener);
|
||||||
scrollController.dispose();
|
scrollController.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,16 +37,16 @@ class _OwnerFollowListState extends State<OwnerFollowList>
|
|||||||
mid = widget.ctr.mid;
|
mid = widget.ctr.mid;
|
||||||
tagItem = widget.tagItem!;
|
tagItem = widget.tagItem!;
|
||||||
_futureBuilderFuture = followUpGroup('init');
|
_futureBuilderFuture = followUpGroup('init');
|
||||||
scrollController.addListener(
|
scrollController.addListener(listener);
|
||||||
() async {
|
}
|
||||||
if (scrollController.position.pixels >=
|
|
||||||
scrollController.position.maxScrollExtent - 200) {
|
void listener() {
|
||||||
EasyThrottle.throttle('follow', const Duration(seconds: 1), () {
|
if (scrollController.position.pixels >=
|
||||||
followUpGroup('onLoad');
|
scrollController.position.maxScrollExtent - 200) {
|
||||||
});
|
EasyThrottle.throttle('follow', const Duration(seconds: 1), () {
|
||||||
}
|
followUpGroup('onLoad');
|
||||||
},
|
});
|
||||||
);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取分组下up
|
// 获取分组下up
|
||||||
@@ -70,7 +70,7 @@ class _OwnerFollowListState extends State<OwnerFollowList>
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
scrollController.removeListener(() {});
|
scrollController.removeListener(listener);
|
||||||
scrollController.dispose();
|
scrollController.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,28 +33,28 @@ class _HotPageState extends State<HotPage> with AutomaticKeepAliveClientMixin {
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
_hotController.scrollController.addListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
void listener() {
|
||||||
StreamController<bool> mainStream =
|
StreamController<bool> mainStream =
|
||||||
Get.find<MainController>().bottomBarStream;
|
Get.find<MainController>().bottomBarStream;
|
||||||
StreamController<bool> searchBarStream =
|
StreamController<bool> searchBarStream =
|
||||||
Get.find<HomeController>().searchBarStream;
|
Get.find<HomeController>().searchBarStream;
|
||||||
_hotController.scrollController.addListener(
|
final ScrollDirection direction =
|
||||||
() {
|
_hotController.scrollController.position.userScrollDirection;
|
||||||
final ScrollDirection direction =
|
if (direction == ScrollDirection.forward) {
|
||||||
_hotController.scrollController.position.userScrollDirection;
|
mainStream.add(true);
|
||||||
if (direction == ScrollDirection.forward) {
|
searchBarStream.add(true);
|
||||||
mainStream.add(true);
|
} else if (direction == ScrollDirection.reverse) {
|
||||||
searchBarStream.add(true);
|
mainStream.add(false);
|
||||||
} else if (direction == ScrollDirection.reverse) {
|
searchBarStream.add(false);
|
||||||
mainStream.add(false);
|
}
|
||||||
searchBarStream.add(false);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_hotController.scrollController.removeListener(() {});
|
_hotController.scrollController.removeListener(listener);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -113,32 +113,32 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
|
|||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
fabAnimationCtr.dispose();
|
fabAnimationCtr.dispose();
|
||||||
_htmlRenderCtr.scrollController.removeListener(() {});
|
_htmlRenderCtr.scrollController.removeListener(listener);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
void scrollListener() {
|
void scrollListener() {
|
||||||
_htmlRenderCtr.scrollController.addListener(
|
_htmlRenderCtr.scrollController.addListener(listener);
|
||||||
() {
|
}
|
||||||
// 标题
|
|
||||||
// if (scrollController.offset > 55 && !_visibleTitle) {
|
|
||||||
// _visibleTitle = true;
|
|
||||||
// titleStreamC.add(true);
|
|
||||||
// } else if (scrollController.offset <= 55 && _visibleTitle) {
|
|
||||||
// _visibleTitle = false;
|
|
||||||
// titleStreamC.add(false);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// fab按钮
|
void listener() {
|
||||||
final ScrollDirection direction =
|
// 标题
|
||||||
_htmlRenderCtr.scrollController.position.userScrollDirection;
|
// if (scrollController.offset > 55 && !_visibleTitle) {
|
||||||
if (direction == ScrollDirection.forward) {
|
// _visibleTitle = true;
|
||||||
_showFab();
|
// titleStreamC.add(true);
|
||||||
} else if (direction == ScrollDirection.reverse) {
|
// } else if (scrollController.offset <= 55 && _visibleTitle) {
|
||||||
_hideFab();
|
// _visibleTitle = false;
|
||||||
}
|
// titleStreamC.add(false);
|
||||||
},
|
// }
|
||||||
);
|
|
||||||
|
// fab按钮
|
||||||
|
final ScrollDirection direction =
|
||||||
|
_htmlRenderCtr.scrollController.position.userScrollDirection;
|
||||||
|
if (direction == ScrollDirection.forward) {
|
||||||
|
_showFab();
|
||||||
|
} else if (direction == ScrollDirection.reverse) {
|
||||||
|
_hideFab();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _showFab() {
|
void _showFab() {
|
||||||
|
|||||||
@@ -37,28 +37,28 @@ class _LivePageState extends State<LivePage>
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
_controller.scrollController.addListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
void listener() {
|
||||||
StreamController<bool> mainStream =
|
StreamController<bool> mainStream =
|
||||||
Get.find<MainController>().bottomBarStream;
|
Get.find<MainController>().bottomBarStream;
|
||||||
StreamController<bool> searchBarStream =
|
StreamController<bool> searchBarStream =
|
||||||
Get.find<HomeController>().searchBarStream;
|
Get.find<HomeController>().searchBarStream;
|
||||||
_controller.scrollController.addListener(
|
final ScrollDirection direction =
|
||||||
() {
|
_controller.scrollController.position.userScrollDirection;
|
||||||
final ScrollDirection direction =
|
if (direction == ScrollDirection.forward) {
|
||||||
_controller.scrollController.position.userScrollDirection;
|
mainStream.add(true);
|
||||||
if (direction == ScrollDirection.forward) {
|
searchBarStream.add(true);
|
||||||
mainStream.add(true);
|
} else if (direction == ScrollDirection.reverse) {
|
||||||
searchBarStream.add(true);
|
mainStream.add(false);
|
||||||
} else if (direction == ScrollDirection.reverse) {
|
searchBarStream.add(false);
|
||||||
mainStream.add(false);
|
}
|
||||||
searchBarStream.add(false);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_controller.scrollController.removeListener(() {});
|
_controller.scrollController.removeListener(listener);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -181,24 +181,27 @@ class LiveRoomController extends GetxController {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
msgStream?.init();
|
msgStream?.init();
|
||||||
scrollController.addListener(() {
|
scrollController.addListener(listener);
|
||||||
if (scrollController.position.userScrollDirection ==
|
|
||||||
ScrollDirection.forward) {
|
|
||||||
disableAutoScroll.value = true;
|
|
||||||
} else if (scrollController.position.userScrollDirection ==
|
|
||||||
ScrollDirection.reverse) {
|
|
||||||
final pos = scrollController.position;
|
|
||||||
if (pos.maxScrollExtent - pos.pixels <= 100) {
|
|
||||||
disableAutoScroll.value = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void listener() {
|
||||||
|
if (scrollController.position.userScrollDirection ==
|
||||||
|
ScrollDirection.forward) {
|
||||||
|
disableAutoScroll.value = true;
|
||||||
|
} else if (scrollController.position.userScrollDirection ==
|
||||||
|
ScrollDirection.reverse) {
|
||||||
|
final pos = scrollController.position;
|
||||||
|
if (pos.maxScrollExtent - pos.pixels <= 100) {
|
||||||
|
disableAutoScroll.value = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
|
scrollController.removeListener(listener);
|
||||||
scrollController.dispose();
|
scrollController.dispose();
|
||||||
super.onClose();
|
super.onClose();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,25 +28,24 @@ class _MediaPageState extends State<MediaPage>
|
|||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
mediaController = Get.put(MediaController());
|
mediaController = Get.put(MediaController());
|
||||||
|
mediaController.scrollController.addListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
void listener() {
|
||||||
StreamController<bool> mainStream =
|
StreamController<bool> mainStream =
|
||||||
Get.find<MainController>().bottomBarStream;
|
Get.find<MainController>().bottomBarStream;
|
||||||
|
final ScrollDirection direction =
|
||||||
mediaController.scrollController.addListener(
|
mediaController.scrollController.position.userScrollDirection;
|
||||||
() {
|
if (direction == ScrollDirection.forward) {
|
||||||
final ScrollDirection direction =
|
mainStream.add(true);
|
||||||
mediaController.scrollController.position.userScrollDirection;
|
} else if (direction == ScrollDirection.reverse) {
|
||||||
if (direction == ScrollDirection.forward) {
|
mainStream.add(false);
|
||||||
mainStream.add(true);
|
}
|
||||||
} else if (direction == ScrollDirection.reverse) {
|
|
||||||
mainStream.add(false);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
mediaController.scrollController.removeListener(() {});
|
mediaController.scrollController.removeListener(listener);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,10 +41,18 @@ class _MemberPageNewState extends State<MemberPageNew>
|
|||||||
MemberControllerNew(mid: _mid),
|
MemberControllerNew(mid: _mid),
|
||||||
tag: _heroTag,
|
tag: _heroTag,
|
||||||
);
|
);
|
||||||
_userController.scrollController.addListener(() {
|
_userController.scrollController.addListener(listener);
|
||||||
_userController.scrollRatio.value =
|
}
|
||||||
min(1.0, _userController.scrollController.offset.round() / 120);
|
|
||||||
});
|
void listener() {
|
||||||
|
_userController.scrollRatio.value =
|
||||||
|
min(1.0, _userController.scrollController.offset.round() / 120);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
_userController.scrollController.removeListener(listener);
|
||||||
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -44,21 +44,21 @@ class _MemberPageState extends State<MemberPage>
|
|||||||
_futureBuilderFuture = _memberController.getInfo();
|
_futureBuilderFuture = _memberController.getInfo();
|
||||||
_memberSeasonsFuture = _memberController.getMemberSeasons();
|
_memberSeasonsFuture = _memberController.getMemberSeasons();
|
||||||
_memberCoinsFuture = _memberController.getRecentCoinVideo();
|
_memberCoinsFuture = _memberController.getRecentCoinVideo();
|
||||||
_extendNestCtr.addListener(
|
_extendNestCtr.addListener(listener);
|
||||||
() {
|
}
|
||||||
final double offset = _extendNestCtr.position.pixels;
|
|
||||||
if (offset > 100) {
|
void listener() {
|
||||||
appbarStream.add(true);
|
final double offset = _extendNestCtr.position.pixels;
|
||||||
} else {
|
if (offset > 100) {
|
||||||
appbarStream.add(false);
|
appbarStream.add(true);
|
||||||
}
|
} else {
|
||||||
},
|
appbarStream.add(false);
|
||||||
);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_extendNestCtr.removeListener(() {});
|
_extendNestCtr.removeListener(listener);
|
||||||
_extendNestCtr.dispose();
|
_extendNestCtr.dispose();
|
||||||
appbarStream.close();
|
appbarStream.close();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class _MemberArchivePageState extends State<MemberArchivePage> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_memberArchivesController.scrollController.removeListener(() {});
|
_memberArchivesController.scrollController.removeListener(listener);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,19 +34,18 @@ class _MemberArchivePageState extends State<MemberArchivePage> {
|
|||||||
_memberArchivesController =
|
_memberArchivesController =
|
||||||
Get.put(MemberArchiveController(), tag: heroTag);
|
Get.put(MemberArchiveController(), tag: heroTag);
|
||||||
_futureBuilderFuture = _memberArchivesController.getMemberArchive('init');
|
_futureBuilderFuture = _memberArchivesController.getMemberArchive('init');
|
||||||
_memberArchivesController.scrollController.addListener(
|
_memberArchivesController.scrollController.addListener(listener);
|
||||||
() {
|
}
|
||||||
if (_memberArchivesController.scrollController.position.pixels >=
|
|
||||||
_memberArchivesController
|
void listener() {
|
||||||
.scrollController.position.maxScrollExtent -
|
if (_memberArchivesController.scrollController.position.pixels >=
|
||||||
200) {
|
_memberArchivesController.scrollController.position.maxScrollExtent -
|
||||||
EasyThrottle.throttle(
|
200) {
|
||||||
'member_archives', const Duration(milliseconds: 500), () {
|
EasyThrottle.throttle(
|
||||||
_memberArchivesController.onLoad();
|
'member_archives', const Duration(milliseconds: 500), () {
|
||||||
});
|
_memberArchivesController.onLoad();
|
||||||
}
|
});
|
||||||
},
|
}
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ class _MemberSeasonsPageState extends State<MemberSeasonsPage> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_memberSeasonsController.scrollController.removeListener(() {});
|
_memberSeasonsController.scrollController.removeListener(listener);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,18 +30,18 @@ class _MemberSeasonsPageState extends State<MemberSeasonsPage> {
|
|||||||
super.initState();
|
super.initState();
|
||||||
_futureBuilderFuture =
|
_futureBuilderFuture =
|
||||||
_memberSeasonsController.getSeasonDetail('onRefresh');
|
_memberSeasonsController.getSeasonDetail('onRefresh');
|
||||||
_memberSeasonsController.scrollController.addListener(
|
_memberSeasonsController.scrollController.addListener(listener);
|
||||||
() {
|
}
|
||||||
if (_memberSeasonsController.scrollController.position.pixels >=
|
|
||||||
_memberSeasonsController.scrollController.position.maxScrollExtent -
|
void listener() {
|
||||||
200) {
|
if (_memberSeasonsController.scrollController.position.pixels >=
|
||||||
EasyThrottle.throttle(
|
_memberSeasonsController.scrollController.position.maxScrollExtent -
|
||||||
'member_archives', const Duration(milliseconds: 500), () {
|
200) {
|
||||||
_memberSeasonsController.onLoad();
|
EasyThrottle.throttle(
|
||||||
});
|
'member_archives', const Duration(milliseconds: 500), () {
|
||||||
}
|
_memberSeasonsController.onLoad();
|
||||||
},
|
});
|
||||||
);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -44,22 +44,6 @@ class RankController extends GetxController with GetTickerProviderStateMixin {
|
|||||||
length: tabs.length,
|
length: tabs.length,
|
||||||
vsync: this,
|
vsync: this,
|
||||||
);
|
);
|
||||||
// 监听 tabController 切换
|
|
||||||
// if (enableGradientBg) {
|
|
||||||
// tabController.animation!.addListener(() {
|
|
||||||
// if (tabController.indexIsChanging) {
|
|
||||||
// if (initialIndex.value != tabController.index) {
|
|
||||||
// initialIndex.value = tabController.index;
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// final int temp = tabController.animation!.value.round();
|
|
||||||
// if (initialIndex.value != temp) {
|
|
||||||
// initialIndex.value = temp;
|
|
||||||
// tabController.index = initialIndex.value;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -36,28 +36,28 @@ class _ZonePageState extends State<ZonePage>
|
|||||||
super.initState();
|
super.initState();
|
||||||
_zoneController =
|
_zoneController =
|
||||||
Get.put(ZoneController(zoneID: widget.rid), tag: widget.rid.toString());
|
Get.put(ZoneController(zoneID: widget.rid), tag: widget.rid.toString());
|
||||||
|
_zoneController.scrollController.addListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
void listener() {
|
||||||
StreamController<bool> mainStream =
|
StreamController<bool> mainStream =
|
||||||
Get.find<MainController>().bottomBarStream;
|
Get.find<MainController>().bottomBarStream;
|
||||||
StreamController<bool> searchBarStream =
|
StreamController<bool> searchBarStream =
|
||||||
Get.find<HomeController>().searchBarStream;
|
Get.find<HomeController>().searchBarStream;
|
||||||
_zoneController.scrollController.addListener(
|
final ScrollDirection direction =
|
||||||
() {
|
_zoneController.scrollController.position.userScrollDirection;
|
||||||
final ScrollDirection direction =
|
if (direction == ScrollDirection.forward) {
|
||||||
_zoneController.scrollController.position.userScrollDirection;
|
mainStream.add(true);
|
||||||
if (direction == ScrollDirection.forward) {
|
searchBarStream.add(true);
|
||||||
mainStream.add(true);
|
} else if (direction == ScrollDirection.reverse) {
|
||||||
searchBarStream.add(true);
|
mainStream.add(false);
|
||||||
} else if (direction == ScrollDirection.reverse) {
|
searchBarStream.add(false);
|
||||||
mainStream.add(false);
|
}
|
||||||
searchBarStream.add(false);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_zoneController.scrollController.removeListener(() {});
|
_zoneController.scrollController.removeListener(listener);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,28 +32,28 @@ class _RcmdPageState extends State<RcmdPage>
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
_controller.scrollController.addListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
void listener() {
|
||||||
StreamController<bool> mainStream =
|
StreamController<bool> mainStream =
|
||||||
Get.find<MainController>().bottomBarStream;
|
Get.find<MainController>().bottomBarStream;
|
||||||
StreamController<bool> searchBarStream =
|
StreamController<bool> searchBarStream =
|
||||||
Get.find<HomeController>().searchBarStream;
|
Get.find<HomeController>().searchBarStream;
|
||||||
_controller.scrollController.addListener(
|
final ScrollDirection direction =
|
||||||
() {
|
_controller.scrollController.position.userScrollDirection;
|
||||||
final ScrollDirection direction =
|
if (direction == ScrollDirection.forward) {
|
||||||
_controller.scrollController.position.userScrollDirection;
|
mainStream.add(true);
|
||||||
if (direction == ScrollDirection.forward) {
|
searchBarStream.add(true);
|
||||||
mainStream.add(true);
|
} else if (direction == ScrollDirection.reverse) {
|
||||||
searchBarStream.add(true);
|
mainStream.add(false);
|
||||||
} else if (direction == ScrollDirection.reverse) {
|
searchBarStream.add(false);
|
||||||
mainStream.add(false);
|
}
|
||||||
searchBarStream.add(false);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_controller.scrollController.removeListener(() {});
|
_controller.scrollController.removeListener(listener);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,17 +35,19 @@ class _SearchResultPageState extends State<SearchResultPage>
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (Get.arguments is int) {
|
if (Get.arguments is int) {
|
||||||
_tabController.addListener(() {
|
_tabController.addListener(listener);
|
||||||
if (Get.isRegistered<SSearchController>()) {
|
}
|
||||||
Get.find<SSearchController>().initIndex = _tabController.index;
|
}
|
||||||
}
|
|
||||||
});
|
void listener() {
|
||||||
|
if (Get.isRegistered<SSearchController>()) {
|
||||||
|
Get.find<SSearchController>().initIndex = _tabController.index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_tabController.removeListener(() {});
|
_tabController.removeListener(listener);
|
||||||
_tabController.dispose();
|
_tabController.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/scheduler.dart';
|
import 'package:flutter/scheduler.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
@@ -21,9 +22,12 @@ class _SetDisplayModeState extends State<SetDisplayMode> {
|
|||||||
|
|
||||||
final ValueNotifier<int> page = ValueNotifier<int>(0);
|
final ValueNotifier<int> page = ValueNotifier<int>(0);
|
||||||
late final PageController controller = PageController()
|
late final PageController controller = PageController()
|
||||||
..addListener(() {
|
..addListener(listener);
|
||||||
page.value = controller.page!.round();
|
|
||||||
});
|
void listener() {
|
||||||
|
page.value = controller.page!.round();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
@@ -35,7 +39,7 @@ class _SetDisplayModeState extends State<SetDisplayMode> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
controller.removeListener(() {});
|
controller.removeListener(listener);
|
||||||
controller.dispose();
|
controller.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,28 +35,28 @@ class _SubDetailPageState extends State<SubDetailPage> {
|
|||||||
id = Get.parameters['id']!;
|
id = Get.parameters['id']!;
|
||||||
_futureBuilderFuture = _subDetailController.queryUserSubFolderDetail();
|
_futureBuilderFuture = _subDetailController.queryUserSubFolderDetail();
|
||||||
titleStreamC = StreamController<bool>();
|
titleStreamC = StreamController<bool>();
|
||||||
_controller.addListener(
|
_controller.addListener(listener);
|
||||||
() {
|
}
|
||||||
if (_controller.offset > 160) {
|
|
||||||
titleStreamC.add(true);
|
|
||||||
} else if (_controller.offset <= 160) {
|
|
||||||
titleStreamC.add(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_controller.position.pixels >=
|
void listener() {
|
||||||
_controller.position.maxScrollExtent - 200) {
|
if (_controller.offset > 160) {
|
||||||
EasyThrottle.throttle('subDetail', const Duration(seconds: 1), () {
|
titleStreamC.add(true);
|
||||||
_subDetailController.onLoad();
|
} else if (_controller.offset <= 160) {
|
||||||
});
|
titleStreamC.add(false);
|
||||||
}
|
}
|
||||||
},
|
|
||||||
);
|
if (_controller.position.pixels >=
|
||||||
|
_controller.position.maxScrollExtent - 200) {
|
||||||
|
EasyThrottle.throttle('subDetail', const Duration(seconds: 1), () {
|
||||||
|
_subDetailController.onLoad();
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
titleStreamC.close();
|
titleStreamC.close();
|
||||||
_controller.removeListener(() {});
|
_controller.removeListener(listener);
|
||||||
_controller.dispose();
|
_controller.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,20 +82,22 @@ class ActionItemState extends State<ActionItem> with TickerProviderStateMixin {
|
|||||||
);
|
);
|
||||||
|
|
||||||
_animation = Tween<double>(begin: 0, end: -2 * pi).animate(controller!)
|
_animation = Tween<double>(begin: 0, end: -2 * pi).animate(controller!)
|
||||||
..addListener(() {
|
..addListener(listener);
|
||||||
setState(() {
|
|
||||||
_hideCircle = _animation?.value == -2 * pi;
|
|
||||||
if (_hideCircle) {
|
|
||||||
controller?.reset();
|
|
||||||
if (_isThumbUp) {
|
|
||||||
widget.onLongPress?.call();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void listener() {
|
||||||
|
setState(() {
|
||||||
|
_hideCircle = _animation?.value == -2 * pi;
|
||||||
|
if (_hideCircle) {
|
||||||
|
controller?.reset();
|
||||||
|
if (_isThumbUp) {
|
||||||
|
widget.onLongPress?.call();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
void cancelTimer() {
|
void cancelTimer() {
|
||||||
_timer?.cancel();
|
_timer?.cancel();
|
||||||
_timer = null;
|
_timer = null;
|
||||||
@@ -104,7 +106,7 @@ class ActionItemState extends State<ActionItem> with TickerProviderStateMixin {
|
|||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
cancelTimer();
|
cancelTimer();
|
||||||
_animation?.removeListener(() {});
|
_animation?.removeListener(listener);
|
||||||
controller?.dispose();
|
controller?.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,27 +75,27 @@ class _VideoReplyPanelState extends State<VideoReplyPanel>
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_videoReplyController.scrollController.removeListener(() {});
|
_videoReplyController.scrollController.removeListener(listener);
|
||||||
fabAnimationCtr.dispose();
|
fabAnimationCtr.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
void scrollListener() {
|
void scrollListener() {
|
||||||
_videoReplyController.scrollController.addListener(
|
_videoReplyController.scrollController.addListener(listener);
|
||||||
() {
|
}
|
||||||
final ScrollDirection direction =
|
|
||||||
_videoReplyController.scrollController.position.userScrollDirection;
|
void listener() {
|
||||||
if (direction == ScrollDirection.forward) {
|
final ScrollDirection direction =
|
||||||
if (mounted) {
|
_videoReplyController.scrollController.position.userScrollDirection;
|
||||||
_showFab();
|
if (direction == ScrollDirection.forward) {
|
||||||
}
|
if (mounted) {
|
||||||
} else if (direction == ScrollDirection.reverse) {
|
_showFab();
|
||||||
if (mounted) {
|
}
|
||||||
_hideFab();
|
} else if (direction == ScrollDirection.reverse) {
|
||||||
}
|
if (mounted) {
|
||||||
}
|
_hideFab();
|
||||||
},
|
}
|
||||||
);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _showFab() {
|
void _showFab() {
|
||||||
|
|||||||
@@ -60,19 +60,21 @@ class _VideoReplyNewDialogState extends State<VideoReplyNewDialog>
|
|||||||
|
|
||||||
_autoFocus() async {
|
_autoFocus() async {
|
||||||
await Future.delayed(const Duration(milliseconds: 300));
|
await Future.delayed(const Duration(milliseconds: 300));
|
||||||
if (context.mounted) {
|
if (mounted) {
|
||||||
FocusScope.of(context).requestFocus(replyContentFocusNode);
|
FocusScope.of(context).requestFocus(replyContentFocusNode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_focusListener() {
|
_focusListener() {
|
||||||
replyContentFocusNode.addListener(() {
|
replyContentFocusNode.addListener(listener);
|
||||||
if (replyContentFocusNode.hasFocus) {
|
}
|
||||||
setState(() {
|
|
||||||
toolbarType = 'input';
|
void listener() {
|
||||||
});
|
if (replyContentFocusNode.hasFocus) {
|
||||||
}
|
setState(() {
|
||||||
});
|
toolbarType = 'input';
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future submitReplyAdd() async {
|
Future submitReplyAdd() async {
|
||||||
@@ -140,7 +142,7 @@ class _VideoReplyNewDialogState extends State<VideoReplyNewDialog>
|
|||||||
_publishStream.close();
|
_publishStream.close();
|
||||||
WidgetsBinding.instance.removeObserver(this);
|
WidgetsBinding.instance.removeObserver(this);
|
||||||
_replyContentController.dispose();
|
_replyContentController.dispose();
|
||||||
replyContentFocusNode.removeListener(() {});
|
replyContentFocusNode.removeListener(listener);
|
||||||
replyContentFocusNode.dispose();
|
replyContentFocusNode.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1193,11 +1193,13 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
|||||||
CurveTween(curve: Curves.easeOut)
|
CurveTween(curve: Curves.easeOut)
|
||||||
.animate(animController),
|
.animate(animController),
|
||||||
);
|
);
|
||||||
animController.addListener(() {
|
void listener() {
|
||||||
transformationController.value = anim.value;
|
transformationController.value = anim.value;
|
||||||
});
|
}
|
||||||
|
|
||||||
|
animController.addListener(listener);
|
||||||
await animController.forward(from: 0);
|
await animController.forward(from: 0);
|
||||||
animController.removeListener(() {});
|
animController.removeListener(listener);
|
||||||
animController.dispose();
|
animController.dispose();
|
||||||
},
|
},
|
||||||
child: Text('还原屏幕'),
|
child: Text('还原屏幕'),
|
||||||
|
|||||||
Reference in New Issue
Block a user