Ada*_*alu 2 dart flutter flutter-layout flutter-animation
我有一个 SingleChildScrollView,它的scrollDirection 设置为 Horizontal,并在 Row Widget 内放置了 5 个子 widget。我想以编程方式滚动到行中的最后一个小部件,当到达最后一个小部件时(等待 2 秒)我想向后滚动。
SingleChildScrollView(
scrollDirection:Axis.horizontal,
child:Row(
children:<Widget>[
Widget(),
Widget(),
Widget(),
Widget(),
Widget(),
],
),
),
Run Code Online (Sandbox Code Playgroud)
)
Khu*_*hal 10
我有一个更好更有效的方法:
SingleChildScrollView(
scrollDirection: Axis.horizontal,
reverse: true,
child: Row(
children: [
***
],
),
);
Run Code Online (Sandbox Code Playgroud)
就如此容易 :)
一旦添加新的小部件,它就会滚动到末尾!
您可以通过以下方式使用滚动控制器来完成此操作。
ScrollController _controller;
@override
void initState() {
super.initState();
_controller = ScrollController();
WidgetsBinding.instance.addPostFrameCallback((_) {
_controller
.animateTo(_controller.position.maxScrollExtent,
duration: Duration(seconds: 1), curve: Curves.ease)
.then((value) async {
await Future.delayed(Duration(seconds: 2));
_controller.animateTo(_controller.position.minScrollExtent,
duration: Duration(seconds: 1), curve: Curves.ease);
});
});
}
callMeWidget() {
return Container(
height: 100,
width: 100,
color: Colors.red,
margin: EdgeInsets.all(10),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: SingleChildScrollView(
controller: _controller,
scrollDirection: Axis.horizontal,
child: Row(
children: <Widget>[
callMeWidget(),
callMeWidget(),
callMeWidget(),
callMeWidget(),
callMeWidget(),
],
),
),
),
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1750 次 |
| 最近记录: |