我有两个滚动视图。一个嵌套,它有一个SliverAppBar,然后一个SingleChildScrollView为我的其余内容(如下面的代码所示)。然后,我有一个控制器,它控制我的浮动动作按钮的不透明度,当我上下滚动时。
但是,只有当我在NestedScroll上有控制器时,控制器才能工作,然后它只能在滚动实际的标题时工作,而不是在滚动内容的其余部分时工作。
如果我将相同的控制器添加到SingleChildScrollView中,将使两个视图分别滚动。有人想办法解决吗?
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
resizeToAvoidBottomPadding: false,
body: NestedScrollView(
controller: _controller,
headerSliverBuilder: (BuildContext context, bool innerBoxScrolled){
return <Widget>[
SliverAppBar(
},
body:SingleChildScrollView(
),我缩短了代码,只显示这两个视图。
这是我改变FAB的不透明度的方法:
void _scrollListener() {
if(_controller.position.userScrollDirection == ScrollDirection.reverse){
setState(() {
_hideFAB = true;
});
}
if(_controller.position.userScrollDirection == ScrollDirection.forward){
setState((){
_hideFAB = false;
});
}}
下面是一个GIF,显示FAB在SliverAppBar:吉菲中滚动时唯一的变化
发布于 2019-03-19 15:43:51
我通过使用CustomScrollView而不是NestedScrollView来解决我的问题,然后用SliverList来改变我的SingleChildScrollView。
发布于 2019-03-19 05:13:48
使用 ListView 而不是SingleChildScrollView,将其余内容放入ListView
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
resizeToAvoidBottomPadding: false,
body: NestedScrollView(
controller: _controller,
headerSliverBuilder: (BuildContext context, bool innerBoxScrolled){
return <Widget>[
SliverAppBar(
},
body:ListView(
),https://stackoverflow.com/questions/55224455
复制相似问题