Невозможно выполнить Firebase Query в Isolate - PullRequest
2 голосов
/ 01 декабря 2019

Я разрабатываю приложение, используя Flutter. И я хочу выполнить некоторые запросы Firebase, используя Isolate. Но каждый раз, когда я запускаю приложение, я получаю эту ошибку, и ничего не отображается.

Здесь мой код

class HomePage extends StatefulWidget {
    HomePage({Key key, this.title}) : super(key: key);
    final String title;

    @override
    HomePageState createState() => HomePageState();
 }


class HomePageState extends State<HomePage>{
    Isolate _isolate;
    ReceivePort _receivePort;
    String _data;

  @override
  Widget build(BuildContext context){
    return WillPopScope(
    child: Scaffold(){
     child : Center(child:Text('${_data}'))
     });
  }


 //To start
  void _start() async {
  _receivePort = ReceivePort();
  _isolate = await Isolate.spawn(getData, _receivePort.sendPort);
  _receivePort.listen(_displayData, onDone: () {
     print("done!");
  });
}

 //Display data;
void _displayData(dynamic data) {
  setState(() {
    _data = data;
  });
 }

  static void getData(SendPort sendPort) async{
   var fire = Firestore.instance;
   fire.settings(persistenceEnabled: true); //I get an error here
   fire.document('MODEL/${id}')
    .snapshots()
    .listen((d) {//I get an error here
     sendPort.send(d);
    }
 }
}

 //I call the method _start in the initState
@override
 void initState() {
    _start();
   super.initState();
  }

Вот ошибка, которую я получаю

E / flutter (14817): [ОШИБКА: flutter / runtime / dart_isolate.cc (808)] Необработанное исключение: E / flutter (14817): ошибка: собственная функция 'Window_sendPlatformMessage' (4 аргумента)) не может быть найден E / flutter (14817): # 0 Window.sendPlatformMessage (dart: ui / window.dart: 1133: 9) E / flutter (14817): # 1 _DefaultBinaryMessenger._sendPlatformMessage (пакет: flutter / src / services /binary_messenger.dart: 85: 15) E / flutter (14817): # 2 _DefaultBinaryMessenger.send (пакет: flutter / src / services / binary_messenger.dart: 129: 12) E / flutter (14817): # 3 MethodChannel.invokeMethod (пакет: флаттер / src / services / platform_channel.dart: 309: 51) E / флаттер (14817): E / флаттер (14817): # 4 Query.snapshots. (пакет: cloud_firestore / src / query.dart: 61: 37) E / flutter (14817): # 5 _runGuarded (dart: async / stream_controller.dart: 805: 24) E / flutter (14817): # 6 _BroadcastStreamController._subscribe(dart: async / broadcast_stream_controller.dart: 213: 7) E / flutter (14817): # 7 _ControllerStream._createSubscription (dart: async / stream_controller.dart: 818: 19) E / трепетание (14817): E / трепетание (148 (148)): # 4 Firestore.settings (пакет: cloud_firestore / src / firestore.dart: 154: 19) E / flutter (14817): E / flutter (14817): # 5 HomePageState.getData (пакет: flutter_app / HelpFile / HomePage. дротик: 207: 10) E / flutter (14817): # 8 _StreamImpl.listen (dart: async / stream_impl.dart: 472: 9) E / flutter (14817): # 9 HomePageState.getData (пакет: flutter_app / HomePage. дротик: 201: 10) E / трепетание (14817): E / трепетание (14817): # 10 _startIsolate. (dart: isolate-patch / isolate_patch.dart: 308: 17) E / flutter (14817): # 11 _RawReceivePortImpl._handleMessage (dart: isolate-patch / isolate_patch.dart: 172: 12)

...