2017-10-15 48 views
0

我使用Flutter创建了我的滚动演示应用程序的发布版本。我不知道为什么我的应用程序的ListView滚动不如颤动画廊应用程序光滑。我使用LG G5进行这项测试。为什么我的扑翼应用程序的listview滚动不如扑动画廊应用程序光滑?

这里的a link to my app's demo

编辑: 这里是代码。

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; 
} 

有人也有同样的感受吗?

谢谢!

+0

你是如何实现你的ListView的?你能分享一些代码吗? –

回答

2

您的代码存在的问题是您使用的是常规的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,但滚动仍然是黄油顺利。

+0

@Liro,谢谢!我不知道这种方法。它就像扑克牌的回收站一样。我会试试这个,然后接受你的答案,如果我有我正在寻找的平滑滚动。 –

+0

@Liro我试了你的代码。它确实改善了滚动效果,但仍然不如android本机构建的应用程序那样流畅。这真的是预期扑动? –

+0

您是否在调试或发布模式下尝试过?据我所知,调试应用程序使用JIT编译,速度稍慢,因此是“慢速模式”横幅。但是发布应用程序被编译为本地代码,因此它们应该至少与本机应用程序一样流畅,如果不是更好的话。 –

相关问题