确定滚动部件的高度

2023-12-12

我想确定“可滚动”小部件是否确实需要滚动。我最终想展示诸如“滚动查看更多”之类的内容。我该如何实现这一目标?

我可以结合使用 LayoutBuilder 和 ScrollController。但是,ScrollController 仅在发生任何事件后才给我 maxScrollExtent 和 minScrollExtent - 例如用户尝试滚动

我想在“构建”期间知道,以便我可以根据屏幕尺寸确定是否显示“滚动查看更多”

class _MyHomePageState extends State<MyHomePage> {
  int value = 0;
  String text = 'You have pushed the button 0 times\n';
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Expanded(
              flex: 9,
              child: SingleChildScrollView(
                child: Text(text),
              ),
            ),
            Expanded(
              flex: 1,
                child: Text('Scroll for more')),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          setState(() {
            value += 1;
            text = text + 'You have pushed the button $value times \n';
          });
        },
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ), 
    );
  }
}

我想动态显示

            Text('Scroll for more'),

only如果 SingleChildScrollView 需要滚动才能查看全部内容。请注意,我只是给出上面的代码作为示例。

在我的实际情况中,我在 SingleChildScrollView 中有一个 StreamBuilder,我无法确定有多少数据将从流中流入。我也没有任何按钮或点击或任何手势来访问控制器和 setState

预先感谢您的任何帮助


class _MyHomePageState extends State<MyHomePage> {
  bool showMore = false;
  final scrollController = ScrollController();

  @override
  Widget build(BuildContext context) {
    SchedulerBinding.instance.addPostFrameCallback((_) {
      setState(() {
        showMore = scrollController.position.maxScrollExtent > 0;
      });
    });
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Expanded(
              flex: 9,
              child: SingleChildScrollView(
                controller: scrollController,
                child: SizedBox(height: 650, child: Text('blah')),
              ),
            ),
            if (showMore) Expanded(flex: 1, child: Text('Scroll for more')),
          ],
        ),
      ),
    );
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

