朋友们,我有一个很长的段落显示在文本()小部件在身体的一部分,移动的屏幕。我在Flutter的应用程序栏中添加了一个搜索文本框。我的问题是,我们如何在那么长的段落中搜索文本,如果找到了,然后自动滚动并显示长段落中的文本?如果有人有任何经验或任何建议。请与我分享。多谢了。
mjqavswn1#
第一声明变量final ItemScrollController _scrollController = ItmScrollController();ItemScrollController是Flutter中的一个类,它提供了对可滚动小部件中滚动行为的控制。它可用于以编程方式滚动到可滚动列表或网格中的特定项。通过将ItemScrollController的示例分配给可滚动小部件,可以访问方法和属性来操作和检索有关滚动状态的信息。
final ItemScrollController _scrollController = ItmScrollController();
void _animateToIndex(String mySearch) { final vm = _ViewModel.fromStore(StoreProvider.of<AppState>(context), widget.search); final messages = vm.messages; for (int i = oldSrarch == mySearch ? firstIndex + 1 : 0; i < messages.length; i++) { if (messages[i].content.contains(mySearch)) { firstIndex = i; oldSrarch = mySearch; break; } } // if (firstIndex != -1) { _scrollController.scrollTo( index: firstIndex, duration: const Duration(milliseconds: 500), curve: Curves.easeInOutCubic, ); // } }
这是函数查找文本并滚动到那里
@override void didUpdateWidget(ChatList oldWidget) { super.didUpdateWidget(oldWidget); // if (widget.data != oldWidget.data) { _animateToIndex(widget.search); // } }
function _animateToIndex在小部件中进行任何更改如果您愿意,可以在按下按钮或通过聆听键盘按下回车键时进行更改
1条答案
按热度按时间mjqavswn1#
第一声明变量
final ItemScrollController _scrollController = ItmScrollController();
ItemScrollController是Flutter中的一个类,它提供了对可滚动小部件中滚动行为的控制。它可用于以编程方式滚动到可滚动列表或网格中的特定项。通过将ItemScrollController的示例分配给可滚动小部件,可以访问方法和属性来操作和检索有关滚动状态的信息。
这是函数查找文本并滚动到那里
function _animateToIndex在小部件中进行任何更改如果您愿意,可以在按下按钮或通过聆听键盘按下回车键时进行更改