mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
opt: dyndetail/html ctr listener
related #305 Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -63,8 +63,7 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
|
|||||||
|
|
||||||
get _getImageCallback => _horizontalPreview
|
get _getImageCallback => _horizontalPreview
|
||||||
? (imgList, index) {
|
? (imgList, index) {
|
||||||
bool needReverse =
|
bool needReverse = _isFabVisible;
|
||||||
_fabAnimationCtr?.status.isForwardOrCompleted == true;
|
|
||||||
if (needReverse) {
|
if (needReverse) {
|
||||||
_fabAnimationCtr?.reverse();
|
_fabAnimationCtr?.reverse();
|
||||||
}
|
}
|
||||||
@@ -195,8 +194,7 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
|
|||||||
} else {
|
} else {
|
||||||
ScaffoldState? scaffoldState = Scaffold.maybeOf(context);
|
ScaffoldState? scaffoldState = Scaffold.maybeOf(context);
|
||||||
if (scaffoldState != null) {
|
if (scaffoldState != null) {
|
||||||
bool needReverse =
|
bool needReverse = _isFabVisible;
|
||||||
_fabAnimationCtr?.status.isForwardOrCompleted == true;
|
|
||||||
if (needReverse) {
|
if (needReverse) {
|
||||||
_fabAnimationCtr?.reverse();
|
_fabAnimationCtr?.reverse();
|
||||||
}
|
}
|
||||||
@@ -229,22 +227,28 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
|
|||||||
|
|
||||||
void listener() {
|
void listener() {
|
||||||
// 标题
|
// 标题
|
||||||
if (_dynamicDetailController.scrollController.offset > 55 &&
|
if (_dynamicDetailController.scrollController.positions.length == 1) {
|
||||||
!_visibleTitle) {
|
if (_dynamicDetailController.scrollController.offset > 55 &&
|
||||||
_visibleTitle = true;
|
!_visibleTitle) {
|
||||||
_titleStreamC.add(true);
|
_visibleTitle = true;
|
||||||
} else if (_dynamicDetailController.scrollController.offset <= 55 &&
|
_titleStreamC.add(true);
|
||||||
_visibleTitle) {
|
} else if (_dynamicDetailController.scrollController.offset <= 55 &&
|
||||||
_visibleTitle = false;
|
_visibleTitle) {
|
||||||
_titleStreamC.add(false);
|
_visibleTitle = false;
|
||||||
|
_titleStreamC.add(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// fab按钮
|
// fab按钮
|
||||||
final ScrollDirection direction =
|
final ScrollDirection direction1 = _dynamicDetailController
|
||||||
_dynamicDetailController.scrollController.position.userScrollDirection;
|
.scrollController.positions.first.userScrollDirection;
|
||||||
if (direction == ScrollDirection.forward) {
|
late final ScrollDirection direction2 = _dynamicDetailController
|
||||||
|
.scrollController.positions.last.userScrollDirection;
|
||||||
|
if (direction1 == ScrollDirection.forward ||
|
||||||
|
direction2 == ScrollDirection.forward) {
|
||||||
_showFab();
|
_showFab();
|
||||||
} else if (direction == ScrollDirection.reverse) {
|
} else if (direction1 == ScrollDirection.reverse ||
|
||||||
|
direction2 == ScrollDirection.reverse) {
|
||||||
_hideFab();
|
_hideFab();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -384,6 +388,7 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
|
|||||||
Expanded(
|
Expanded(
|
||||||
flex: _ratio[0].toInt(),
|
flex: _ratio[0].toInt(),
|
||||||
child: CustomScrollView(
|
child: CustomScrollView(
|
||||||
|
controller: _dynamicDetailController.scrollController,
|
||||||
physics: const AlwaysScrollableScrollPhysics(),
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
slivers: [
|
slivers: [
|
||||||
SliverPadding(
|
SliverPadding(
|
||||||
|
|||||||
@@ -56,8 +56,7 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
|
|||||||
|
|
||||||
get _getImageCallback => _horizontalPreview
|
get _getImageCallback => _horizontalPreview
|
||||||
? (imgList, index) {
|
? (imgList, index) {
|
||||||
bool needReverse =
|
bool needReverse = _isFabVisible;
|
||||||
fabAnimationCtr.status.isForwardOrCompleted == true;
|
|
||||||
if (needReverse) {
|
if (needReverse) {
|
||||||
fabAnimationCtr.reverse();
|
fabAnimationCtr.reverse();
|
||||||
}
|
}
|
||||||
@@ -131,11 +130,15 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
// fab按钮
|
// fab按钮
|
||||||
final ScrollDirection direction =
|
final ScrollDirection direction1 =
|
||||||
_htmlRenderCtr.scrollController.position.userScrollDirection;
|
_htmlRenderCtr.scrollController.positions.first.userScrollDirection;
|
||||||
if (direction == ScrollDirection.forward) {
|
late final ScrollDirection direction2 =
|
||||||
|
_htmlRenderCtr.scrollController.positions.last.userScrollDirection;
|
||||||
|
if (direction1 == ScrollDirection.forward ||
|
||||||
|
direction2 == ScrollDirection.forward) {
|
||||||
_showFab();
|
_showFab();
|
||||||
} else if (direction == ScrollDirection.reverse) {
|
} else if (direction1 == ScrollDirection.reverse ||
|
||||||
|
direction2 == ScrollDirection.reverse) {
|
||||||
_hideFab();
|
_hideFab();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -184,8 +187,7 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
|
|||||||
} else {
|
} else {
|
||||||
ScaffoldState? scaffoldState = Scaffold.maybeOf(context);
|
ScaffoldState? scaffoldState = Scaffold.maybeOf(context);
|
||||||
if (scaffoldState != null) {
|
if (scaffoldState != null) {
|
||||||
bool needReverse =
|
bool needReverse = _isFabVisible;
|
||||||
fabAnimationCtr.status.isForwardOrCompleted == true;
|
|
||||||
if (needReverse) {
|
if (needReverse) {
|
||||||
fabAnimationCtr.reverse();
|
fabAnimationCtr.reverse();
|
||||||
}
|
}
|
||||||
@@ -337,9 +339,8 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
|
|||||||
Expanded(
|
Expanded(
|
||||||
flex: _ratio[0].toInt(),
|
flex: _ratio[0].toInt(),
|
||||||
child: CustomScrollView(
|
child: CustomScrollView(
|
||||||
controller: orientation == Orientation.portrait
|
controller: _htmlRenderCtr.scrollController,
|
||||||
? _htmlRenderCtr.scrollController
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
: null,
|
|
||||||
slivers: [
|
slivers: [
|
||||||
SliverPadding(
|
SliverPadding(
|
||||||
padding: orientation == Orientation.portrait
|
padding: orientation == Orientation.portrait
|
||||||
@@ -402,6 +403,7 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
|
|||||||
backgroundColor: Colors.transparent,
|
backgroundColor: Colors.transparent,
|
||||||
body: CustomScrollView(
|
body: CustomScrollView(
|
||||||
controller: _htmlRenderCtr.scrollController,
|
controller: _htmlRenderCtr.scrollController,
|
||||||
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
slivers: [
|
slivers: [
|
||||||
SliverPadding(
|
SliverPadding(
|
||||||
padding: EdgeInsets.only(right: padding / 4),
|
padding: EdgeInsets.only(right: padding / 4),
|
||||||
|
|||||||
Reference in New Issue
Block a user