以编程方式防止滚动列表视图颤动

Posted

技术标签:

【中文标题】以编程方式防止滚动列表视图颤动【英文标题】:programmatically prevent scroll listview flutter 【发布时间】:2020-06-11 04:49:57 【问题描述】:

我在 ListView 中嵌套了 ListView。 所以我想以编程方式禁用子 ListView 的滚动。 怎么做。 谢谢,

【问题讨论】:

【参考方案1】:

您可以通过使用物理学来防止它:例如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();
          
        );
      ,
    ),
  ]
);

【讨论】:

【参考方案3】:

您需要在嵌套列表视图中设置此“物理”属性值“NeverScrollableScrollPhysics”。

示例:

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

【讨论】:

以上是关于以编程方式防止滚动列表视图颤动的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动的列表视图中嵌套列表视图?

颤动 - 在列表视图构建器中滚动列表视图

以编程方式滚动到可扩展列表视图的底部,最后一项内容很大

在列表视图之外使用鼠标颤动 Web 滚动视图

在颤动中滚动列表视图时剪辑填充

颤动中滚动视图内的Listview