如何使用firebase firestore最大限度地减少颤振应用程序中的RAM消耗?
我有一个用Flatter开发的应用程序,它连接到Firebase Firestore并读取大量文档。每次用户在应用程序视图之间移动并返回到显示这些文档的视图时,RAM空间的使用都会增加。我的代码中有一个StreamBuilder,它在每次加载视图时调用集合。我的问题是:有没有办法在每次加载视图时最大限度地减少RAM的使用?,因为在RAM内存很少的设备上,该应用程序每次达到RAM内存空间限制时都会崩溃。求你了,我需要你帮忙!。这是我的StreamBuilder代码:如何使用firebase firestore最大限度地减少颤振应用程序中的RAM消耗?,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我有一个用Flatter开发的应用程序,它连接到Firebase Firestore并读取大量文档。每次用户在应用程序视图之间移动并返回到显示这些文档的视图时,RAM空间的使用都会增加。我的代码中有一个StreamBuilder,它在每次加载视图时调用集合。我的问题是:有没有办法在每次加载视图时最大限度地减少RAM的使用?,因为在RAM内存很少的设备上,该应用程序每次达到RAM内存空间限制时都会崩溃。求你了,我需要你帮忙!。这是我的StreamBuilder代码: StreamBuilder&l
StreamBuilder<QuerySnapshot>(
stream: this.rolUsuario != 'Digitador'
? this
.fs
.collection('Encuestas')
.where('OrganizacionPerteneciente',
isEqualTo: this.organizacionPerteneciente)
.orderBy('FechaCreacion', descending: true)
.snapshots()
: this
.fs
.collection('Encuestas')
.where('OrganizacionPerteneciente',
isEqualTo: this.organizacionPerteneciente)
.where('Asignada', arrayContains: this.uID.toString())
.orderBy('FechaCreacion', descending: true)
.snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError) return Text('Error: ${snapshot.error}');
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return Center(
child: CircularProgressIndicator(),
);
default:
this.encuestas = new List<Encuesta>();
snapshot.data.documents.forEach((encuesta) {
this.encuestas.add(Encuesta.parse(encuesta.data));
});
return snapshot.data.documents.length == 0
? Center(
child: Text(
this.rolUsuario != 'Digitador'
? 'Aún no se han creado encuestas en la plataforma.\nPara agregar nuevas encuestas ve a https://surveyflow.tk desde un computador.'
: 'Aún no tienes asignada ninguna encuesta para rellenar.',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 18,
),
),
)
: ListView.separated(
itemCount: snapshot.data.documents.length,
separatorBuilder: (context, index) => Divider(
color: Colors.blueGrey[100],
),
padding: EdgeInsets.only(top: 15),
itemBuilder: (context, index) => Padding(
padding: EdgeInsets.symmetric(horizontal: 5),
child: ListTile(
selected: false,
title: Text(
snapshot.data.documents[index]['Nombre'],
style: TextStyle(fontWeight: FontWeight.bold),
),
dense: true,
subtitle: RichText(
text: TextSpan(
text: snapshot.data.documents[index]
['Descripcion'] +
'\n',
style: TextStyle(
color: Colors.blueGrey,
),
children: <TextSpan>[
TextSpan(
text: 'Fecha de Creación: ' +
imprimirFecha(
snapshot.data.documents[index]
['FechaCreacion'],
),
style: TextStyle(
color: Colors.black,
fontWeight: FontWeight.bold,
)),
]),
),
leading: CircleAvatar(
child: Text(snapshot
.data.documents[index]['Encuestados']
.toString()),
),
isThreeLine: false,
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => RellenarEncuestaView(
encuestaEditar: Encuesta.parse(
snapshot.data.documents[index]),
isAndroid: this.widget.isAndroid,
tipoEdicion: 'nuevo',
authInstance: this.widget.authInstance,
),
),
);
},
),
),
);
}
},
),
StreamBuilder(
stream:this.rolUsuario!='Digitador'
这
.fs
.collection(“Encuestas”)
.其中(‘组织专家’,
isEqualTo:这个组织(专家)
.orderBy('fechacreation',降序:true)
.快照()
:这个
.fs
.collection(“Encuestas”)
.其中(‘组织专家’,
isEqualTo:这个组织(专家)
.where('Asignada',arrayContains:this.uID.toString())
.orderBy('fechacreation',降序:true)
.snapshots(),
生成器:(BuildContext上下文,异步快照){
if(snapshot.hasError)返回文本('Error:${snapshot.Error}');
交换机(快照.连接状态){
案例连接状态。正在等待:
返回中心(
子对象:CircularProgressIndicator(),
);
违约:
this.encuestas=新列表();
snapshot.data.documents.forEach((encuesta){
add(Encuesta.parse(Encuesta.data));
});
返回snapshot.data.documents.length==0
?中心(
子:文本(
这是Rolusario!=“Digitador”
“不,这是一个平台革命的开端。\n这是一个新的开端https://surveyflow.tk 这是我的电脑
:“不,这是一个非常重要的问题。”,
textAlign:textAlign.center,
样式:TextStyle(
尺码:18,
),
),
)
:ListView.separated(
itemCount:snapshot.data.documents.length,
separatorBuilder:(上下文,索引)=>分隔符(
颜色:颜色。蓝灰色[100],
),
填充:仅限边缘设置(顶部:15),
itemBuilder:(上下文,索引)=>填充(
填充:边缘组。对称(水平:5),
孩子:ListTile(
选择:false,
标题:正文(
snapshot.data.documents[索引]['Nombre'],
样式:TextStyle(fontWeight:fontWeight.bold),
),
是的,
字幕:RichText(
text:TextSpan(
文本:快照.数据.文档[索引]
['descripion']+
“\n”,
样式:TextStyle(
颜色:颜色。蓝灰色,
),
儿童:[
TextSpan(
文本:“费查·德克雷西翁:”+
英普米尔费查(
快照.数据.文档[索引]
['fechacreation'],
),
样式:TextStyle(
颜色:颜色,黑色,
fontWeight:fontWeight.bold,
)),
]),
),
领先:CircleAvatar(
子:文本(快照)
.data.documents[索引]['Encuestados']
.toString()),
),
伊斯特里琳:错,
onTap:(){
导航器。推(
上下文
材料路线(
生成器:(上下文)=>RellenarEncuestaView(
encuestaEditar:Encuesta.parse(
snapshot.data.documents[索引],
isAndroid:this.widget.isAndroid,
标题:“新意”,
authInstance:this.widget.authInstance,
),
),
);
},
),
),
);
}
},
),
作为对这个问题的反馈——经常使用粗体字让我很难阅读。考虑把它调低,把思想分成段落。没有必要加粗API、技术和产品的名称。@DougStevenson done!。作为对这个问题的反馈——经常使用粗体字让我很难阅读。考虑把它调低,把思想分成段落。没有必要加粗API、技术和产品的名称。@DougStevenson done!。