flutter - 控制 Flutter ListView 的滚动
问题描述
我想为 ListView 实现自动滚动功能,但我不知道如何正确控制它。
我有 2 个按钮。一种会使 ListView 开始滚动到底部,另一种会使 ListView 停止滚动。
我知道我可以使用 ScollController 和 animateTo 自动滚动到底部,但我不知道如何停止。这是实现自动滚动功能的正确方法吗?如果是,那么我该如何停止滚动?
解决方案
您可以通过覆盖animateTo
到当前位置来停止滚动,如下所示
_scrollController.animateTo(_scrollController.offset,
duration: Duration(milliseconds: 5000),
curve: Curves.fastOutSlowIn);
检查以下示例
import 'package:flutter/material.dart';
void main() {
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Example',
home: new MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
ScrollController _scrollController = new ScrollController();
@override
Widget build(BuildContext context) {
return new Scaffold(
body: ListView.builder(
controller: _scrollController,
itemCount: 50,
itemBuilder: (_, index) =>
ListTile(title: Text('ListTile ' + index.toString())),
),
bottomSheet: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
RaisedButton(
child: Text("Start Down"),
onPressed: () {
setState(() {
_scrollController.animateTo(
_scrollController.position.maxScrollExtent,
duration: Duration(milliseconds: 5000),
curve: Curves.fastOutSlowIn);
});
},
),
RaisedButton(
child: Text("Stop"),
onPressed: () {
setState(() {
_scrollController.animateTo(_scrollController.offset,
duration: Duration(milliseconds: 5000),
curve: Curves.fastOutSlowIn);
});
},
)
],
),
);
}
}
推荐阅读
- python - 不存在的行上的 Python 期望缩进
- c# - 在数据网格中编辑和保存数据
- python - Python:如何使用flask api部署对象检测模型
- huawei-mobile-services - HUAWEI Analytics Kit是否支持上报失败的数据自动重发?
- rust - 从 char 迭代器添加路径组件而不首先收集它的惯用方法是什么?
- java - 我已经使用 StringBuilder 类在 java 中编写了回文代码,但它不起作用?
- r - 如何根据另一列的数值为新列分配数值
- javascript - 为圆的每个角度制作渐变边框
- postgresql - Postgres 项目分析器
- java - 学习 try/catch 的问题