I am new to Flutter
and this is my first time using ChangeNotifierProxyProvider
following YouTube tutorial. I did the exact way it was done but I got this error in vs code.
Is there anything I missed or I am doing it wrong. Please help me solve this problem. Thank you.
Error
Null check operator used on a null value
main.dart
MultiProvider(
providers: [
ChangeNotifierProvider(
create: (_) => AuthProvider(),
),
//send the value of user form authProvider to booking provider
//error here.
ChangeNotifierProxyProvider<AuthProvider, BookingProvider>(
create: (_) => BookingProvider(),
update: (_, authProvider, bookingProvider) => bookingProvider!
..loadUser(authProvider.getUser!),
)
],
booking_provider.dart
class BookingProvider extends ChangeNotifier {
User? _user;
void loadUser(User user) {
_user = user;
notifyListeners();
}
}
auth_provider.dart
class AuthProvider extends ChangeNotifier {
User? _user;
String _docUser = '';
User? get getUser {
return _user; // user has value
}
}
════════ Exception caught by widgets library ═══════════════════════════════════
The following _CastError was thrown building _InheritedProviderScope<BookingProvider?>(dirty, dependencies: [_InheritedProviderScope<AuthProvider?>], value: Instance of 'BookingProvider', listening to value):
Null check operator used on a null value
The relevant error-causing widget was
ChangeNotifierProxyProvider<AuthProvider, BookingProvider>
package:queuems/main.dart:64
When the exception was thrown, this was the stack
#0 MyApp.build.<anonymous closure>
package:queuems/main.dart:67
#1 new ListenableProxyProvider.<anonymous closure>
package:provider/src/listenable_provider.dart:123
#2 _CreateInheritedProviderState.build
package:provider/src/inherited_provider.dart:839
#3 _InheritedProviderScopeElement.build
package:provider/src/inherited_provider.dart:539
#4 ComponentElement.performRebuild
package:flutter/…/widgets/framework.dart:4588
#5 _InheritedProviderScopeElement.performRebuild
package:provider/src/inherited_provider.dart:495
#6 Element.rebuild
package:flutter/…/widgets/framework.dart:4311
#7 BuildOwner.buildScope
package:flutter/…/widgets/framework.dart:2578
#8 WidgetsBinding.drawFrame
package:flutter/…/widgets/binding.dart:882
#9 RendererBinding._handlePersistentFrameCallback
package:flutter/…/rendering/binding.dart:363
#10 SchedulerBinding._invokeFrameCallback
package:flutter/…/scheduler/binding.dart:1145
#11 SchedulerBinding.handleDrawFrame
package:flutter/…/scheduler/binding.dart:1082
#12 SchedulerBinding._handleDrawFrame
package:flutter/…/scheduler/binding.dart:996
#16 _invoke (dart:ui/hooks.dart:150:10)
#17 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:270:5)
#18 _drawFrame (dart:ui/hooks.dart:114:31)
(elided 3 frames from dart:async)
════════════════════════════════════════════════════════════════════════════════
I/flutter (21019): {status: true, message: Successful login, user: Instance of 'User'}
E/flutter (21019): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: Looking up a deactivated widget's ancestor is unsafe.
E/flutter (21019): At this point the state of the widget's element tree is no longer stable.
E/flutter (21019): To safely refer to a widget's ancestor in its dispose() method, save a reference to the ancestor by calling dependOnInheritedWidgetOfExactType() in the widget's didChangeDependencies() method.
E/flutter (21019): #0 Element._debugCheckStateIsActiveForAncestorLookup.<anonymous closure>
package:flutter/…/widgets/framework.dart:3990
E/flutter (21019): #1 Element._debugCheckStateIsActiveForAncestorLookup
package:flutter/…/widgets/framework.dart:4004
E/flutter (21019): #2 Element.findRootAncestorStateOfType
package:flutter/…/widgets/framework.dart:4064
E/flutter (21019): #3 Navigator.of
package:flutter/…/widgets/navigator.dart:2546
E/flutter (21019): #4 LoginBody.build.<anonymous closure>.<anonymous closure>
package:queuems/…/login/login_body.dart:163
E/flutter (21019): #5 _rootRunUnary (dart:async/zone.dart:1436:47)
E/flutter (21019): #6 _CustomZone.runUnary (dart:async/zone.dart:1335:19)
E/flutter (21019): <asynchronous suspension>
E/flutter (21019):