【发布时间】:2021-03-18 00:27:51
【问题描述】:
对于在网络上运行的 Riverpod,我有一个奇怪的情况。下面的代码在使用 vsCode 调试时在 ios、macos 和 Chrome 中运行良好,但是在我将其部署到 firebase 托管后它会崩溃,如下行:
final AsyncValue<TBRinProgress> completedTbrAsyncValue = watch(completedTbrStreamProvider(id));
指的是这一行:
final completedTbrStreamProvider =
StreamProvider.autoDispose.family<TBRinProgress, String>((ref, id) {
final database = ref.watch(databaseProvider);
final questions = ref.watch(questionStreamProvider);
if (database != null && id != null && questions is! AsyncLoading) {
return database.completedTbrStream(
completedTbrId: id, questions: questions.data.value);
} else {
return const Stream.empty();
}
});
在 chrome 控制台中,我收到以下错误和堆栈跟踪:
Unsupported operation: Unknown ProviderListenable AutoDisposeStreamProvider<dynamic>#0000a(from: Instance of 'AutoDisposeStreamProviderFamily<dynamic, dynamic>', argument: 2021-03-17T16:04:40.472)
main.dart.js:9844 at Object.wrapException (https://mxotechaccountmanager.web.app/main.dart.js:7400:17)
main.dart.js:9844 at ProviderContainer.listen$1$2$mayHaveChanged (https://mxotechaccountmanager.web.app/main.dart.js:150983:17)
main.dart.js:9844 at _ConsumerState__reader_closure.call$0 (https://mxotechaccountmanager.web.app/main.dart.js:149336:38)
main.dart.js:9844 at JsLinkedHashMap.putIfAbsent$2 (https://mxotechaccountmanager.web.app/main.dart.js:64594:24)
main.dart.js:9844 at _ConsumerState._reader$1$1 (https://mxotechaccountmanager.web.app/main.dart.js:149306:76)
main.dart.js:9844 at Object.eval [as call$1$1] (eval at Closure_forwardCallTo (https://mxotechaccountmanager.web.app/main.dart.js:7762:14), <anonymous>:3:43)
main.dart.js:9844 at _OverviewPaginatedTableState_build_closure.call$3 (https://mxotechaccountmanager.web.app/main.dart.js:79726:38)
main.dart.js:9844 at Consumer.build$2 (https://mxotechaccountmanager.web.app/main.dart.js:149242:28)
main.dart.js:9844 at _ConsumerState.build$1 (https://mxotechaccountmanager.web.app/main.dart.js:149288:28)
main.dart.js:9844 at StatefulElement.build$0 (https://mxotechaccountmanager.web.app/main.dart.js:136839:25)
很遗憾,我无法在调试情况下重新创建此错误,因为它仅在部署时发生。所有其他 Riverpod 功能都可以正常工作……但是,这是我在一个 Provider 中使用多个 Provider 的唯一地方。
知道发生了什么,或者我可以如何更好地解决问题?
【问题讨论】: