flutter-bloc icon indicating copy to clipboard operation
flutter-bloc copied to clipboard

ProviderNotFoundException was thrown building Builder: Error: Could not find the correct Provider<AuthenticationBloc> above this BlocBuilder<AuthenticationBloc, AuthenticationState> Widget

Open Rams901 opened this issue 3 years ago • 0 comments

Error: Unhandled error MissingPluginException(No implementation found for method getApplicationDocumentsDirectory on channel plugins.flutter.io/path_provider) occurred in Instance of 'AuthenticationBloc'. C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49 throw packages/flutter/src/services/platform_channel.dart 165:7 _invokeMethod
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 45:50 C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/zone.dart 1687:54 runUnary
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 160:18 handleValue
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 767:44 handleValueCallback C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 796:13 _propagateToListeners C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 602:5 [_completeWithValue] C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 640:7 callback
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/schedule_microtask.dart 40:11 _microtaskLoop
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/schedule_microtask.dart 49:5 _startMicrotaskLoop C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 166:15

at Object.throw_ [as throw] (http://localhost:61700/dart_sdk.js:5386:11)
at http://localhost:61700/packages/bloc/src/cubit.dart.lib.js:115:21
at authentication_bloc.AuthenticationBloc.new.onError (http://localhost:61700/packages/bloc/src/cubit.dart.lib.js:116:27)
at authentication_bloc.AuthenticationBloc.new.onError (http://localhost:61700/packages/bloc/src/cubit.dart.lib.js:257:15)
at _RootZone.runBinaryGuarded (http://localhost:61700/dart_sdk.js:42409:11)
at sendError (http://localhost:61700/dart_sdk.js:35514:26)
at _BroadcastSubscription.new.[_sendError] (http://localhost:61700/dart_sdk.js:35531:11)
at _BroadcastSubscription.new.[_addError] (http://localhost:61700/dart_sdk.js:35454:27)
at http://localhost:61700/dart_sdk.js:36199:34
at _SyncBroadcastStreamController.new.[_forEachListener] (http://localhost:61700/dart_sdk.js:36041:13)
at _SyncBroadcastStreamController.new.[_sendError] (http://localhost:61700/dart_sdk.js:36197:31)
at _SyncBroadcastStreamController.new.[_addError] (http://localhost:61700/dart_sdk.js:36018:25)
at _RootZone.runBinaryGuarded (http://localhost:61700/dart_sdk.js:42409:11)
at sendError (http://localhost:61700/dart_sdk.js:35514:26)
at _ForwardingStreamSubscription.new.[_sendError] (http://localhost:61700/dart_sdk.js:35531:11)
at _ForwardingStreamSubscription.new.[_addError] (http://localhost:61700/dart_sdk.js:35454:27)
at _ForwardingStreamSubscription.new.[_addError] (http://localhost:61700/dart_sdk.js:39961:25)
at _MapStream.new.[_handleError] (http://localhost:61700/dart_sdk.js:39910:24)
at _ForwardingStreamSubscription.new.[_handleError] (http://localhost:61700/dart_sdk.js:39987:38)
at _RootZone.runBinaryGuarded (http://localhost:61700/dart_sdk.js:42409:11)
at sendError (http://localhost:61700/dart_sdk.js:35514:26)
at _ControllerSubscription.new.[_sendError] (http://localhost:61700/dart_sdk.js:35531:11)
at async._DelayedError.new.perform (http://localhost:61700/dart_sdk.js:39184:27)
at _StreamImplEvents.new.handleNext (http://localhost:61700/dart_sdk.js:39269:15)
at async._AsyncCallbackEntry.new.callback (http://localhost:61700/dart_sdk.js:39005:16)
at Object._microtaskLoop (http://localhost:61700/dart_sdk.js:42771:13)
at _startMicrotaskLoop (http://localhost:61700/dart_sdk.js:42777:13)
at http://localhost:61700/dart_sdk.js:37905:9

The Flutter DevTools debugger and profiler on Chrome is available at: http://127.0.0.1:9101?uri=http://127.0.0.1:61731/EoxHsWNAiW0= https://cryptic-depths-14871.herokuapp.com/api-token-auth/ Error: Unhandled error MissingPluginException(No implementation found for method getApplicationDocumentsDirectory on channel plugins.flutter.io/path_provider) occurred in Instance of 'AuthenticationBloc'. C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49 throw packages/flutter/src/services/platform_channel.dart 165:7 _invokeMethod
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 45:50 C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/zone.dart 1687:54 runUnary
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 160:18 handleValue
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 767:44 handleValueCallback C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 796:13 _propagateToListeners C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 602:5 [_completeWithValue] C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 640:7 callback
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/schedule_microtask.dart 40:11 _microtaskLoop
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/schedule_microtask.dart 49:5 _startMicrotaskLoop C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 166:15

at Object.throw_ [as throw] (http://localhost:61700/dart_sdk.js:5386:11)
at http://localhost:61700/packages/bloc/src/cubit.dart.lib.js:115:21
at authentication_bloc.AuthenticationBloc.new.onError (http://localhost:61700/packages/bloc/src/cubit.dart.lib.js:116:27)
at authentication_bloc.AuthenticationBloc.new.onError (http://localhost:61700/packages/bloc/src/cubit.dart.lib.js:257:15)
at _RootZone.runBinaryGuarded (http://localhost:61700/dart_sdk.js:42409:11)
at sendError (http://localhost:61700/dart_sdk.js:35514:26)
at _BroadcastSubscription.new.[_sendError] (http://localhost:61700/dart_sdk.js:35531:11)
at _BroadcastSubscription.new.[_addError] (http://localhost:61700/dart_sdk.js:35454:27)
at http://localhost:61700/dart_sdk.js:36199:34
at _SyncBroadcastStreamController.new.[_forEachListener] (http://localhost:61700/dart_sdk.js:36041:13)
at _SyncBroadcastStreamController.new.[_sendError] (http://localhost:61700/dart_sdk.js:36197:31)
at _SyncBroadcastStreamController.new.[_addError] (http://localhost:61700/dart_sdk.js:36018:25)
at _RootZone.runBinaryGuarded (http://localhost:61700/dart_sdk.js:42409:11)
at sendError (http://localhost:61700/dart_sdk.js:35514:26)
at _ForwardingStreamSubscription.new.[_sendError] (http://localhost:61700/dart_sdk.js:35531:11)
at _ForwardingStreamSubscription.new.[_addError] (http://localhost:61700/dart_sdk.js:35454:27)
at _ForwardingStreamSubscription.new.[_addError] (http://localhost:61700/dart_sdk.js:39961:25)
at _MapStream.new.[_handleError] (http://localhost:61700/dart_sdk.js:39910:24)
at _ForwardingStreamSubscription.new.[_handleError] (http://localhost:61700/dart_sdk.js:39987:38)
at sendError (http://localhost:61700/dart_sdk.js:35514:26)
at _ControllerSubscription.new.[_sendError] (http://localhost:61700/dart_sdk.js:35531:11)
at async._DelayedError.new.perform (http://localhost:61700/dart_sdk.js:39184:27)
at _StreamImplEvents.new.handleNext (http://localhost:61700/dart_sdk.js:39269:15)
at async._AsyncCallbackEntry.new.callback (http://localhost:61700/dart_sdk.js:39005:16)
at Object._microtaskLoop (http://localhost:61700/dart_sdk.js:42771:13)
at _startMicrotaskLoop (http://localhost:61700/dart_sdk.js:42777:13)
at http://localhost:61700/dart_sdk.js:37905:9

The following error pops up when I flutter run --no-sound-null-safety for the web version. There's a problem accessing the AuthenticationBloc provider. Trying the flutter test command shows the following: The following ProviderNotFoundException was thrown building Builder: Error: Could not find the correct Provider<AuthenticationBloc> above this BlocBuilder<AuthenticationBloc, AuthenticationState> Widget

This likely happens because you used a BuildContext that does not include the provider of your choice. There are a few common scenarios:

  • The provider you are trying to read is in a different route.

    Providers are "scoped". So if you insert of provider inside a route, then other routes will not be able to access that provider.

  • You used a BuildContext that is an ancestor of the provider you are trying to read.

    Make sure that BlocBuilder<AuthenticationBloc, AuthenticationState> is under your MultiProvider/Provider<AuthenticationBloc>. This usually happen when you are creating a provider and trying to read it immediately.

    For example, instead of:

    Widget build(BuildContext context) {
      return Provider<Example>(
        create: (_) => Example(),
        // Will throw a ProviderNotFoundError, because `context` is associated
        // to the widget that is the parent of `Provider<Example>`
        child: Text(context.watch<Example>()),
      ),
    }
    

    consider using builder like so:

    Widget build(BuildContext context) {
      return Provider<Example>(
        create: (_) => Example(),
        // we use `builder` to obtain a new `BuildContext` that has access to the provider
        builder: (context) {
          // No longer throws
          return Text(context.watch<Example>()),
        }
      ),
    }
    

If none of these solutions work, consider asking for help on StackOverflow: https://stackoverflow.com/questions/tagged/flutter

The relevant error-causing widget was: MaterialApp MaterialApp:file:///D:/flutter-bloc-master/flutter-bloc-master/bloc_login/lib/main.dart:36:12

Rams901 avatar Apr 09 '22 15:04 Rams901