颤动:使ListView在底部弹回并在顶部位置夹紧

问题描述 投票:2回答:1

我想将两种类型的ScrollPhysics应用于我的ListView。当用户到达列表的底部时,我希望发生BouncingScrollPhysics(),但是当用户到达列表的顶部时,它不应该跳动而是执行ClampingScrollPhysics()。如何实现呢?

flutter flutter-layout
1个回答
2
投票

屏幕截图:

enter image description here


// 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")),
    ),
  );
}
© www.soinside.com 2019 - 2024. All rights reserved.