[英]Flutter custom widget in ListView causing lag
main.dart 类
@override
Widget build(BuildContext context) {
return ListView.builder(
itemBuilder: (context, index) {
return MyCustomStatefulWidget(
"Text = $index",
);
},
);
}
一切正常,但是如果我在我的列表中说 1000 个项目,那么当ListView
滚动时我可以看到口吃动画,并且MyCustomStatefulWidget
的dispose()
方法被调用以获取 990 个项目(屏幕上没有)。 如何以更好的方式做到这一点?
换句话说,我可以问有没有什么方法可以重用/回收我以前的小部件,这样它就不会为 1000 个项目积累起来。
这是我的StatefulWidget
类的代码,但是为了简单起见,我在这里使用纯Text
。 但在现实世界中,我做其他需要它是StatefulWidget
事情
MyCustomStatefulWidget 类
class MyCustomStatefulWidget extends StatefulWidget {
final String title;
MyCustomStatefulWidget(this.title);
@override
_MyCustomStatefulWidgetState createState() => _MyCustomStatefulWidgetState();
}
class _MyCustomStatefulWidgetState extends State<MyCustomStatefulWidget> {
@override
Widget build(BuildContext context) => Text(widget.title);
@override
void dispose() {
print("dispose");
super.dispose();
}
}
ListView 子项应在屏幕外自动重建。 如果子小部件仍然存在,您可以通过禁用 AutomaticKeepAlive来禁用保持项目活着
ListView(
children: [...],
addAutomaticKeepAlives: false,
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.