【发布时间】:2020-08-04 18:54:13
【问题描述】:
我有下面的代码,可以在用户向下或向上滚动时更改工厂的不透明度。但为此,我多次调用setState() 方法。有什么方法可以检测用户滚动的最后一个方向,以便我当时只能Once调用setState()?或者,如果您可以为此定义一个新的增强功能,我将不胜感激。
@override
void initState() {
super.initState();
_controller = ScrollController()
..addListener(() {
upDirection = _controller.position.userScrollDirection == ScrollDirection.forward;
upDirection = _controller.position.userScrollDirection == ScrollDirection.reverse;
if (upDirection)
setState(() {
_scrolled = 0.5;
flag = false;
});
else if (!upDirection) {
setState(() {
_scrolled = 1.0;
});
flag = false;
}
});
}
这是列表
return Scaffold(
body:
SingleChildScrollView(
controller: _controller,
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(),
Container(),
Container(),
Container(),
Container(),
Container(),
],
),
),
),
floatingActionButton: AnimatedOpacity(
opacity: _scrolled,
duration: Duration(milliseconds: 100),
child: FloatingActionButton(
onPressed: (){},
child: Icon(Icons.settings),
),
),
floatingActionButtonLocation: FloatingActionButtonLocation.endFloat,
);
【问题讨论】:
标签: flutter flutter-layout flutter-animation