Dart 如何提高颤振性能?
如何提高颤振性能并加快我们的应用。 因为我正在开发一个大型应用程序,我担心性能问题,因为我需要一个超级快速的应用程序 在这里,我有一个很大的项目列表,比如聊天应用程序,下面提到了一些我担心的事情: 1:我需要平滑滚动3000多个项目 2:我需要在聊天期间更新特定项目,如:查看、交付、发送或删除。 3:导航和导航 在react native中有很多方法,比如使用Dart 如何提高颤振性能?,dart,flutter,Dart,Flutter,如何提高颤振性能并加快我们的应用。 因为我正在开发一个大型应用程序,我担心性能问题,因为我需要一个超级快速的应用程序 在这里,我有一个很大的项目列表,比如聊天应用程序,下面提到了一些我担心的事情: 1:我需要平滑滚动3000多个项目 2:我需要在聊天期间更新特定项目,如:查看、交付、发送或删除。 3:导航和导航 在react native中有很多方法,比如使用PureComponent 或者shouldComponentUpdate(nextrops,nextState)函数以减少渲染 例如,在
PureComponent
或者shouldComponentUpdate(nextrops,nextState)
函数以减少渲染
例如,在react native中,我们可以将一个大列表组件拆分为项目的子组件,然后我们可以使用shouldComponentUpdate(nextrops,nextState)
并防止任何渲染不依赖于当前项目
此方法帮助我们只渲染需要更新的项目。
还有很多其他方法可以用来加速我们的应用程序
虽然我在react native中遇到的一个大问题是,如果我们快速滚动超过300个项目,就会出现列表项目的空白
所以我的问题是如何在flatter
中找到相同的提示,我的意思是有没有像我在react native
中提到的flatter
的提示/技巧?如果是,请帮我举一个简单的例子。
谢谢你的光临
在这里,我有一个类似聊天应用程序的大量项目列表,下面提到了一些我担心的事情:1:我需要平滑地滚动3000多个项目2:我需要在聊天期间更新特定项目,例如:查看、交付、发送或删除。3:导航和导航
使用ListView.builder()
widget创建平滑的可滚动列表,无任何长度,无任何性能问题
它的功能基本上对应于RecyclerView(原生Android)。
屏幕上不可见的项目不会被渲染,因此实际上列表中总共有多少项目并不重要
Flatter为您处理所有这些小事情,以便您可以专注于应用程序的其他重要方面。颤振和雷诺数在某种程度上相似,但不尽相同
工作示例:
import 'package:flutter/material.dart';
List<String> litems = ["1","2","Third","4"];
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext ctxt) {
return new MaterialApp(
home: new ListDisplay(),
);
}
}
class ListDisplay extends StatelessWidget {
@override
Widget build (BuildContext ctxt) {
return new Scaffold(
appBar: new AppBar(title: new Text("Dynamic Demo"),),
body: new ListView.builder(
itemCount: litems.length,
itemBuilder: (BuildContext ctxt, int index) {
return new Text(litems[index]);
}
)
),
);
}
}
导入“包装:颤振/材料.省道”;
列表文字=[“1”、“2”、“3”、“4”];
void main()=>runApp(新的MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(BuildContext-ctxt){
返回新材料PP(
主页:新建ListDisplay(),
);
}
}
类ListDisplay扩展了无状态小部件{
@凌驾
小部件构建(BuildContext-ctxt){
归还新脚手架(
appBar:new appBar(标题:新文本(“动态演示”),),
正文:新建ListView.builder(
itemCount:litems.length,
itemBuilder:(BuildContext ctxt,int index){
返回新文本(litems[index]);
}
)
),
);
}
}
如果您仍然面临相同的问题,请尝试在发布模式下运行应用程序。对于上面的例子,这肯定会解决您的问题
如果您想了解更多有关提高应用程序整体性能的提示,请访问以下链接
要在发布模式下运行应用程序,请在应用程序的终端中执行
flatter run--release
,以在发布模式下运行应用程序。ListView.Builder适用于包含非常大项目的列表,因为它只生成屏幕上可见的小部件,但根据我的经验,当小部件离开屏幕时,该小部件将被销毁当小部件需要显示回屏幕时,再次重新创建。如果widget构建方法很慢(可能是由于计算量大),那么滚动肯定会滞后。这取决于widget的类型。从这个意义上讲,有状态的widget不会真正被破坏