ListView在SingleChildScrollView中不能滚动 Flutter
ListView在SingleChildScrollView中不能滚动 Flutter
遇到一个问题,当添加了 SingleChildScrollView
后,ListView.builder
无法滚动。可能是什么问题,如何解决?我们需要使 ListView 可滚动。\nbody\nWidget _child(context, Size size) => Padding(\n padding: const EdgeInsets.symmetric(horizontal: 24),\n child: SingleChildScrollView(\n physics: const NeverScrollableScrollPhysics(),\n child: Column(\n children: [\n const SizedBox(height: 121),\n const BackStepWidget(text: \'My Poynts\'),\n const SizedBox(height: 25),\n PoyntsList(size: size),\n ],\n ),\n ),\n );\n
\nPoyntsList\nWidget build(BuildContext context) => MediaQuery.removePadding(\n context: context,\n removeTop: true,\n child: ListView.builder(\n shrinkWrap: true,\n itemCount: list.length + 1,\n itemBuilder: (context, index)...\n
问题:ListView在SingleChildScrollView中无法滚动。
原因:在同一页中存在两个可滚动的小部件。
解决方法1:移除SingleChildScrollView,直接将PoyntsList用Expanded包裹起来。
解决方法2:给内部的ListView添加neverScrollablePhysics属性,给外部的ListView添加任意的physics属性。
感谢帮助,解决了我的问题。告诉我一下,Expanded和Flexible有什么区别吗?
答:在您的情况下,页面中存在两个可滚动的小部件,因此您需要在内部的ListView中设置neverScrollablePhysics属性,并在外部的ListView中设置任意的physics属性,这样也可以解决问题。
在Flutter中,有时我们可能需要在一个页面中同时使用ListView和SingleChildScrollView来展示一系列的内容。然而,有些开发者在使用这两个组件时遇到了一个问题:ListView无法在SingleChildScrollView中滚动。下面我们来分析这个问题的出现原因以及解决方法。
出现原因:
问题出现的原因是在ListView中使用了NeverScrollableScrollPhysics(),这个属性会禁止ListView的滚动。具体来说,NeverScrollableScrollPhysics()是一个ScrollPhysics的子类,它会阻止滚动事件的传递,从而导致ListView无法滚动。
解决方法:
要解决这个问题,我们需要移除ListView中的NeverScrollableScrollPhysics()属性。这样,ListView就可以在SingleChildScrollView中正常滚动了。
代码示例:
SingleChildScrollView(
child: ListView.builder(
shrinkWrap: true,
physics: ClampingScrollPhysics(), // 添加这行代码
itemCount: list.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text(list[index]),
);
},
),
),
上述代码中,我们将ListView的physics属性设置为ClampingScrollPhysics(),这是一个常用的滚动物理效果,它允许ListView在SingleChildScrollView中滚动。
通过移除ListView中的NeverScrollableScrollPhysics()属性,并将physics属性设置为ClampingScrollPhysics(),我们可以解决ListView无法在SingleChildScrollView中滚动的问题。希望这篇文章对大家理解和解决这个问题有所帮助。