我想为ListView实现自动滚动功能,但我不知道如何正确控制它。
我有 2 个按钮。一种将使 ListView 开始滚动到底部,另一种将使 ListView 停止滚动。
我知道我可以使用 ScollController 和 animateTo 自动滚动到底部,但我不知道如何停止。这是实现自动滚动功能的正确方法吗?如果是的话我怎样才能停止滚动?
您可以通过覆盖当前位置来停止滚动,animateTo如下所示
_scrollController.animateTo(_scrollController.offset,
duration: Duration(milliseconds: 5000),
curve: Curves.fastOutSlowIn);
Run Code Online (Sandbox Code Playgroud)
检查下面的例子
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);
});
},
)
],
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2728 次 |
| 最近记录: |