为什么我的扑翼应用程序的listview滚动不如扑动画廊应用程序光滑?
我使用Flutter创建了我的滚动演示应用程序的发布版本。我不知道为什么我的应用程序的ListView滚动不如颤动画廊应用程序光滑。我使用LG G5进行这项测试。为什么我的扑翼应用程序的listview滚动不如扑动画廊应用程序光滑?
编辑: 这里是代码。
class ListViewSample extends StatelessWidget {
@override
Widget build(BuildContext buidContext) {
return new Container(
child: new Center(
child: new ListView(
children: createListTiles(),
),
)
);
}
List<Widget> createListTiles() {
List<Widget> tiles = <Widget>[];
for(int i = 0; i < 40; i++) {
int count = i + 1;
tiles.add(
new ListTile(
leading: new CircleAvatar(
child: new Text("$count"),
backgroundColor: Colors.lightGreen[700],
),
title: new Text("Title number $count"),
subtitle: new Text("This is the subtitle number $count"),
)
);
}
return tiles;
}
有人也有同样的感受吗?
谢谢!
您的代码存在的问题是您使用的是常规的ListView
,这不适用于包含大量项目的列表。所有这40个小部件都保存在内存中,这会导致您所遭受的极度滚动的滚动体验。
如果您有大量或无限量的项目,则应该使用ListView.builder代替。它仅按需构建可见列表项,这使得更大的列表可以顺利滚动。
这里有一个完整的示例中,您将如何迁移列表中的助洗剂的方法:
import 'package:flutter/material.dart';
class ListViewSample extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Center(
child: new ListView.builder(
itemCount: 200,
itemBuilder: (context, index) {
final count = index + 1;
return new ListTile(
leading: new CircleAvatar(
child: new Text("$count"),
backgroundColor: Colors.lightGreen[700],
),
title: new Text("Title number $count"),
subtitle: new Text("This is the subtitle number $count"),
);
},
),
),
);
}
}
注意,有很多的项目,在这种情况下200,但滚动仍然是黄油顺利。
@Liro,谢谢!我不知道这种方法。它就像扑克牌的回收站一样。我会试试这个,然后接受你的答案,如果我有我正在寻找的平滑滚动。 –
@Liro我试了你的代码。它确实改善了滚动效果,但仍然不如android本机构建的应用程序那样流畅。这真的是预期扑动? –
您是否在调试或发布模式下尝试过?据我所知,调试应用程序使用JIT编译,速度稍慢,因此是“慢速模式”横幅。但是发布应用程序被编译为本地代码,因此它们应该至少与本机应用程序一样流畅,如果不是更好的话。 –
你是如何实现你的ListView的?你能分享一些代码吗? –