Флаттер: поток и изоляция

#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 не разделяют память с основным потоком, поэтому все данные, которые передаются туда и обратно, должны проходить через выделенный канал связи. Настройка потока для обработки и перенаправления этих данных, безусловно, возможна, но также избыточна, если это не является абсолютно необходимым.