dart 如何在长段落中搜索文本并自动滚动找到抖动的文本?

r3i60tvu  于 2023-05-26  发布在  其他
关注(0)|答案(1)|浏览(100)

朋友们,我有一个很长的段落显示在文本()小部件在身体的一部分,移动的屏幕。我在Flutter的应用程序栏中添加了一个搜索文本框。
我的问题是,我们如何在那么长的段落中搜索文本,如果找到了,然后自动滚动并显示长段落中的文本?
如果有人有任何经验或任何建议。请与我分享。多谢了。

mjqavswn

mjqavswn1#

第一声明变量
final ItemScrollController _scrollController = ItmScrollController();
ItemScrollController是Flutter中的一个类,它提供了对可滚动小部件中滚动行为的控制。它可用于以编程方式滚动到可滚动列表或网格中的特定项。通过将ItemScrollController的示例分配给可滚动小部件,可以访问方法和属性来操作和检索有关滚动状态的信息。

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在小部件中进行任何更改如果您愿意,可以在按下按钮或通过聆听键盘按下回车键时进行更改

相关问题