I'm developping an app using Flutter. And I want to execute some Firebase queries using Isolate. But each time I run the app I get this error and nothing is displayed.
Here my code
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();
}
Here is the error that I get
E/flutter (14817): [ERROR:flutter/runtime/dart_isolate.cc(808)] Unhandled exception: E/flutter (14817): error: native function 'Window_sendPlatformMessage' (4 arguments) cannot be found E/flutter (14817): #0 Window.sendPlatformMessage (dart:ui/window.dart:1133:9) E/flutter (14817): #1 _DefaultBinaryMessenger._sendPlatformMessage (package:flutter/src/services/binary_messenger.dart:85:15) E/flutter (14817): #2 _DefaultBinaryMessenger.send (package:flutter/src/services/binary_messenger.dart:129:12) E/flutter (14817): #3 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:309:51) E/flutter (14817): E/flutter (14817): #4 Query.snapshots. (package: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/flutter (14817): E/flutter (14817): #4 Firestore.settings (package:cloud_firestore/src/firestore.dart:154:19) E/flutter (14817): E/flutter (14817): #5 HomePageState.getData (package:flutter_app/HelpFile/HomePage.dart:207:10) E/flutter (14817): #8 _StreamImpl.listen (dart:async/stream_impl.dart:472:9) E/flutter (14817): #9 HomePageState.getData (package:flutter_app/HomePage.dart:201:10) E/flutter (14817): E/flutter (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)
Check this link https://firebase.google.com/docs/reference/android/com/google/firebase/FirebaseApp
Any FirebaseApp initialization must occur only in the main process of the app. Use of Firebase in processes other than the main process is not supported and will likely cause problems related to resource contention.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With