#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;
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
с StreamBuilder
, возможно ли изолировать синтаксический анализ / преобразование MyComplexObject
?
Комментарии:
1. Я не уверен, правильно ли я понял ваш вопрос, но, возможно, вы ищете расширение для своего объекта: dart.dev/guides/language/extension-methods
2. Это может быть самое близкое, что связано с моим вопросом: speakerdeck.com/anvith /…
3. Я не уверен, что вижу цель, стоящую за этим. Использование изолятов в Dart — утомительная и подверженная ошибкам задача, поэтому ее следует использовать только в том случае, если существует длительная задача с высокой вероятностью блокировки основного потока. Также важно отметить, что изоляты в Dart не разделяют память с основным потоком, поэтому все данные, которые передаются туда и обратно, должны проходить через выделенный канал связи. Настройка потока для обработки и перенаправления этих данных, безусловно, возможна, но также избыточна, если это не является абсолютно необходимым.