flutter NestedScrollView+TabBar+TabBarView 最近在用这三个组件在使用的过程中,发现这样的使用,一个tabview里一个滚动之后,其他的也跟着滚动到相同的位置了
SafeArea(
top: true,
child: NestedScrollView(
controller: _scrollController,
headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
return <Widget>[
//appbar
SliverPersistentHeader(
...
),
//tabbar
SliverPersistentHeader(
...
),
];
},
body: TabBarView(
controller: this._tabController,
children: [APage(), BPage(), CPage()],
),
),
);
有没有人遇到过这样的情况呢,后来怎么解决了呢?
参考GPT和自己的思路:
这个问题可能是由于滚动控制器(_scrollController)不正确的配置导致的。你可以尝试使用TabBarView的physics属性,为TabBarView指定一个physics,来解决这个问题。比如,可以尝试使用NeverScrollableScrollPhysics(表示禁止滚动),来确保只有当前的TabView能够滚动,而其他的不会跟随滚动。具体如下所示:
body: TabBarView(
controller: this._tabController,
physics: NeverScrollableScrollPhysics(),
children: [APage(), BPage(), CPage()],
),
希望这个解决方案能够帮助到你。