Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 如何提高颤振性能?_Dart_Flutter - Fatal编程技术网

Dart 如何提高颤振性能?

Dart 如何提高颤振性能?,dart,flutter,Dart,Flutter,如何提高颤振性能并加快我们的应用。 因为我正在开发一个大型应用程序,我担心性能问题,因为我需要一个超级快速的应用程序 在这里,我有一个很大的项目列表,比如聊天应用程序,下面提到了一些我担心的事情: 1:我需要平滑滚动3000多个项目 2:我需要在聊天期间更新特定项目,如:查看、交付、发送或删除。 3:导航和导航 在react native中有很多方法,比如使用PureComponent 或者shouldComponentUpdate(nextrops,nextState)函数以减少渲染 例如,在

如何提高颤振性能并加快我们的应用。 因为我正在开发一个大型应用程序,我担心性能问题,因为我需要一个超级快速的应用程序

在这里,我有一个很大的项目列表,比如聊天应用程序,下面提到了一些我担心的事情: 1:我需要平滑滚动3000多个项目 2:我需要在聊天期间更新特定项目,如:查看、交付、发送或删除。 3:导航和导航

在react native中有很多方法,比如使用
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不会真正被破坏