Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 在ListView项目中使用嵌套列和行滚动jank_Dart_Flutter - Fatal编程技术网

Dart 在ListView项目中使用嵌套列和行滚动jank

Dart 在ListView项目中使用嵌套列和行滚动jank,dart,flutter,Dart,Flutter,这个代码有问题。列表中的每个项目都是一行,包含两列文本。即使在发布模式下,这也会导致性能大幅下降。目前正在尝试为帖子构建Reddit风格的布局。使用嵌套在一行中的列会大大降低性能。我猜这是因为行和列的大小是基于它们的子元素的,所以嵌套它们会增加所需的大小计算。我只是不知道如何解决这个问题 new ListView.builder( controller: new ScrollController(initialScrollOffset: this.offset), key: ne

这个代码有问题。列表中的每个项目都是一行,包含两列文本。即使在发布模式下,这也会导致性能大幅下降。目前正在尝试为帖子构建Reddit风格的布局。使用嵌套在一行中的列会大大降低性能。我猜这是因为行和列的大小是基于它们的子元素的,所以嵌套它们会增加所需的大小计算。我只是不知道如何解决这个问题

new ListView.builder(
    controller: new ScrollController(initialScrollOffset: this.offset),
    key: new UniqueKey(),
    itemCount: this._posts != null ? this._posts.length : 0,
    itemBuilder: (BuildContext context, int i) {
      return new PostCard(
        widget._posts[i],
      );
    },
  ),
返回的明信片如下所示(示例):

返回新容器(
孩子:新的一排(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
新专栏(
儿童:[
新文本(“你好世界”),
新文本(“你好世界”),
新文本(“你好世界”),
新文本(“你好世界”),
],
),
新专栏(
儿童:[
新文本(“你好世界”),
新文本(“你好世界”),
新文本(“你好世界”),
新文本(“你好世界”),
],
),
],
),
);
编辑:完整UI示例的屏幕截图。与上面的嵌套列示例相同的jank级别


更新。在其他手机上测试,这个问题并不存在。问题只出现在我的特定手机上(7.0上的S7 Edge)。

你能发布一个你试图实现的示例屏幕吗?@VinothKumar yep添加到postTry中,使用mainAxisSize:mainAxisSize.max将行和列宽度拉伸到全屏,对于行和横轴对齐:crossAxisAlignment.stretch,对于列是的,我可以很好地构建UI,只是在这些卡片列表中滚动不到30fps。我猜这只是一个产品的颤振在它的婴儿期,因为即使汉密尔顿应用程序和顶部答案从这篇文章有相同的janky滚动。快速编辑:我在S7边缘运行所有这些。
return new Container(
  child: new Row(
    crossAxisAlignment: CrossAxisAlignment.start,
    children: <Widget>[
      new Column(
        children: <Widget>[
          new Text("Hello World"),
          new Text("Hello World"),
          new Text("Hello World"),
          new Text("Hello World"),
        ],
      ),
      new Column(
        children: <Widget>[
          new Text("Hello World"),
          new Text("Hello World"),
          new Text("Hello World"),
          new Text("Hello World"),
        ],
      ),
    ],
  ),
);