From c52245de3d5418d73347d5ff9776dc91af9ec98c Mon Sep 17 00:00:00 2001 From: wanghongenpin Date: Thu, 16 Oct 2025 22:57:52 +0800 Subject: [PATCH] json text search (#599)(#606) --- lib/ui/component/json/json_text.dart | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/ui/component/json/json_text.dart b/lib/ui/component/json/json_text.dart index 27edbf4..3aa1eb1 100644 --- a/lib/ui/component/json/json_text.dart +++ b/lib/ui/component/json/json_text.dart @@ -84,7 +84,7 @@ class _JsonTextState extends State { WidgetsBinding.instance.addPostFrameCallback((_) { searchController?.updateMatchCount(jsonParser.searchMatchTotal); // 自动滚动到当前高亮项 - scrollToMatch(jsonParser); + scrollToMatch(jsonParser, chunks); }); if (textList.length < 1000) { @@ -97,6 +97,7 @@ class _JsonTextState extends State { child: SelectionArea( child: ScrollablePositionedList.builder( physics: Platforms.isDesktop() ? null : const BouncingScrollPhysics(), + scrollController: Platforms.isDesktop() ? null : trackingScroll(), itemCount: chunks.length, minCacheExtent: 1500, itemScrollController: itemScrollController, @@ -233,8 +234,8 @@ class _JsonTextState extends State { trackingScroll.addListener(() { // iOS 回弹或向上轻微滑动时,驱动外部滚动条联动 if (trackingScroll.offset < -10 || (trackingScroll.offset < 30 && trackingScroll.offset < prevOffset)) { - if (scrollController != null && scrollController.offset >= 0) { - scrollController.jumpTo(scrollController.offset - max((prevOffset - trackingScroll.offset), 15)); + if (scrollController != null && scrollController.offset >= 50) { + scrollController.jumpTo(scrollController.offset - max((prevOffset - trackingScroll.offset), 10)); } } prevOffset = trackingScroll.offset;