以编程方式防止Flutter中ListView的滚动

3

我在一个ListView中嵌套了另一个ListView。 因此,我想通过编程方式禁用子ListView的滚动。 如何操作? 谢谢。

3个回答

5
你可以通过使用物理学的方法来防止它:例如使用 NeverScrollableScrollPhysics()
Expanded(
                child: ListView.builder(
                    physics: NeverScrollableScrollPhysics(), <-----
                    scrollDirection: Axis.horizontal,
                    itemCount: status == false ? list.length : 5,
                    itemBuilder: (ctx, i) => ChangeNotifierProvider.value(
                        value: list[i], child: ListItem()),
                  ),

2
如果您想以编程方式设置它,请使用setState()来更新物理类型,如下所示:
ScrollPhysics physics = AlwaysScrollableScrollPhysics();


return Stack(
  children: [
    ListView(
      physics: physics,
    ),
    RaisedButton(
      child: Text("Disable scrolling"),
      onPressed: () {
        setState((){
          if(physics is AlwaysScrollableScrollPhysics){
            physics = NeverScrollableScrollPhysics();
          } else {
            physics = AlwaysScrollableScrollPhysics();
          }
        });
      },
    ),
  ]
);

0

你需要在嵌套的列表视图中设置这个"physics"属性值为"NeverScrollableScrollPhysics"。

示例:

ListView.builder(
physics: NeverScrollableScrollPhysics(),
 itemBuilder: () {}
  ),

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接