flutter - 如何在其初始值颤动中将滚动条设置为最大值
问题描述
我正在构建一个聊天应用程序。我希望每当聊天类打开时,它最初都会滚动到最大。我尝试了下面的代码,但它是错误的
void initState() {
super.initState();
scrollController = ScrollController();
scrollController.animateTo(scrollController.position.maxScrollExtent,
duration: Duration(milliseconds: 10), curve: Curves.easeOut);
}
解决方案
仅在构建过程完成时才使用addPostFrameCallback
fromSchedulerBinding
强制ScrollController
移动,以确保它具有要移动的初始位置:
进口
Scheduler
:import 'package:flutter/scheduler.dart';
修改你的
initState()
:void initState() { super.initState(); scrollController = ScrollController(); SchedulerBinding.instance.addPostFrameCallback((_) => scrollController.animateTo(scrollController.position.maxScrollExtent, duration: Duration(milliseconds: 10), curve: Curves.easeOut)); }
推荐阅读
- bots - ms 团队自定义应用程序与机器人开始聊天会话
- javascript - 如何将内容脚本变量发送到后台脚本?(Chrome 扩展程序)
- django - 尝试从 Django 博客中的标题帖子中删除 url
- php - 当我在我的 url 未定义函数 laravel 8 中调用 api/product?id=.. 时出现我的产品错误
- assembly - 如果这两个字节的总和超过一个字节,如何在 Assembly 中添加两个字节?
- r - 在 R 函数中实现矩阵绘图
- python-3.x - 在 rhel 服务器上安装 python3 附加到 python 2.7
- java - 在 Kotlin 中:从两个映射中求和一个公共键的两个值的优雅方法是什么?
- python-3.x - 我需要用特殊参数制作类
- javascript - a .__ proto __ 和 b() 的比率