flutter - Flutter:使ListView在底部反弹并在顶部位置夹住
问题描述
我想将两种类型ScrollPhysics
应用于我的ListView
. 当用户到达列表的底部时,我想BouncingScrollPhysics()
发生,但是当用户到达顶部时,它不应该反弹而是执行ClampingScrollPhysics()
。如何做到这一点?
解决方案
截屏:
// create 2 instance variables
var _controller = ScrollController();
ScrollPhysics _physics = ClampingScrollPhysics();
@override
void initState() {
super.initState();
_controller.addListener(() {
if (_controller.position.pixels <= 56)
setState(() => _physics = ClampingScrollPhysics());
else
setState(() => _physics = BouncingScrollPhysics());
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView.builder(
controller: _controller,
physics: _physics,
itemCount: 20,
itemBuilder: (_, i) => ListTile(title: Text("Item $i")),
),
);
}
推荐阅读
- c++ - 在 macOS 上使用 CMake 提升序列化链接器错误
- create-react-app - AWS Amplify React 应用程序缺少“后端”?
- postgresql - 为什么我的 postgresql 命令会立即被杀死?
- flutter - Google & Microsoft OAuth2 登录流程 Flutter Desktop (MacOS, Windows, Linux)
- python - 你如何获取一个 Sympy 函数的导数,该函数将矩阵作为输入相对于另一个矩阵?
- python - 如何根据用户输入定义变量常量?
- javascript - 循环遍历对象数组,比较 id 并合并对象
- docker - docker 镜像和它的 tar 表示之间的关系
- python - 在 Python 3 中通过 selenium 打开和关闭 Firefox 选项卡并切换焦点
- r - 如何在 R tidyverse 中仅将特定列从宽旋转到长?