无法滚动嵌套的列表视图

时间:2020-07-31 02:32:14

标签: flutter listview flutter-listview

嵌套的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;
    }
}

我试图确定问题出在哪里,但到目前为止仍无法解决,进行了各种尝试,但是当我们滚动嵌套的列表视图时却无法理解,为什么它被铰接到顶部位置而不能保留或显示新的滚动的上下文。

请为该问题提供解决方案。

1 个答案:

答案 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