Closed henoktadesse closed 3 years ago
I opened an issue here https://github.com/ryanheise/audio_service/issues/476#issue-709738567, it was automatically closed because I removed some of the optional sections such as screenshots, I updated the issue but didn't make much of a difference so I had to repost it here again.
Hi @henoktadesse The bot detected the first section of the template was missing and it does not recheck after edits (I have found another bot that does that, but it is missing certain other features I need unfortunately).
But regarding this issue, it is almost certainly a bug in the firestore plugin. If I were to guess, I would say that that plugin was implemented as a singleton on the platform side, stored in a global variable. So the plugin just doesn't know how to be instantiated twice.
I used to have a section at the bottom of the audio_service README on how to report a bug to another plugin if it misbehaves like this and removed it after those plugins appeared to have time to adapt (it's been almost 2 years since the Flutter background execution API was introduced). Ironically, it appears that the remaining plugins that still haven't been fixed are the first-class ones (i.e. developed by Google). These sorts of bugs are usually very easy to fix, but unfortunately I don't have time to fix every plugin that doesn't work in the background, so it will take someone to report the bug and someone to then submit a pull request (since otherwise it probably won't get fixed.)
At the very least, I should add a section back into the README on how to report such a bug.
@ryanheise thank you for the quick response, before upgrading firebase and audio_service it used to work without any issues. If the old Firestore plugin was working with audio_service, might the incompatibility be from the new updates to Firestore or audio_service? and is there any workaround to this?
Looking at the code, sure enough it uses a singleton:
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
FLTFirebaseFirestoreReaderWriter *firestoreReaderWriter = [FLTFirebaseFirestoreReaderWriter new];
FlutterMethodChannel *channel =
[FlutterMethodChannel methodChannelWithName:kFLTFirebaseFirestoreChannelName
binaryMessenger:[registrar messenger]
codec:[FlutterStandardMethodCodec
codecWithReaderWriter:firestoreReaderWriter]];
FLTFirebaseFirestorePlugin *instance = [FLTFirebaseFirestorePlugin sharedInstance];
instance.channel = channel;
[registrar addMethodCallDelegate:instance channel:channel];
#if TARGET_OS_OSX
// TODO(Salakar): Publish does not exist on MacOS version of FlutterPluginRegistrar.
#else
[registrar publish:instance];
#endif
}
This method is called each time a new instance of the plugin is created (i.e. per flutter engine). As you can see, it gets a singleton instance of the state and stores the "latest" channel in it overwriting what was previously there:
instance.channel = channel;
At this point, the plugin forgets how to communicate to the main flutter engine / isolate and only knows how to talk to the new one (in this case, the background isolate provided by audio_service).
So a workaround is to start listening to firestore messages in the background isolate, but of course once the audio service stops, firestore will not know how to talk to the main isolate again.
It is best to at least submit a bug report to that plugin, and you may copy and paste my explanation above and your reproduction project.
I will submit a bug report and link your explanation. Let's hope they fix it, about 90% of our project's functionality is affected because of this.
In the short term as a workaround, you can create a fork of that plugin and modify that one line of code to check if the channel value was already set and if so don't overwrite it. That way, it will at least continue delivering messages to the main isolate (although if the background isolate attempted to listen to messages it would still fail, which could be fine in your case.)
A correct solution would be for the plugin to maintain a list of instances so that it could communicate with all of them.
I think this is also affecting Android as well, as I've been running into the following error that seems similar to this iOS one:
E/flutter (18111): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: PlatformException(firebase_firestore, length=23; index=23, {}, null)
E/flutter (18111): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:582:7)
E/flutter (18111): #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:159:18)
E/flutter (18111): <asynchronous suspension>
E/flutter (18111): #2 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:332:12)
E/flutter (18111): #3 MethodChannelQuery.snapshots.<anonymous closure> (package:cloud_firestore_platform_interface/src/method_channel/method_channel_query.dart:139:54)
E/flutter (18111): #4 _runGuarded (dart:async/stream_controller.dart:847:24)
E/flutter (18111): #5 _BroadcastStreamController._subscribe (dart:async/broadcast_stream_controller.dart:213:7)
E/flutter (18111): #6 _ControllerStream._createSubscription (dart:async/stream_controller.dart:860:19)
E/flutter (18111): #7 _StreamImpl.listen (dart:async/stream_impl.dart:493:9)
E/flutter (18111): #8 new _ForwardingStreamSubscription (dart:async/stream_pipe.dart:118:10)
E/flutter (18111): #9 _ForwardingStream._createSubscription (dart:async/stream_pipe.dart:88:16)
E/flutter (18111): #10 _ForwardingStream.listen (dart:async/stream_pipe.dart:83:12)
E/flutter (18111): #11 new _ForwardingStreamSubscription (dart:async/stream_pipe.dart:118:10)
E/flutter (18111): #12 _ForwardingStream._createSubscription (dart:async/stream_pipe.dart:88:16)
E/flutter (18111): #13 _ForwardingStream.listen (dart:async/stream_pipe.dart:83:12)
E/flutter (18111): #14 new _ForwardingStreamSubscription (dart:async/stream_pipe.dart:118:10)
E/flutter (18111): #15 _ForwardingStream._createSubscription (dart:async/stream_pipe.dart:88:16)
E/flutter (18111): #16 _ForwardingStream.listen (dart:async/stream_pipe.dart:83:12)
E/flutter (18111): #17 _StreamBuilderBaseState._subscribe (package:flutter/src/widgets/async.dart:139:37)
E/flutter (18111): #18 _StreamBuilderBaseState.didUpdateWidget (package:flutter/src/widgets/async.dart:124:7)
E/flutter (18111): #19 StatefulElement.update (package:flutter/src/widgets/framework.dart:4815:58)
E/flutter (18111): #20 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #21 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #22 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (18111): #23 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #24 StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
E/flutter (18111): #25 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #26 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #27 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #28 StatelessElement.update (package:flutter/src/widgets/framework.dart:4708:5)
E/flutter (18111): #29 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #30 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #31 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #32 ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
E/flutter (18111): #33 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #34 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5647:32)
E/flutter (18111): #35 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6246:17)
E/flutter (18111): #36 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #37 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6125:14)
E/flutter (18111): #38 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #39 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #40 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #41 StatelessElement.update (package:flutter/src/widgets/framework.dart:4708:5)
E/flutter (18111): #42 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #43 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6125:14)
E/flutter (18111): #44 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #45 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #46 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #47 StatelessElement.update (package:flutter/src/widgets/framework.dart:4708:5)
E/flutter (18111): #48 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #49 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #50 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #51 ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
E/flutter (18111): #52 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #53 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #54 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (18111): #55 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #56 StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
E/flutter (18111): #57 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #58 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5647:32)
E/flutter (18111): #59 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6246:17)
E/flutter (18111): #60 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #61 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #62 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (18111): #63 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #64 StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
E/flutter (18111): #65 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #66 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #67 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #68 StatelessElement.update (package:flutter/src/widgets/framework.dart:4708:5)
E/flutter (18111): #69 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #70 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #71 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #72 ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
E/flutter (18111): #73 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #74 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #75 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #76 ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
E/flutter (18111): #77 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #78 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5647:32)
E/flutter (18111): #79 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6246:17)
E/flutter (18111): #80 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #81 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #82 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (18111): #83 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #84 StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
E/flutter (18111): #85 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #86 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #87 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #88 ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
E/flutter (18111): #89 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #90 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #91 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (18111): #92 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #93 StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
E/flutter (18111): #94 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #95 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6125:14)
E/flutter (18111): #96 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #97 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #98 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #99 StatelessElement.update (package:flutter/src/widgets/framework.dart:4708:5)
E/flutter (18111): #100 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #101 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6125:14)
E/flutter (18111): #102 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #103 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #104 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (18111): #105 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #106 StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
E/flutter (18111): #107 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #108 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #109 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (18111): #110 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #111 StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
E/flutter (18111): #112 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #113 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #114 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #115 ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
E/flutter (18111): #116 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #117 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #118 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #119 ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
E/flutter (18111): #120 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #121 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #122 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (18111): #123 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #124 StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
E/flutter (18111): #125 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #126 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #127 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #128 StatelessElement.update (package:flutter/src/widgets/framework.dart:4708:5)
E/flutter (18111): #129 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #130 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #131 _InheritedProviderScopeElement.performRebuild (package:provider/src/inherited_provider.dart:426:11)
E/flutter (18111): #132 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #133 ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
E/flutter (18111): #134 _InheritedProviderScopeElement.update (package:provider/src/inherited_provider.dart:446:11)
E/flutter (18111): #135 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #136 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #137 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #138 StatelessElement.update (package:flutter/src/widgets/framework.dart:4708:5)
E/flutter (18111): #139 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #140 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #141 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #142 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2730:33)
E/flutter (18111): #143 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:913:20)
E/flutter (18111): #144 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:302:5)
E/flutter (18111): #145 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1117:15)
E/flutter (18111): #146 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1055:9)
E/flutter (18111): #147 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:971:5)
E/flutter (18111): #148 _rootRun (dart:async/zone.dart:1190:13)
E/flutter (18111): #149 _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter (18111): #150 _CustomZone.runGuarded (dart:async/zone.dart:997:7)
E/flutter (18111): #151 _invoke (dart:ui/hooks.dart:251:10)
E/flutter (18111): #152 _drawFrame (dart:ui/hooks.dart:209:3)
@kbanta11 I'll need more details to investigate that. Do you have a minimal reproduction project?
For anyone who is having the same issue, check out this quick fix https://github.com/FirebaseExtended/flutterfire/issues/3671#issuecomment-746990151 it's working so far.
There is also an open PR here which in theory should address this https://github.com/FirebaseExtended/flutterfire/pull/4209
But as @Chess-er mentioned in https://github.com/FirebaseExtended/flutterfire/issues/3671#issuecomment-738788712 it doesn't fix this particular use case somehow (I have not tried, as I am more focused on #415 which removes the need for isolates in audio_service, although it would still be good if the flutterfire bug were fixed.)
Anyone who wants a proper fix should probably consider letting the author of that PR know that it doesn't completely solve the issue and provide details of what goes wrong.
hi @henoktadesse it would be great if you can give the PR a try:
dependency_overrides:
cloud_firestore:
git:
url: https://github.com/ened/flutterfire.git
ref: fix/4108-cloud-firestore
path: packages/cloud_firestore/cloud_firestore
cloud_firestore_platform_interface:
git:
url: https://github.com/ened/flutterfire.git
ref: fix/4108-cloud-firestore
path: packages/cloud_firestore/cloud_firestore_platform_interface
I tried to revive the example in https://gitlab.com/henoktadesse/audiotest2 but probably lack access to your firestore backend to retrieve actual data. Thank you
@ened I gave it a try this morning and it is working, but I am accessing Firestore only from the main isolate so I can't say for those who are using from another isolates. Thanks :)
I can confirm the issue. I didn't expect AudioService to be the culprit, because Firebase wasn't throwing any error.
@ened 's PR was indeed working for me.
hi @henoktadesse it would be great if you can give the PR a try:
dependency_overrides: cloud_firestore: git: url: https://github.com/ened/flutterfire.git ref: fix/4108-cloud-firestore path: packages/cloud_firestore/cloud_firestore cloud_firestore_platform_interface: git: url: https://github.com/ened/flutterfire.git ref: fix/4108-cloud-firestore path: packages/cloud_firestore/cloud_firestore_platform_interface
I tried to revive the example in https://gitlab.com/henoktadesse/audiotest2 but probably lack access to your firestore backend to retrieve actual data. Thank you
Hi @ened. I'm unable to use your PR due to package dependency conflicts with the rest of the firebase plugins. This is my current setup:
cloud_firestore: ^0.16.0
firebase_analytics: ^6.0.0
firebase_auth: ^0.20.0+1
firebase_in_app_messaging: ^0.3.0+1
firebase_core: ^0.7.0
firebase_crashlytics: ^0.4.0+1
firebase_messaging: ^8.0.0-dev.14
firebase_performance: ^0.5.0+1
Please could you share your/a compatible pubspec.yaml? I'll need to downgrade mine to match. Thank you :)
@leidig54:
try this one
dependencies:
cloud_firestore: ^0.15.0
firebase_analytics: ^6.3.0
firebase_auth: ^0.18.2
firebase_core: ^0.6.0
firebase_crashlytics: ^0.3.0
firebase_dynamic_links: ^0.6.3
firebase_messaging: ^8.0.0-dev.12
firebase_remote_config: ^0.5.0
dependency_overrides:
firebase_core: 0.6.0
firebase_auth:
git:
url: https://github.com/ened/flutterfire.git
ref: 3fa91544d8b385d487818155fff4cbb4351973aa # fix/4416-firebase-auth
path: packages/firebase_auth/firebase_auth
firebase_auth_platform_interface:
git:
url: https://github.com/ened/flutterfire.git
ref: 3fa91544d8b385d487818155fff4cbb4351973aa # fix/4416-firebase-auth
path: packages/firebase_auth/firebase_auth_platform_interface
You see we also use a fork for firebase_auth. The cloud_firestore change is already in the main cloud_firestore branch.
@leidig54 also, the cloud_firestore PR is merged already
Hey @ened do you think you could do it for the storage library as well?
@andy-t-wang only once https://github.com/FirebaseExtended/flutterfire/pull/4643 is fixed. What problems do you have with storage? Also, we should probably close this ticket and discuss over in the Firebase project.
Closing now that https://github.com/FirebaseExtended/flutterfire/pull/4209 has been merged.
For anyone who is running into isolate issues with other plugins, you may also try the one-isolate
branch of audio_service. Plugins that don't behave well in multiple isolates should hopefully have no issue with this branch.
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs, or use StackOverflow if you need help with audio_service.
Which API doesn't behave as documented, and how does it misbehave? Firestore streams stop receiving data as soon as audio service starts.
Minimal reproduction project I created a new project, a copy of the example code with Firestore added. I only configured it for iOS since the error was only occurring on iOS in my main project. link - audio-test
To Reproduce (i.e. user steps, not code) Steps to reproduce the behavior:
Error messages
Expected behavior Firestore receiving data while AudioService is running
Screenshots none
Runtime Environment
Flutter SDK version
Additional context none.