我正在使用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()),
),
),
)
答案 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])
]
);
},
)