繁体   English   中英

我应该如何从根本上提高 flutter 应用程序性能?

[英]How should I basically improve flutter application performance?

好吧,这对你来说可能是一篇很长的文章,但对于像我这样的新手来说可能会解决很多问题。 好了,现在开门见山,我究竟应该如何提高性能,同时从 firestore 加载一堆列表数据并防止应用程序崩溃。 这是发生在我身上的事情,我正在开发一个送餐应用程序,直到现在这个应用程序中有大约 50 家餐厅,所发生的事情是,许多低预算手机(特别是 vivo)没有承受负荷,而且应用程序崩溃了,所以我限制了一次加载的文档数量,但这实际上影响了用户体验,这里有竞争对手比我们快得多,我不知道他们使用了什么技术但他们是在没有任何加载时间的情况下立即加载 98 家餐厅,我也尝试在后台加载数据,但是应用程序因此崩溃,所以现在我只能限制文档的数量,但我该如何改进? 目前首页有10张网络图卡,3张渐变颜色的资产图片堆叠卡和5家餐厅的列表,随着用户向下滚动会增加,但加载数据速度不够快。 有人建议我加快速度的方法还是我必须更改数据库?

所以,我认为你的应用程序很慢,因为当应用程序发生变化时,它会一次又一次地呈现所有小部件,并且会减慢应用程序的速度。 一些基本的解决方案是:

1- 对永不改变的变量使用const (例如: const Color colorPrimary = Color(0xffaabbcc));

2-使用Provider package来加载和存储您的数据,以便您可以在任何地方使用您的数据。 此外,它会阻止所有小部件呈现。 它只呈现使用该数据的小部件。 (例如,如果您不每次都更改AppBar标题,则您不想渲染AppBar

3- 将您的大部件分成单独的小部件。 它使您的项目管理变得容易。

4-也许您的图像很大,并且您的应用程序无法快速加载它们,然后它就崩溃了。 使它们的尺寸更小。 (例如:256x256 而不是 512x512)

5- 加载数据时使用延迟加载。 也许您的应用程序尝试加载所有数据一次,这会使您的应用程序变慢。 使用延迟加载,在用户向下滚动之前不会加载大部分数据。 (我想你已经在使用它了,但我只是想提一下)

这些是可能的解决方案。

如果您担心应用程序在发布模式下的性能,您可以缩小应用程序,它使用不同的技术通过从应用程序中删除未使用的代码(称为缩小)和许多其他技术(例如缩短 class 名称的混淆)来提高应用程序的效率和方法,您可以查看此链接以获取更多信息https://developer.android.com/studio/build/shrink-code

不确定您是否还需要答案,但我相信您的问题与一次加载所有视图有关。

如果仅当您加载太多结果时您的应用程序在启动时崩溃,则很可能您没有使用ListView.builder来异步加载所有视图。

我对你的建议如下:

  1. 使用ListView.builder延迟加载UI。 这将为屏幕上可见的视图分配 memory。
  2. 仔细检查您是否只加载一次数据。 您没有共享任何代码,但我曾经遇到过这个问题,每次重建小部件的 state 时都会调用我的Future
  3. 尽可能使用stateless小部件。 将您的小部件拆分为可重用的组件,并制作尽可能多的const无状态小部件。

如果您想要详细的示例,您可以查看本文中的技巧 4。

我确实在 2020 年找到了解决方案,崩溃和速度慢的原因是图像,大图像。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM