mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-07-26 13:30:12 +08:00
opt iOS ScrollPhysics
Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
@@ -9,6 +9,8 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/common/widgets/image_viewer/hero.dart';
|
||||
import 'package:PiliPlus/common/widgets/progress_bar/audio_video_progress_bar.dart';
|
||||
import 'package:PiliPlus/common/widgets/progress_bar/segment_progress_bar.dart';
|
||||
import 'package:PiliPlus/common/widgets/scroll_physics.dart'
|
||||
show platformClampingPhysics;
|
||||
import 'package:PiliPlus/common/widgets/selection_text.dart';
|
||||
import 'package:PiliPlus/grpc/bilibili/app/listener/v1.pb.dart';
|
||||
import 'package:PiliPlus/models/common/image_preview_type.dart';
|
||||
@@ -918,7 +920,7 @@ class _AudioPageState extends State<AudioPage> {
|
||||
child: ListView(
|
||||
key: const PageStorageKey(_AudioPageState),
|
||||
shrinkWrap: true,
|
||||
physics: const ClampingScrollPhysics(),
|
||||
physics: platformClampingPhysics,
|
||||
children: [
|
||||
Center(
|
||||
child: GestureDetector(
|
||||
|
||||
@@ -8,6 +8,8 @@ import 'package:PiliPlus/common/widgets/flutter/draggable_scrollable_sheet.dart'
|
||||
import 'package:PiliPlus/common/widgets/flutter/text_field/controller.dart';
|
||||
import 'package:PiliPlus/common/widgets/flutter/text_field/text_field.dart';
|
||||
import 'package:PiliPlus/common/widgets/pair.dart';
|
||||
import 'package:PiliPlus/common/widgets/scroll_physics.dart'
|
||||
show platformClampingPhysics;
|
||||
import 'package:PiliPlus/common/widgets/time_picker.dart';
|
||||
import 'package:PiliPlus/http/dynamics.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
@@ -138,7 +140,7 @@ class _CreateDynPanelState extends CommonRichTextPubPageState<CreateDynPanel> {
|
||||
child: ListView(
|
||||
padding: EdgeInsets.zero,
|
||||
controller: widget.scrollController,
|
||||
physics: const ClampingScrollPhysics(),
|
||||
physics: platformClampingPhysics,
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||
@@ -630,7 +632,7 @@ class _CreateDynPanelState extends CommonRichTextPubPageState<CreateDynPanel> {
|
||||
return SizedBox(
|
||||
height: height,
|
||||
child: GridView(
|
||||
physics: const ClampingScrollPhysics(),
|
||||
physics: platformClampingPhysics,
|
||||
padding: const EdgeInsets.only(left: 12, bottom: 12, right: 12),
|
||||
gridDelegate: SliverGridDelegateWithExtentAndRatio(
|
||||
maxCrossAxisExtent: 65,
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import 'package:PiliPlus/common/widgets/flutter/draggable_scrollable_sheet.dart';
|
||||
import 'package:PiliPlus/common/widgets/flutter/text_field/text_field.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/common/widgets/scroll_physics.dart'
|
||||
show platformClampingPhysics;
|
||||
import 'package:PiliPlus/http/dynamics.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/models/common/publish_panel_type.dart';
|
||||
@@ -102,7 +104,7 @@ class _RepostPanelState extends CommonRichTextPubPageState<RepostPanel> {
|
||||
child: ListView(
|
||||
padding: EdgeInsets.zero,
|
||||
controller: scrollController,
|
||||
physics: const ClampingScrollPhysics(),
|
||||
physics: platformClampingPhysics,
|
||||
children: _buildEditPanel(theme),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -2,7 +2,8 @@ import 'package:PiliPlus/common/widgets/button/icon_button.dart';
|
||||
import 'package:PiliPlus/common/widgets/custom_tooltip.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart';
|
||||
import 'package:PiliPlus/common/widgets/scroll_physics.dart';
|
||||
import 'package:PiliPlus/common/widgets/scroll_physics.dart'
|
||||
show tabBarView, platformClampingPhysics;
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/models/common/image_type.dart';
|
||||
import 'package:PiliPlus/models_new/emote/emote.dart';
|
||||
@@ -68,7 +69,7 @@ class _EmotePanelState extends State<EmotePanel>
|
||||
final size = flag ? 40.0 : 60.0;
|
||||
final isTextEmote = e.type == 4;
|
||||
return GridView.builder(
|
||||
physics: const ClampingScrollPhysics(),
|
||||
physics: platformClampingPhysics,
|
||||
padding: const EdgeInsets.only(
|
||||
left: 12,
|
||||
right: 12,
|
||||
|
||||
@@ -3,7 +3,8 @@ import 'dart:math';
|
||||
import 'package:PiliPlus/common/widgets/custom_tooltip.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart';
|
||||
import 'package:PiliPlus/common/widgets/scroll_physics.dart';
|
||||
import 'package:PiliPlus/common/widgets/scroll_physics.dart'
|
||||
show tabBarView, platformClampingPhysics;
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/models/common/image_type.dart';
|
||||
import 'package:PiliPlus/models_new/live/live_emote/datum.dart';
|
||||
@@ -81,7 +82,7 @@ class _LiveEmotePanelState extends State<LiveEmotePanel>
|
||||
final width = widthFac * 38;
|
||||
final height = heightFac * 38;
|
||||
return GridView.builder(
|
||||
physics: const ClampingScrollPhysics(),
|
||||
physics: platformClampingPhysics,
|
||||
padding: const EdgeInsets.only(
|
||||
left: 12,
|
||||
right: 12,
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import 'package:PiliPlus/common/widgets/scroll_physics.dart'
|
||||
show platformClampingPhysics;
|
||||
import 'package:PiliPlus/models/common/super_chat_type.dart';
|
||||
import 'package:PiliPlus/pages/live_room/controller.dart';
|
||||
import 'package:PiliPlus/pages/live_room/superchat/superchat_card.dart';
|
||||
@@ -32,7 +34,7 @@ class _SuperChatPanelState extends DebounceStreamState<SuperChatPanel, bool>
|
||||
() => ListView.separated(
|
||||
key: const PageStorageKey(_SuperChatPanelState),
|
||||
padding: const EdgeInsets.symmetric(horizontal: 12),
|
||||
physics: const ClampingScrollPhysics(),
|
||||
physics: platformClampingPhysics,
|
||||
itemCount: widget.controller.superChatMsg.length,
|
||||
findItemIndexCallback: (key) {
|
||||
final index = widget.controller.superChatMsg.indexWhere(
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import 'package:PiliPlus/common/widgets/flutter/popup_menu.dart';
|
||||
import 'package:PiliPlus/common/widgets/gesture/tap_gesture_recognizer.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/common/widgets/scroll_physics.dart'
|
||||
show platformClampingPhysics;
|
||||
import 'package:PiliPlus/http/live.dart';
|
||||
import 'package:PiliPlus/models_new/live/live_danmaku/danmaku_msg.dart';
|
||||
import 'package:PiliPlus/models_new/live/live_superchat/item.dart';
|
||||
@@ -54,7 +56,7 @@ class LiveRoomChatPanel extends StatelessWidget {
|
||||
separatorBuilder: (_, _) => const SizedBox(height: 8),
|
||||
itemCount: liveRoomController.builtLength =
|
||||
liveRoomController.messages.length,
|
||||
physics: const ClampingScrollPhysics(),
|
||||
physics: platformClampingPhysics,
|
||||
itemBuilder: (_, index) {
|
||||
final item = liveRoomController.messages[index];
|
||||
if (item is DanmakuMsg) {
|
||||
|
||||
@@ -7,6 +7,8 @@ import 'package:PiliPlus/common/widgets/custom_icon.dart';
|
||||
import 'package:PiliPlus/common/widgets/flutter/text_field/controller.dart'
|
||||
show RichTextType;
|
||||
import 'package:PiliPlus/common/widgets/flutter/text_field/text_field.dart';
|
||||
import 'package:PiliPlus/common/widgets/scroll_physics.dart'
|
||||
show platformClampingPhysics;
|
||||
import 'package:PiliPlus/common/widgets/view_safe_area.dart';
|
||||
import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart'
|
||||
show ReplyInfo;
|
||||
@@ -284,7 +286,7 @@ class _ReplyPageState extends CommonRichTextPubPageState<ReplyPage> {
|
||||
return SizedBox(
|
||||
height: height,
|
||||
child: GridView(
|
||||
physics: const ClampingScrollPhysics(),
|
||||
physics: platformClampingPhysics,
|
||||
padding: const EdgeInsets.only(left: 12, bottom: 12, right: 12),
|
||||
gridDelegate: gridDelegate,
|
||||
children: [
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:PiliPlus/common/widgets/button/icon_button.dart';
|
||||
import 'package:PiliPlus/common/widgets/scroll_physics.dart'
|
||||
show platformClampingPhysics;
|
||||
import 'package:PiliPlus/common/widgets/view_safe_area.dart';
|
||||
import 'package:PiliPlus/http/danmaku.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
@@ -174,7 +176,7 @@ class _SendDanmakuPanelState extends CommonTextPubPageState<SendDanmakuPanel> {
|
||||
),
|
||||
),
|
||||
child: ListView(
|
||||
physics: const ClampingScrollPhysics(),
|
||||
physics: platformClampingPhysics,
|
||||
padding: .only(
|
||||
top: 12,
|
||||
bottom: 12 + MediaQuery.viewPaddingOf(context).bottom,
|
||||
|
||||
@@ -8,7 +8,8 @@ import 'package:PiliPlus/common/widgets/flutter/pop_scope.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/common/widgets/keep_alive_wrapper.dart';
|
||||
import 'package:PiliPlus/common/widgets/route_aware_mixin.dart';
|
||||
import 'package:PiliPlus/common/widgets/scroll_physics.dart' show tabBarView;
|
||||
import 'package:PiliPlus/common/widgets/scroll_physics.dart'
|
||||
show tabBarView, platformAlwaysClampingPhysics, platformClampingPhysics;
|
||||
import 'package:PiliPlus/common/widgets/sliver/video_header.dart';
|
||||
import 'package:PiliPlus/common/widgets/svg/play_icon.dart';
|
||||
import 'package:PiliPlus/models/common/episode_panel_type.dart';
|
||||
@@ -515,9 +516,10 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
||||
),
|
||||
),
|
||||
body: ExtendedNestedScrollView(
|
||||
onlyOneScrollInBody: true,
|
||||
physics: platformClampingPhysics,
|
||||
key: videoDetailController.scrollKey,
|
||||
controller: videoDetailController.scrollCtr,
|
||||
onlyOneScrollInBody: true,
|
||||
pinnedHeaderSliverHeightBuilder: () {
|
||||
double pinnedHeight = this.isFullScreen || !isPortrait
|
||||
? maxHeight - (isWindowMode && !isPortrait ? 0 : padding.top)
|
||||
@@ -1616,9 +1618,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
||||
controller: needCtr
|
||||
? videoDetailController.effectiveIntroScrollCtr
|
||||
: null,
|
||||
physics: !needCtr
|
||||
? const AlwaysScrollableScrollPhysics(parent: ClampingScrollPhysics())
|
||||
: null,
|
||||
physics: !needCtr ? platformAlwaysClampingPhysics : null,
|
||||
key: const PageStorageKey(CommonIntroController),
|
||||
slivers: [
|
||||
SliverPadding(
|
||||
@@ -1649,11 +1649,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
||||
controller: needCtr
|
||||
? videoDetailController.effectiveIntroScrollCtr
|
||||
: null,
|
||||
physics: !needCtr
|
||||
? const AlwaysScrollableScrollPhysics(
|
||||
parent: ClampingScrollPhysics(),
|
||||
)
|
||||
: null,
|
||||
physics: !needCtr ? platformAlwaysClampingPhysics : null,
|
||||
slivers: [
|
||||
if (videoDetailController.isUgc) ...[
|
||||
UgcIntroPanel(
|
||||
|
||||
@@ -7,6 +7,8 @@ import 'package:PiliPlus/common/widgets/flutter/chat_list_view.dart';
|
||||
import 'package:PiliPlus/common/widgets/flutter/text_field/text_field.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart';
|
||||
import 'package:PiliPlus/common/widgets/scroll_physics.dart'
|
||||
show platformAlwaysClampingPhysics;
|
||||
import 'package:PiliPlus/grpc/bilibili/im/type.pb.dart' show Msg;
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/http/msg.dart';
|
||||
@@ -158,9 +160,7 @@ class _WhisperDetailPageState
|
||||
? ChatListView.separated(
|
||||
itemCount: response.length,
|
||||
padding: const .all(kChatListPadding),
|
||||
physics: const AlwaysScrollableScrollPhysics(
|
||||
parent: ClampingScrollPhysics(),
|
||||
),
|
||||
physics: platformAlwaysClampingPhysics,
|
||||
controller: _whisperDetailController.scrollController,
|
||||
itemBuilder: (context, int index) {
|
||||
if (index == response.length - 1) {
|
||||
|
||||
Reference in New Issue
Block a user