有没有可能让 ListView 只能在 ScrollController 上滚动,而不能在触摸屏上滚动?
正如评论中提到的,物理课将会这样做:
物理课 不允许用户滚动的滚动物理过程。
物理课
不允许用户滚动的滚动物理过程。
在 ListView 小部件中,使用
physics: const NeverScrollableScrollPhysics()
您可以在 ListView 小部件中仅添加 primary: false
primary: false
默认匹配平台约定。此外,如果主服务器为 false,那么如果没有足够的内容可以滚动,则用户无法滚动,而如果主服务器为 true,则用户总是可以尝试滚动。
想了解更多,请查看 官方文件
启用和禁用 scrollview 的 If判断语句。
physics: chckSwitch ? const NeverScrollableScrollPhysics() : const AlwaysScrollableScrollPhysics(),
对我有用
ListView.builder( scrollDirection: Axis.vertical, shrinkWrap: true, physics: const ClampingScrollPhysics(), ...
那 NestedScrollView 呢?
bottomNavigationBar: _buildBottomAppBar(), body: Container( child: NestedScrollView( physics: NeverScrollableScrollPhysics(), controller: _scrollViewController, headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) { return <Widget>[ buildSliverAppBar(innerBoxIsScrolled), ]; }, body: _buildBody(context), ), ), );