将SingleChildScrollView和Wrap Widget与很多孩子一起使用时,如何实现平滑滚动?

时间:2020-05-31 06:11:54

标签: flutter

我正在使用Wrap小部件包装一堆纸牌,有时纸牌数量很多,导致滚动不顺畅,有时如果纸牌上有图片,应用程序就会停止。包装允许跨不同设备大小的动态行为。有什么办法可以解决这个问题。我想知道我是否只能构建显示的卡,而不会占用其他卡的内存?如何确保平滑滚动?

       SingleChildScrollView(
            child: Center(
              child: Container(
                width: devWidth,
                margin: EdgeInsets.only(top: 15, bottom: 15),
                child: Wrap(
                    alignment: WrapAlignment.spaceEvenly,
                    runSpacing: devWidth * 0.03,
                    children: myList.map<Widget>((item) {
                      return itemCard(item);
                    }).toList()),
              ),
            ),
          )

1 个答案:

答案 0 :(得分:0)

您应该使用ListView.seperated()而不是Wrap

ListView.separated(
    itemCount: myList.length,
    separatorBuilder: (BuildContext Context, int index) {
       return SizedBox(height: devWidth * 0.03);
    },
    itemBuilder: (BuildContext context, int index) {
       return itemCard(myList[index]);
    },
)

对于每行使用多个项目,请使用以下代码:

ListView.separated(
    itemCount: myList.length / 3,
    separatorBuilder: (BuildContext Context, int index) {
       return SizedBox(height: devWidth * 0.03);
    },
    itemBuilder: (BuildContext context, int index) {
    int idx = index * 3;
           return Row(
              children : <Widget>[
                  itemCard(myList[idx]),
                  itemCard(myList[idx + 1]),
                  itemCard(myList[idx + 2])
              ]
           );
    },
)