嵌套的listview无法正确滚动,当我滚动时,它自身会回滚到顶部位置,不会保留实际位置
server {
listen 80;
location / {
proxy_pass http://54.193.163.52/8100;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
我试图确定问题出在哪里,但到目前为止仍无法解决,进行了各种尝试,但是当我们滚动嵌套的列表视图时却无法理解,为什么它被铰接到顶部位置而不能保留或显示新的滚动的上下文。
请为该问题提供解决方案。
答案 0 :(得分:0)
如果您使用嵌套的ListView
,则必须为每个ListView
指定滚动物理(处理ListView
的滚动行为)。
默认情况下,ListView
在Android上具有ClampingScrollPhysics
,在ios平台上具有BouncingScrollPhysics
。这意味着在android平台上,滚动夹在ListView
的边界上,而在ios上,ListView
则在上下反弹。
因此,如果我们使用嵌套的ListView
,则父列表会限制它的限制。它可能不知道它是什么样的小部件。为避免此问题,我们需要创建一个始终滚动的ListView
,为此我们必须使用AlwaysScrollableScrollPhysics
。
这是示例代码的固定版本。
ListView(
physics: AlwaysScrollableScrollPhysics(),
scrollDirection: Axis.vertical,
children: <Widget>[
new Container(
padding: EdgeInsets.fromLTRB(10, 20, 10, 0),
width: MediaQuery.of(context).size.width,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
// mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text('Text1'),
Text('Text1'),
],
),
],
),
// ListView()
SizedBox(
height: 25,
),
SizedBox(
width: 300,
child: new ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: 100,
physics: ClampingScrollPhysics(),
itemBuilder: (context, int index) => RaisedButton(
color: Colors.greenAccent,
onPressed: () {},
child: Text("APPROVE $index"),
),
),
),
],
),
),
],
),
这是工作中的demo