确定滚动部件的高度 的相关文章

  • TabController 中的通知监听器用于无限滚动

    我有 4 个选项卡 我想在其中添加延迟加载或无限滚动选项 早些时候我尝试使用滚动控制器 但当它到达末尾时 事件触发多次 因此 有多个 Future http 请求到 API 我读了一些关于SO的问题 发现我可能需要使用Notificatio
  • Riverpod - ref.refresh。应该使用“刷新”的值

    我正在将 Riverpod 与 flutter 一起使用 在我的主屏幕上 我有一个 FutureProvider 它调用 API 服务器 并在页面上显示结果 在应用程序的不同点 不同屏幕上的用户进行更改 然后我从另一个屏幕刷新提供程序 像这
  • Flutter-Listview 的子级在滚动期间位于上面的小部件后面[重复]

    这个问题在这里已经有答案了 参考这个视频 https drive google com file d 1HXbY6SNXirLQNTBtZT4vowdCzBSKarm view usp sharing 这是我的代码 它简单地使用了 list
  • Jquery获取自动高度元素的高度

    有没有办法返回已设置为 auto 的元素的高度 当我调用 element height 时 我只是得到 0 这是 jquery 代码 这img height 返回 0 因此最终结果为 off img css top img parent h
  • Flutter:从 Hive 盒创建对象流

    我正在尝试访问一些在整个应用程序中更改和访问的用户设置 为此 我使用 Hive 从框中检索用户设置 我想通过转动UserSettings对象检索自Hive box settings get userID 到一个流中 该流将被馈送到Strea
  • _CastError(类型“String”不是类型转换中“List”类型的子类型)

    我已经采取了各种方法来创建缓存的产品列表 然后用列表显示 但到目前为止仍然不起作用 任何人都可以帮助我 我的 Json fromCache id 2911 nama Abcd1 url myUrl id 2910 nama Abcd2 ur
  • Flutter:CachedNetworkImage不缓存图像

    我有一个从 Firebase 存储中检索图像的小部件 但现在我想缓存这些图像 以使用户体验更加简洁 并且还避免对 Firebase 的不必要的调用 所以我找到了 CachedNetworkImageProvider 它听起来像是我想要的一切
  • 在 Flutter 中将 base64 字符串转换为 PDF 文件

    我正在尝试显示 PDF 文件 但是我从服务器接收到 Base64 字符串格式的 PDF 文件 有什么方法可以直接将 Base64 字符串显示到 PDF 查看器或 WebView 中 而不将其保存到 File 中 检查一下 https sta
  • 颤振:音频服务。如何播放本地文件?

    我想播放本地文件的播放列表 在android上 没有问题 我可以在Mediaitem id 中添加本地文件并且它可以正常播放 但在 iOS 上它不起作用 我收到这个错误 VERBOSE 2 ui dart state cc 186 Unha
  • 我在浏览时无法预览 vscode 上的图标?

    如图所示 我正在浏览图标 但没有显示任何图标 新的更新是否有变化 或者我在这里遗漏了一些东西 gt 它曾经在我浏览时显示图标 当您将鼠标悬停在工具提示的右侧时 应该会出现一个箭头 指出 阅读更多 只需单击一次 因此图标预览应该始终出现
  • Flutter:防止抽屉关闭

    Flutter 中是否可以防止关闭抽屉 我在用endDrawer作为网络应用程序中的表单 我已禁用滑动打开功能 并且我还希望只允许通过按钮关闭它 这样用户就不会通过单击外部意外地关闭它 但是我看不到任何布尔值 例如防止解雇或任何实施方式Wi
  • 如何检查 Flutter 应用程序是否正在调试中运行?

    我正在寻找一种在应用程序处于调试模式时在 Flutter 中执行代码的方法 在 Flutter 中这可能吗 我似乎无法在文档中的任何地方找到它 像这样的东西 If app inDebugMode print Print only in de
  • Windows Phone 7 - ScrollViewer 值已更改

    我一直在寻找解决方案 但无法找到正确的解决方案 我的网格宽度为 960 并且有ScrollViewer在里面 现在我想知道滚动时滚动的值 水平偏移 我找到的所有解决方案都是针对 wpf silverlight 的 它对我不起作用 Edit
  • 如何让html中的文字出现在滚动条上

    您好 我希望当我滚动经过某个文本或滚动到该文本所在的位置时显示该文本 出现时的效果应该有点像网站顶部第一个效果http namanyayg com http namanyayg com 我希望用最少的代码使用纯 CSS 和 JS 来实现效果
  • 如何在 Flutter 中使颜色成为 UI 文本的一部分?

    如何更改部分文本的颜色 我正在努力做到这一点 所以文字上写着 Don t have an account Register now 但我想给它添加颜色Register now 部分 如果可能的话我该怎么做 Use RichText http
  • 如何在 Flutter 创建的应用程序中隐藏 AppBar [重复]

    这个问题在这里已经有答案了 我有下面的代码 我想隐藏栏应用程序 可以吗 我已经尝试直接使用 Android 主题 但没有成功 override Widget build BuildContext context return Webview
  • 自动调整高度 IFrame

    我想制作一个 iframe 页面 从其他页面加载页面 地点 我尝试过 jQuery iFrame Sizing 来设置自动高度 iframe 但失败了 有什么问题 这是我的代码 on Head
  • 检测到用户已滚动到 div 底部而没有滚动事件?

    我正在寻找 js 解决方案来检测用户何时滚动到 div 底部overflow auto SO 上有很多解决方案描述了如何实现它onscroll事件 但我想知道这是否可以用更新的技术来完成 例如IntersectionObserver这不需要
  • 当我的带有 Firestore 的 Flutter 应用程序从 Android 后台恢复时,查询速度非常慢

    使用颤振1 20 2 我的 Flutter 应用程序使用 Firestore 作为后端数据库 对于我正在使用的当前版本以及在该移动应用程序的整个开发过程中 我注意到 如果我的应用程序在后台运行一段时间 可能是几分钟 那么当我将应用程序带回前
  • Flutter 包 widgets.dart、material.dart 和 cupertino.dart 之间有什么区别以及使用哪一个?

    使用 flutter 时 我经常遇到标准库中不同包公开的类型 例如FlutterError但这同样适用于其他小部件 编写它并在 VS Code 中使用 IntelliSense 解析要导入的包时 FlutterError可用时 Intell

随机推荐