Flutter 颤振:流和隔离
我试图在一个流中隔离Flutter 颤振:流和隔离,flutter,dart,dart-isolates,dart-stream,Flutter,Dart,Dart Isolates,Dart Stream,我试图在一个流中隔离MyComplexObject。 MyComplexObject在其类中有更多对象 MyComplexObject示例: class MyComplexObject { String documentID; Object1 object1; Object2 object2; Object3 object3; Object4 object4; Object5 object5; Object6 object6; Object7 object7; MyCompl
MyComplexObject
。
MyComplexObject
在其类中有更多对象
MyComplexObject
示例:
class MyComplexObject {
String documentID;
Object1 object1;
Object2 object2;
Object3 object3;
Object4 object4;
Object5 object5;
Object6 object6;
Object7 object7;
MyComplexObject({
this.documentID;
this.object1,
this.object2,
this.object3,
this.object4,
this.object5,
this.object6,
this.object7,
});
factory MyComplexObject.fromFirestore(DocumentSnapshot documentSnapshot) {
return MyComplexObject(
documentID: documentSnapshot.documentID,
object1: documentSnapshot.data['map1'],
object2: documentSnapshot.data['map2'],
object3: documentSnapshot.data['map3'],
object4: documentSnapshot.data['map4'],
object5: documentSnapshot.data['map5'],
object6: documentSnapshot.data['map6'],
object7: documentSnapshot.data['map7'],
);
}
}
我的流函数
Stream<MyComplexObject> streamMyComplexObject(String documentID) {
DocumentReference documentReference =
_db.collection(deviceStatesCollection).document(documentID);
return documentReference
.snapshots()
.map((DocumentSnapshot documentSnapshot) {
return MyComplexObject.fromFirestore(documentSnapshot);
});
}
streamMyComplexObject(字符串文档ID){
文档参考文档参考=
_db.收集(deviceStatesCollection).文档(documentID);
返回文档参考
.快照()
.map((文档快照文档快照){
从FireStore(documentSnapshot)返回MyComplexObject;
});
}
我将
streamMyComplexObject
与StreamBuilder
一起使用,是否可以隔离MyComplexObject
的解析/转换?我不确定是否正确理解了您的问题,但也许你在寻找你的对象的扩展:这可能是与我的问题最接近的事情:我不确定我是否看到了这样做的目的。在Dart中使用隔离是一项繁琐且容易出错的任务,因此,只有在有可能阻塞主线程的长时间运行的任务时,才应该使用隔离。还需要注意的是,Dart中的隔离不与主线程共享内存,因此所有来回传递的数据都需要通过专用的通信通道来实现。设置一个流来处理和重定向数据当然是可能的,但如果不是绝对必要的话,也是多余的。