【问题标题】:flutter riverpod crashes only on web version, but only when actually deployedFlutter RiverPod 仅在 Web 版本上崩溃,但仅在实际部署时才崩溃
【发布时间】: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 的唯一地方。

知道发生了什么,或者我可以如何更好地解决问题?

【问题讨论】:

    标签: flutter riverpod


    【解决方案1】:

    这似乎是编译为 javascript 时的错误。通过删除 StreamProvider.autoDispose.family 中的“autoDispose”,我能够让我的代码正常工作

    这与消息密切相关:

    Unsupported operation: Unknown ProviderListenable AutoDisposeStreamProvider
    

    我不确定这是否是 Flutter 编译错误,或者可能是 Riverpod 错误。我会提出有关 Riverpod 的问题,以便雷米做出决定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-26
      • 2012-08-24
      • 1970-01-01
      • 2014-07-01
      • 2020-06-24
      • 1970-01-01
      • 2017-01-24
      • 1970-01-01
      相关资源
      最近更新 更多