FirebaseMessaging.instance.getInitialMessage() not working with Splash Screen - flutter

I have integrated Firebase Cloud Messaging to my Flutter mobile app with the help of GetX State Management. Also I used Laravel with Firebase Admin SDK to send notification to my app.
The notification is working fine on both foreground state and background state (paused). The problem starts when I click the notification where the app is in terminated state (app closed). Do I have to set a delay between the splashscreen and main page?
I have tried to do this but error still occur
//open notif content from terminated state of the app
FirebaseMessaging.instance.getInitialMessage().then((message) {
if (message != null) {
print('TERMINATED');
if (FirebaseAuth.instance.currentUser != null) {
final redirectRoute = message.data['route'];
if (redirectRoute != null) {
//adding delay here since my splashscreen have the same delay
Future.delayed(const Duration(seconds: 6));
bottomnavbarController.updateIndex(int.parse(redirectRoute));
}
} else {
Get.offAllNamed(Routes.LOGIN);
}
}
});
I get this error
Unhandled Exception:
You are trying to use contextless
navigation without a GetMaterialApp or Get.key
Here is my main.dart
//open notif content from terminated state of the app
FirebaseMessaging.instance.getInitialMessage().then((message) {
if (message != null) {
if (FirebaseAuth.instance.currentUser == null) {
Get.offAllNamed(Routes.LOGIN);
} else {
final redirectRoute = message.data['route'];
if (redirectRoute != null) {
print('TERMINATED');
bottomnavbarController.updateIndex(int.parse(redirectRoute));
}
}
}
});
#override
Widget build(BuildContext context) {
final authController = Get.put(AuthController(), permanent: true);
return FutureBuilder(
future: Future.delayed(const Duration(seconds: 6)),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return Obx(
() => GetMaterialApp(
debugShowCheckedModeBanner: false,
title: "Application",
theme: ThemeData(
appBarTheme: const AppBarTheme(
elevation: 0.2,
foregroundColor: Colors.black,
backgroundColor: Colors.white),
),
initialRoute: authController.isSkipIntro.isTrue
? authController.isAuthAndVerified.isTrue
? Routes.PAGEWRAPPER
: Routes.LOGIN
: Routes.INTRODUCTION,
getPages: AppPages.routes,
),
);
}
return FutureBuilder(
future: authController.firstInitialize(),
builder: (context, snapshot) {
return const SplashScreen();
},
);
},
);
}
Here is my bottom nav controller
class BottomnavbarController extends GetxController {
final bottomNavIndex = 0.obs;
void updateIndex(int index){
bottomNavIndex.value = index;
Get.offAllNamed(Routes.PAGEWRAPPER);
}
}
Here's the log
Launching lib\main.dart on RNE L22 in release mode...
Running Gradle task 'assembleRelease'... 76.4s
√ Built build\app\outputs\flutter-apk\app-release.apk (10.0MB).
Installing build\app\outputs\flutter-apk\app.apk... 3.4s
Flutter run key commands.
h List all available interactive commands.
c Clear the screen
q Quit (terminate the application on the device).
W/FlutterJNI(10061): FlutterJNI.loadLibrary called more than once
W/FlutterJNI(10061): FlutterJNI.prefetchDefaultFontManager called more than once
W/FlutterJNI(10061): FlutterJNI.init called more than once
W/FlutterJNI(10239): FlutterJNI.loadLibrary called more than once
W/FlutterJNI(10239): FlutterJNI.init called more than once
I/flutter (10239): Handling a background message: 0:1646807530074172%f77b2610f77b2610
I/flutter (10239): TERMINATED
E/flutter (10239): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: You are trying to use contextless navigation without
E/flutter (10239): a GetMaterialApp or Get.key.
E/flutter (10239): If you are testing your app, you can use:
E/flutter (10239): [Get.testMode = true], or if you are running your app on
E/flutter (10239): a physical device or emulator, you must exchange your [MaterialApp]
E/flutter (10239): for a [GetMaterialApp].
E/flutter (10239):
E/flutter (10239): #0 GetNavigation.global (package:get/get_navigation/src/extension_navigation.dart:1094)
E/flutter (10239): #1 GetNavigation.offAllNamed (package:get/get_navigation/src/extension_navigation.dart:786)
E/flutter (10239): #2 BottomnavbarController.updateIndex (package:prototypeapp/app/modules/bottomnavbar/controllers/bottomnavbar_controller.dart:9)
E/flutter (10239): #3 _MyAppState.initState.<anonymous closure> (package:prototypeapp/main.dart:64)
E/flutter (10239): #4 _rootRunUnary (dart:async/zone.dart:1434)
E/flutter (10239): <asynchronous suspension>
E/flutter (10239):
I/flutter (10239): Null check operator used on a null value
I/flutter (10239): #0 PageRedirect.page (package:get/get_navigation/src/routes/route_middleware.dart:199)
I/flutter (10239): #1 GetMaterialApp.initialRoutesGenerate (package:get/get_navigation/src/root/get_material_app.dart:348)
I/flutter (10239): #2 _WidgetsAppState.build.<anonymous closure> (package:flutter/src/widgets/app.dart:1556)
I/flutter (10239): #3 NavigatorState.restoreState (package:flutter/src/widgets/navigator.dart:3290)
I/flutter (10239): #4 RestorationMixin._doRestore (package:flutter/src/widgets/restoration.dart:887)
I/flutter (10239): #5 RestorationMixin.didChangeDependencies (package:flutter/src/widgets/restoration.dart:873)
I/flutter (10239): #6 NavigatorState.didChangeDependencies (package:flutter/src/widgets/navigator.dart:3336)
I/flutter (10239): #7 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4914)
I/flutter (10239): #8 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #9 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #10 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #11 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #12 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #13 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #14 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #15 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #16 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #17 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #18 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #19 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #20 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #21 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #22 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #23 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #24 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #25 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #26 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #27 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #28 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #29 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #30 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #31 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #32 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #33 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #34 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #35 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #36 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #37 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #38 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #39 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #40 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #41 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #42 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #43 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #44 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #45 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #46 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #47 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #48 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #49 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #50 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #51 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #52 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #53 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #54 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #55 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #56 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #57 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #58 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #59 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #60 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928)
I/flutter (10239): #61 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #62 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #63 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4919)
I/flutter (10239): #64 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #65 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #66 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #67 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #68 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #69 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #70 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #71 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #72 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #73 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #74 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928)
I/flutter (10239): #75 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #76 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #77 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4919)
I/flutter (10239): #78 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #79 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #80 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #81 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #82 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #83 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #84 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #85 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #86 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #87 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #88 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #89 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #90 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #91 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #92 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #93 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #94 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #95 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #96 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #97 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #98 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #99 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)

I have solved this problem with an alternative solution for now.
Here is the main.dart
#override
void initState() {
super.initState();
//open notif content from terminated state of the app
FirebaseMessaging.instance.getInitialMessage().then((message) {
if (message != null) {
print('TERMINATED');
final redirectRoute = message.data['route'];
print('redirectRoute $redirectRoute');
bottomnavbarController.updateIndex(int.parse(redirectRoute));
//remove redirect route here, so the unknownRoute will trigger the default route
}
});
//only works if app in foreground
FirebaseMessaging.onMessage.listen((message) {
LocalNotificationService.display(message);
});
//onclick notif system tray only works if app in background but not termi
FirebaseMessaging.onMessageOpenedApp.listen((message) {
final redirectRoute = message.data['route'];
if (redirectRoute != null) {
print('BACKGROUND');
print('redirectRoute $redirectRoute');
bottomnavbarController.updateIndex(int.parse(redirectRoute));
Get.offAllNamed(Routes.PAGEWRAPPER);
}
});
}
#override
Widget build(BuildContext context) {
final authController = Get.put(AuthController(), permanent: true);
return FutureBuilder(
future: Future.delayed(const Duration(seconds: 6)),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return Obx(
() => GetMaterialApp(
debugShowCheckedModeBanner: false,
title: "Application",
theme: ThemeData(
appBarTheme: const AppBarTheme(
elevation: 0.2,
foregroundColor: Colors.black,
backgroundColor: Colors.white),
),
initialRoute: authController.isSkipIntro.isTrue
? authController.isAuthAndVerified.isTrue
? Routes.PAGEWRAPPER
: Routes.LOGIN
: Routes.INTRODUCTION,
getPages: AppPages.routes,
unknownRoute: authController.isAuthAndVerified.isTrue ? AppPages.routes[11] : AppPages.routes[1],
),
);
}
return FutureBuilder(
future: authController.firstInitialize(),
builder: (context, snapshot) {
return const SplashScreen();
},
);
},
);
}
I added this unknownRoute: on GetMaterialApp if the route is null which passing an array to the index of pagewrapper o login page inside AppPages class since the route in getInitialMessage() returns null.
I have define using Get.key and still returns null. Maybe app_routes.dart is not created yet before GetMaterialApp. Maybe that is why it returns null.
I still don't know why this is happening. Maybe it is a bug for GetX plugin. Anyway, this still works for me since I have updated the bottom nav index.

Related

'stream "messagestream" has not been initialized' error

I'm creating a messaging system for my app, which uses the stream "messageStream", which I use first here:
class _chatscreenstate extends State<chatscreen> {
late String chatroomId = ' ';
late String messageId = '';
late String myName;
late String myProfilePic = "";
late Stream<QuerySnapshot> messageStream;
TextEditingController messageTextEditingController = TextEditingController();
Just as a sidenote, none of the code I have posted here gives any errors, the errors occur only when the program is run and tries to build the stream.
I also use the messagestream in this widget:
Widget chatmessages() {
return StreamBuilder<QuerySnapshot>(
stream: messageStream,
builder: (context, AsyncSnapshot snapshot) {
return snapshot.hasData
? ListView.builder(
padding: EdgeInsets.only(bottom: 70, top: 16),
itemCount: snapshot.data?.docs.length,
itemBuilder: (context, index) {
DocumentSnapshot ds = snapshot.data!.docs[index];
return chatMessageTile(
ds["message"], username.value == ds["sendbyme"]);
})
: Center(child: CircularProgressIndicator());
});
}
Which takes another widget "chatMessageTile" which contains the data in the textbubbles which will be used to build the list. Here is where I am getting the data:
getAndSendMessages() async {
messageStream = await database().getChatRoomMessages(chatroomId);
}
doThisOnLaunch() async {
await getMyInfoFromSharedPreference();
getAndSendMessages();
}
#override
void initState() {
doThisOnLaunch();
super.initState();
}
This concludes all the places that I've used messageStream in my code.
When I tried running it, I get the error:
The following LateError was thrown building chatscreen(dirty, dependencies: [_InheritedTheme,
_LocalizationsScope-[GlobalKey#d42c2]], state: _chatscreenstate#c4a8c):
LateInitializationError: Field 'messageStream' has not been initialized.
The relevant error-causing widget was:
chatscreen
chatscreen:file:///Users/jshen/Documents/GitHub/TwoCents/twocents_app/lib/josh/twocentsmessaging/messagehome.dart:331:63
When the exception was thrown, this was the stack:
#0 _chatscreenstate.messageStream (package:twocents_app/josh/twocentsmessaging/Chatscreen.dart)
#1 _chatscreenstate.chatmessages (package:twocents_app/josh/twocentsmessaging/Chatscreen.dart:120:17)
#2 _chatscreenstate.build (package:twocents_app/josh/twocentsmessaging/Chatscreen.dart:180:26)
#3 StatefulElement.build (package:flutter/src/widgets/framework.dart:4992:27)
#4 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4878:15)
#5 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#6 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#7 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4859:5)
#8 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5041:11)
#9 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4853:5)
... Normal element mounting (24 frames)
#33 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3863:16)
#34 MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6435:36)
#35 MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6447:32)
... Normal element mounting (175 frames)
#210 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3863:16)
#211 MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6435:36)
#212 Element.updateChild (package:flutter/src/widgets/framework.dart:3592:18)
#213 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5964:32)
#214 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6460:17)
#215 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#216 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#217 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#218 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#219 StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
#220 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#221 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#222 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#223 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#224 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#225 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#226 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#227 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#228 _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:107:11)
#229 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#230 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6307:14)
#231 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#232 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#233 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#234 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#235 StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
#236 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#237 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6307:14)
#238 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#239 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6307:14)
#240 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#241 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#242 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#243 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#244 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#245 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#246 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#247 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#248 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2667:19)
#249 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:882:21)
#250 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:378:5)
#251 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1175:15)
#252 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1104:9)
#253 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1015:5)
#254 _invoke (dart:ui/hooks.dart:148:13)
#255 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:318:5)
#256 _drawFrame (dart:ui/hooks.dart:115:31)
════════════════════════════════════════════════════════════════════════════════════════════════════
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: type 'Future<dynamic>' is not a subtype of type 'Stream<QuerySnapshot<Object?>>'
#0 _chatscreenstate.getAndSendMessages (package:twocents_app/josh/twocentsmessaging/Chatscreen.dart:136:5)
#1 _chatscreenstate.doThisOnLaunch (package:twocents_app/josh/twocentsmessaging/Chatscreen.dart:141:5)
<asynchronous suspension>
And the Iphone simulator shows the red screen with yellow text saying : "Field messageStream has not been initialized". I'm not sure why since I declared the stream as "late", and nothing I've found online fixes it. Any ideas?
doThisOnLaunch is an async function, you are not awaiting its call in initState. So initState will not wait until the call to doThisOnLaunch is finished.
You can't make the initState async, so i suggest moving the initialization code to didChangeDependencies which can be async
bool _isInitialized = false;
#override
void didChangeDependencies() {
super.didChangeDependencies();
if (!_isInitialized) {
await doThisOnLaunch();
_isInitialized = true;
}
}

Getting a black screen when using provider in Flutter to change layout after logging in

I'm using provider to handle User login in a Flutter app. I created a class called AccountManager that extends ChangeNotifier and updates a boolean that tells my main Scaffold which of two widgets to use to draw its contents.
When the app starts, I'm not logged in and it loads NotLoggedInLayout() properly, which has a form to log in. I enter my credentials, log in using the AccountManager which in turn calls notifyListeners() and tells my Consumer to redraw and change to LoggedInLayout(). I can see that it redraws to the correct screen for a short moment but then a black screen covers everything.
After that, if I press "R" to reload the app, it shows LoggedInLayout() properly because it remembers the login. But if I press "r" to hot reload, I get this error in the terminal:
Performing hot reload... ⢿
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY
╞═══════════════════════════════════════════════════════════
The following assertion was thrown building
Navigator-[GlobalObjectKey<NavigatorState>
_WidgetsAppState#1e7c5](dirty, dependencies: [HeroControllerScope,
UnmanagedRestorationScope],
state: NavigatorState#c9fc1(tickers: tracking 0 tickers)):
'package:flutter/src/widgets/navigator.dart': Failed assertion: line 5308 pos 12:
'_history.isNotEmpty': is not true.
Either the assertion indicates an error in the framework itself, or we should
provide substantially
more information in this error message to help you determine and fix the
underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
https://github.com/flutter/flutter/issues/new?template=2_bug.md
The relevant error-causing widget was:
MaterialApp file:///home/bruno/Desarrollo/TinviTo/creators/lib/main.dart:20:14
When the exception was thrown, this was the stack:
#2 NavigatorState.build (package:flutter/src/widgets/navigator.dart:5308:12)
#3 StatefulElement.build
(package:flutter/src/widgets/framework.dart:4710:27)
#4 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4593:15)
#5 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#6 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#7 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#8 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#9 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#10 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#11 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#12 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#13 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#14 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#15 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#16 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#17 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#18 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#19 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#20 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#21 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#22 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#23 StatelessElement.update
(package:flutter/src/widgets/framework.dart:4674:5)
#24 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#25 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#26 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#27 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#28 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#29 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#30 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#31 StatelessElement.update
(package:flutter/src/widgets/framework.dart:4674:5)
#32 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#33 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#34 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#35 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#36 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#37 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#38 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#39 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#40 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#41 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#42 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#43 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#44 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#45 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#46 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#47 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#48 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#49 StatelessElement.update
(package:flutter/src/widgets/framework.dart:4674:5)
#50 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#51 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#52 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#53 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#54 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#55 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#56 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#57 StatelessElement.update
(package:flutter/src/widgets/framework.dart:4674:5)
#58 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#59 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#60 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#61 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#62 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#63 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#64 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#65 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#66 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#67 SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6114:14)
#68 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#69 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#70 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#71 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#72 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#73 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#74 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#75 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#76 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#77 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#78 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#79 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#80 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#81 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#82 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#83 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#84 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#85 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#86 _InheritedNotifierElement.update
(package:flutter/src/widgets/inherited_notifier.dart:181:11)
#87 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#88 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#89 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#90 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#91 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#92 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#93 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#94 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#95 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#96 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#97 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#98 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#99 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#100 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#101 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#102 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#103 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#104 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#105 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#106 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#107 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#108 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#109 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#110 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#111 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#112 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#113 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#114 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#115 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#116 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#117 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#118 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#119 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#120 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#121 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#122 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#123 _InheritedNotifierElement.update
(package:flutter/src/widgets/inherited_notifier.dart:181:11)
#124 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#125 SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6114:14)
#126 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#127 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#128 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#129 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#130 _InheritedNotifierElement.update
(package:flutter/src/widgets/inherited_notifier.dart:181:11)
#131 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#132 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#133 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#134 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#135 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#136 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#137 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#138 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#139 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#140 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#141 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#142 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#143 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#144 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#145 _InheritedNotifierElement.update
(package:flutter/src/widgets/inherited_notifier.dart:181:11)
#146 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#147 SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6114:14)
#148 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#149 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#150 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#151 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#152 _InheritedNotifierElement.update
(package:flutter/src/widgets/inherited_notifier.dart:181:11)
#153 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#154 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#155 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#156 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#157 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#158 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#159 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#160 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#161 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#162 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#163 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#164 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#165 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#166 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#167 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#168 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#169 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#170 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#171 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#172 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#173 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#174 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#175 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#176 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#177 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#178 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#179 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#180 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#181 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#182 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#183 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#184 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#185 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#186 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#187 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#188 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#189 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#190 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#191 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#192 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#193 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#194 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#195 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#196 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#197 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#198 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#199 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#200 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#201 _InheritedProviderScopeElement.performRebuild
(package:provider/src/inherited_provider.dart:456:11)
#202 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#203 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#204 _InheritedProviderScopeElement.update
(package:provider/src/inherited_provider.dart:477:11)
#205 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#206 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#207 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#208 StatelessElement.update
(package:flutter/src/widgets/framework.dart:4674:5)
#209 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#210 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#211 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#212 StatelessElement.update
(package:flutter/src/widgets/framework.dart:4674:5)
#213 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#214 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#215 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#216 StatelessElement.update
(package:flutter/src/widgets/framework.dart:4674:5)
#217 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#218 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#219 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#220 BuildOwner.buildScope
(package:flutter/src/widgets/framework.dart:2582:33)
#221 WidgetsBinding.drawFrame
(package:flutter/src/widgets/binding.dart:875:21)
#222 RendererBinding._handlePersistentFrameCallback
(package:flutter/src/rendering/binding.dart:328:5)
#223 SchedulerBinding._invokeFrameCallback
(package:flutter/src/scheduler/binding.dart:1144:15)
#224 SchedulerBinding.handleDrawFrame
(package:flutter/src/scheduler/binding.dart:1082:9)
#225 SchedulerBinding.scheduleWarmUpFrame.<anonymous closure>
(package:flutter/src/scheduler/binding.dart:865:7)
(elided 6 frames from class _AssertionError, class _RawReceivePortImpl, class
_Timer, and dart:async-patch)
It seems like my provider somehow its messing with the Navigator, but I can't seem to find the cause.
This is my main code:
import 'package:creators/layouts/LoggedIn.dart';
import 'package:creators/layouts/NotLoggedIn.dart';
import 'package:creators/providers/AccountManager.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
#override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider<AccountManager>(
create: (_) => AccountManager(),
),
],
child: MaterialApp(
title: 'App Title',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(
title: 'App Title',
),
debugShowCheckedModeBanner: false,
),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
#override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
#override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Consumer<AccountManager>(
builder: (context, manager, child) {
bool isLoggedIn = manager.isLoggedIn;
return (isLoggedIn) ? LoggedInLayout() : NotLoggedInLayout();
},
),
);
}
}
And this is the AccountManager class:
import 'dart:convert';
import 'package:creators/models/User.dart';
import 'package:creators/services/AccountService.dart';
import 'package:flutter/foundation.dart';
import 'package:shared_preferences/shared_preferences.dart';
class AccountManager with ChangeNotifier {
User? _user;
User? get user => _user;
bool get isLoggedIn => _user != null;
AccountManager() {
// Inicializar variables desde la base de datos
_initData();
}
void _initData() async {
await this.loadUser();
notifyListeners();
}
Future localLogin({
required String email,
required String password,
}) async {
var result = await AccountService.localLogin(
email: email,
password: password,
);
if (result.statusCode == 200) {
String sBody = result.body;
Map<String, dynamic> body = jsonDecode(sBody);
User user = new User(
body['name'],
body['email'],
body['role'],
body['token'],
);
_user = user;
await this.saveUser();
notifyListeners();
} else {
String error = jsonDecode(result.body)['message'] ?? 'Error desconocido.';
throw Exception(error);
}
}
Future localRegister({
required String name,
required String email,
required String password,
}) async {
var result = await AccountService.localRegister(
name: name,
email: email,
password: password,
);
if (result.statusCode == 200) {
String sBody = result.body;
Map<String, dynamic> body = jsonDecode(sBody);
User user = new User(
body['name'],
body['email'],
body['role'],
body['token'],
);
_user = user;
await this.saveUser();
notifyListeners();
} else {
String error = jsonDecode(result.body)['message'] ?? 'Error desconocido.';
throw Exception(error);
}
}
saveUser() async {
if (_user != null) {
String bodySerialized = jsonEncode(_user!.toJson());
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('user', bodySerialized);
}
}
loadUser() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String? sBody = prefs.getString('user');
if (sBody != null) {
Map<String, dynamic> body = jsonDecode(sBody);
User user = new User(
body['name'],
body['email'],
body['role'],
body['token'],
);
_user = user;
}
}
void deleteUser() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.remove('user');
}
void logout() {
_user = null;
this.deleteUser();
notifyListeners();
}
}
When I restart the app and it's logged in (showing LoggedInLayout()) I can press the logout button and it properly changes to NotLoggedInLayout() without the black screen. So it seems like the error only happens when I log in and not when I log out.
It's embarassing, but I found out what was happening. It was because I was popping the screen from the Navigator after logging in. I copied the form from another project of mine that didn't change the screen using provider and used Navigator.pop() instead. So my code looked like this:
await accountManager.localLogin(
email: email,
password: password,
);
Navigator.pop(context);
Since now I changed the layout using Provider and Consumer, the Navigator.pop() was not needed anymore. It was popping my first Scaffold, thus the black screen. The solution was to remove the Navigator.pop(context) line.

Flutter & Ethereum : Unhandled Exception: RangeError: Value not in range: 32

I am trying to make a simple Decentralization Application with flutter and Ethereum. But I keep on getting this error. It was working fine. Please have a look at my code and my error
I use :
Flutter
Remix Ethereum
MetaMask => Rinkeby
Infua.io
Question : Why do I get this RangerError?
Solidity
pragma solidity 0.6.6;
contract PKCoin{
int balance;
constructor() public {
balance = 0;
}
function getBalance() view public returns(int) {
return balance;
}
function depositBalance(int amount) public {
balance = balance + amount;
}
function withdrawBalance(int amount) public {
balance = balance - amount;
}
}
Flutter
#override
void initState() {
super.initState();
httpClient = Client();
// print(httpClient);
ethClient = Web3Client(
"https://rinkeby.infura.io/v3/b2a9d5831e3b4675a51144cfed03bafa",
httpClient);
getBalance(myAddress);
}
Future<DeployedContract> loadContract() async {
String abi = await rootBundle.loadString("assets/abi.json");
String contractAddress = "0xd9145CCE52D386f254917e481eB44e9943F39138";
final contract = DeployedContract(ContractAbi.fromJson(abi, "PKCoin"),
EthereumAddress.fromHex(contractAddress));
return contract;
}
// ==== This is to get the information only ==== //
// ==== Get method ==== //
Future<List<dynamic>> query(String functionName, List<dynamic> args) async {
//
final contract = await loadContract();
final ethFunction = contract.function(functionName);
// This line below doesn't work.
final result = await ethClient.call(
contract: contract, function: ethFunction, params: args);
// print(result.toString());
return result;
}
Future<void> getBalance(String targetAddress) async {
// EthereumAddress address = EthereumAddress.fromHex(targetAddress);
List<dynamic> result = await query("getBalance", []);
print('In getGreeting');
print(result[0]);
setState(() {
myData = result[0];
data = true;
});
}
Error
Performing hot restart...
Restarted application in 950ms.
E/flutter (28032): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: RangeError: Value not in range: 32
E/flutter (28032): #0 _rangeCheck (dart:typed_data-patch/typed_data_patch.dart:4807:5)
E/flutter (28032): #1 _ByteBuffer.asUint8List (dart:typed_data-patch/typed_data_patch.dart:1940:5)
E/flutter (28032): #2 _IntTypeBase.decode (package:web3dart/src/contracts/abi/integers.dart:23:31)
E/flutter (28032): #3 TupleType.decode (package:web3dart/src/contracts/abi/tuple.dart:102:29)
E/flutter (28032): #4 ContractFunction.decodeReturnValues (package:web3dart/src/contracts/abi/abi.dart:255:30)
E/flutter (28032): #5 Web3Client.call (package:web3dart/src/core/client.dart:310:21)
E/flutter (28032): <asynchronous suspension>
E/flutter (28032): #6 _MyHomePageState.query (package:greeting_blockchain/main.dart:70:36)
E/flutter (28032): <asynchronous suspension>
E/flutter (28032): #7 _MyHomePageState.getBalance (package:greeting_blockchain/main.dart:79:34)
E/flutter (28032): #8 _MyHomePageState.initState (package:greeting_blockchain/main.dart:48:5)
E/flutter (28032): #9 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4765:58)
E/flutter (28032): #10 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
E/flutter (28032): #11 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (28032): #12 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (28032): #13 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6118:14)
E/flutter (28032): #14 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (28032): #15 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (28032): #16 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (28032): #17 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (28032): #18 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4606:5)
E/flutter (28032): #19 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
E/flutter (28032): #20 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (28032): #21 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (28032): #22 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6118:14)
E/flutter (28032): #23 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (28032): #24 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (28032): #25 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6118:14)
E/flutter (28032): #26 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (28032): #27 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (28032): #28 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (28032): #29 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (28032): #30 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (28032): #31 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4606:5)
E/flutter (28032): #32 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4791:11)
E/flutter (28032): #33 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
E/flutter (28032): #34 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (28032): #35 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (28032): #36 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6118:14)
E/flutter (28032): #37 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (28032): #38 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (28032): #39 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6118:14)
E/flutter (28032): #40 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (28032): #41 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (28032): #42 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (28032): #43 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (28032): #44 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (28032): #45 ComponentElement._firstBuild (package:flutter/src/widgets/framework.d
Conclusion
Please take a look at my code and I am looking forward to see all of your answers. Thank you in advance.
Un-comment //EthereumAddress address = EthereumAddress.fromHex(targetAddress);
Future<void> getBalance(String targetAddress) async {
EthereumAddress address = EthereumAddress.fromHex(targetAddress);
List<dynamic> result = await query("getBalance", []);
print('In getGreeting');
print(result[0]);
setState(() {
myData = result[0];
data = true;
});
}

Unhandled Exception: NoSuchMethodError: The getter 'length' was called on null. Shared Preference

While fetching the data for the first time from shared preference, I am getting this error: Unhandled Exception: NoSuchMethodError: The getter 'length' was called on null. But after the hot restart, I am getting the data as usual.
Retrieving data from Dashboard Screen
loadSharedPrefs() async {
var decodedData = await sharedPref.read("details");
signInItem = SignInItem.fromJson(decodedData);
setState(() {});
}
Saving data in SignIn screen
await FirebaseAuth.instance
.signInWithCredential(_phoneAuthCredential)
.then((AuthResult authRes) {
Navigator.pop(context);
Flushbar(
message: "Verified!!",
duration: Duration(seconds: 2),
)..show(context);
sharedPref.save("details", signInItem);
Navigator.popAndPushNamed(context, DashboardScreen.id);
});
Model Class
class SignInItem {
String phoneNumber;
String schoolCode;
String schoolReference;
Map<String, dynamic> teacherData;
String error;
SignInItem.fromJson(Map<String, dynamic> json)
: phoneNumber = json['phoneNumber'],
schoolCode = json['schoolCode'],
schoolReference = json['schoolReference'],
teacherData = json['teacherData'],
error = json['error'];
Map<String, dynamic> toJson() => {
'phoneNumber': phoneNumber,
'schoolCode': schoolCode,
'schoolReference': schoolReference,
'teacherData': teacherData,
'error': error,
};
SignInItem(
{this.phoneNumber,
this.schoolCode,
this.schoolReference,
this.teacherData,
this.error});
}
Shared preference helper class
class SharedPref {
read(String key) async {
final prefs = await SharedPreferences.getInstance();
return json.decode(prefs.getString(key));
}
save(String key, SignInItem signInItem) async {
final prefs = await SharedPreferences.getInstance();
prefs.setString(key, json.encode(signInItem.toJson()));
}
}
Detail Stacktrace
[ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: NoSuchMethodError: The getter 'length' was called on null.
E/flutter (19241): Receiver: null
E/flutter (19241): Tried calling: length
E/flutter (19241): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
E/flutter (19241): #1 _parseJson (dart:convert-patch/convert_patch.dart:39:28)
E/flutter (19241): #2 JsonDecoder.convert (dart:convert/json.dart:505:36)
E/flutter (19241): #3 JsonCodec.decode (dart:convert/json.dart:156:41)
E/flutter (19241): #4 SharedPref.read (package:teacher_app/constants.dart:156:17)
E/flutter (19241): <asynchronous suspension>
E/flutter (19241): #5 _DashboardScreenState.loadSharedPrefs (package:teacher_app/screens/dashboard_screen.dart:33:40)
E/flutter (19241): #6 _DashboardScreenState.initState (package:teacher_app/screens/dashboard_screen.dart:49:5)
E/flutter (19241): #7 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4684:58)
E/flutter (19241): #8 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4520:5)
E/flutter (19241): #9 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3490:14)
E/flutter (19241): #10 Element.updateChild (package:flutter/src/widgets/framework.dart:3258:18)
E/flutter (19241): #11 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5874:14)
E/flutter (19241): #12 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3490:14)
E/flutter (19241): #13 Element.updateChild (package:flutter/src/widgets/framework.dart:3258:18)
E/flutter (19241): #14 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
E/flutter (19241): #15 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
E/flutter (19241): #16 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4525:5)
E/flutter (19241): #17 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4520:5)
E/flutter (19241): #18 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3490:14)
E/flutter (19241): #19 Element.updateChild (package:flutter/src/widgets/framework.dart:3258:18)
E/flutter (19241): #20 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5874:14)
E/flutter (19241): #21 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3490:14)
E/flutter (19241): #22 Element.updateChild (package:flutter/src/widgets/framework.dart:3258:18)
E/flutter (19241): #23 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5874:14)
E/flutter (19241): #24 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3490:14)
E/flutter (19241): #25 Element.updateChild (package:flutter/src/widgets/framework.dart:3258:18)
E/flutter (19241): #26 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
E/flutter (19241): #27 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
E/flutter (19241): #28 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
E/flutter (19241): #29 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4525:5)
E/flutter (19241): #30 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4710:11)
E/flutter (19241): #31 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4520:5)
E/flutter (19241): #32 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3490:14)
E/flutter (19241): #33 Element.updateChild (package:flutter/src/widgets/framework.dart:3258:18)
E/flutter (19241): #34 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5874:14)
E/flutter (19241): #35 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3490:14)
E/flutter (19241): #36 Element.updateChild (package:flutter/src/widgets/framework.dart:3258:18)
E/flutter (19241): #37 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5874:14)
E/flutter (19241): #38 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3490:14)
E/flutter (19241): #39 Element.updateChild (package:flutter/src/widgets/framework.dart:3258:18)
E/flutter (19241): #40 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
E/flutter (19241): #41 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
E/flutter (19241): #42 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
E/flutter (19241): #43 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4525:5)
E/flutter (19241): #44 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4710:11)
E/flutter (19241): #45 ComponentElement.mount (package:flutter/src/widgets/framework.dart
Shared Preference takes time to save the details and I was fetching the data before saving it. So that's why I was getting null.
I solved it by delaying to navigate to Dashboard screen by this:
await FirebaseAuth.instance
.signInWithCredential(_phoneAuthCredential)
.then((AuthResult authRes) {
sharedPref.save("details", signInItem);
Timer(Duration(seconds: 2), () {
Navigator.pop(context);
Navigator.popAndPushNamed(context, DashboardScreen.id);
});
});
But thanks #TheSohan for letting me know where I was getting null.
In SharedPref class read method; use a null check before decoding the data.
Ex:
class SharedPref {
read(String key) async {
final prefs = await SharedPreferences.getInstance();
string data = prefs.getString(key)
if(data){
return json.decode(prefs.getString(key));
}
return data
}
similarly, add null check in loadSharedPrefs method.
loadSharedPrefs() async {
var decodedData = await sharedPref.read("details");
if(decodedData){
signInItem = SignInItem.fromJson(decodedData);
}
setState(() {});
}

FutureBuilder snapshot returning null, possible json parsing failure

I am trying to render a list based on an API response. Here is the model :
class ProductModel {
final int id;
final String name;
final String nameBn;
final String price;
final String priceBn;
final bool oldPrice;
final String oldPriceVal;
final String oldPriceValBn;
final List<ImageBunny> image;
final String slug;
final String shortDescriptionOpt;
final String shortDescription;
final String shortDescriptionBn;
final int maxItem;
final bool size;
final List<String> sizeList;
final bool color;
final List<String> colorList;
final bool unit;
final String unitBn;
final String unitEn;
final int ranking;
ProductModel(
{this.id,
this.name,
this.nameBn,
this.price,
this.priceBn,
this.oldPrice,
this.oldPriceVal,
this.oldPriceValBn,
this.image,
this.slug,
this.shortDescriptionOpt,
this.shortDescription,
this.shortDescriptionBn,
this.maxItem,
this.color,
this.colorList,
this.ranking,
this.size,
this.sizeList,
this.unit,
this.unitBn,
this.unitEn
});
}
and the listview component:
class Products extends StatelessWidget {
#override
Widget build(BuildContext context) {
return _buildProductsListPage();
}
_buildProductsListPage() {
return Container(
color: Colors.grey[100],
child: FutureBuilder<List<ProductModel>>(
future: _parseProductsFromResponse(),
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.active:
case ConnectionState.waiting:
return Center(child: CircularProgressIndicator());
case ConnectionState.none:
return Center(child: Text("Unable to connect right now"));
case ConnectionState.done:
return ListView.builder(
itemCount: 18,
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemBuilder: (context, index) {
print(index);
print(snapshot.data);
return ProductComponent(
product1: snapshot.data[index - 1],
product2: snapshot.data[index],
);
},
);
}
},
),
);
}
Future<dynamic> _getProducts() async {
var response = await http.get('https://example.com/api/featured/').catchError(
(error) {
return false;
},
);
return json.decode(response.body);
}
Future<List<ProductModel>> _parseProductsFromResponse() async {
List<ProductModel> productsList = <ProductModel>[];
var dataFromResponse = await _getProducts();
dataFromResponse['results'].forEach(
(newProduct) {
//print(newProduct);
//parse the product's images
List<ImageBunny> imagesOfProductList = [];
print("hit 1");
newProduct["image"].forEach(
(newImage) {
print("hit 2");
imagesOfProductList.add(
new ImageBunny(
imageMobileFeatureList: newImage["imageMobileFeatureList"],
imageMobileProductDetails: newImage["imageMobileProductDetails"],
),
);
},
);
// parse Size List
List<String> sizeList = [];
newProduct["size_list"].forEach((value) {
print("hit 3");
sizeList.add(value);
});
print("hit 4");
// parse Color List
List<String> colorList = [];
newProduct["color_list"].forEach((value) {
print("hit 5");
var color = value.toString();
var colorVal = color.substring(1, color.length);
colorList.add(colorVal);
});
print("hit 6");
//parse new product's details
ProductModel product = ProductModel(
id: int.tryParse(newProduct["id"]),
name: newProduct["name"].toString(),
nameBn: newProduct["name_bn"].toString(),
price: newProduct["price"].toString(),
priceBn: newProduct["price_bn"].toString(),
oldPrice: newProduct["old_price"],
oldPriceVal: newProduct["old_price_val"] != null? newProduct["old_price_val"].toString(): "",
oldPriceValBn: newProduct["old_price_val_bn"] != null? newProduct["old_price_val_bn"].toString(): "",
slug: newProduct["slug"].toString(),
shortDescriptionOpt: newProduct["short_description_opt"],
shortDescription: newProduct["short_description"].toString(),
shortDescriptionBn: newProduct["short_description_bn"].toString(),
maxItem: newProduct["max_item"],
size: newProduct["size"],
sizeList: sizeList,
color: newProduct["color"],
colorList: colorList,
unit: newProduct["unit"],
unitBn: newProduct["unit_bn"] != null? newProduct["unit_bn"].toString() : "",
unitEn: newProduct["unit_en"] != null? newProduct["unit_en"].toString() : "",
ranking: newProduct["ranking"],
image: imagesOfProductList,
);
print("hit 7");
productsList.add(product);
},
);
print(productsList);
return productsList;
}
}
and the terminal output:
I/flutter (14968): hit 1
I/flutter (14968): hit 2
I/flutter (14968): hit 4
I/flutter (14968): hit 6
I/flutter (14968): 0
I/flutter (14968): null
I/flutter (14968): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (14968): The following NoSuchMethodError was thrown building:
I/flutter (14968): The method '[]' was called on null.
I/flutter (14968): Receiver: null
I/flutter (14968): Tried calling: [](-1)
I/flutter (14968):
I/flutter (14968): When the exception was thrown, this was the stack:
I/flutter (14968): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:50:5)
I/flutter (14968): #1 Products._buildProductsListPage.<anonymous closure>.<anonymous closure> (package:eknimishei/partials/products.dart:73:46)
I/flutter (14968): #2 SliverChildBuilderDelegate.build (package:flutter/src/widgets/sliver.dart:398:15)
I/flutter (14968): #3 SliverMultiBoxAdaptorElement._build.<anonymous closure> (package:flutter/src/widgets/sliver.dart:1006:67)
I/flutter (14968): #4 _HashMap.putIfAbsent (dart:collection-patch/collection_patch.dart:137:29)
I/flutter (14968): #5 SliverMultiBoxAdaptorElement._build (package:flutter/src/widgets/sliver.dart:1006:26)
I/flutter (14968): #6 SliverMultiBoxAdaptorElement.createChild.<anonymous closure> (package:flutter/src/widgets/sliver.dart:1019:55)
I/flutter (14968): #7 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2258:19)
I/flutter (14968): #8 SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:1012:11)
I/flutter (14968): #9 RenderSliverMultiBoxAdaptor._createOrObtainChild.<anonymous closure> (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:275:23)
I/flutter (14968): #10 RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:1740:58)
I/flutter (14968): #11 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:797:15)
I/flutter (14968): #12 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:1740:13)
I/flutter (14968): #13 RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:264:5)
I/flutter (14968): #14 RenderSliverMultiBoxAdaptor.addInitialChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:348:5)
I/flutter (14968): #15 RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:78:12)
I/flutter (14968): #16 RenderObject.layout (package:flutter/src/rendering/object.dart:1644:7)
I/flutter (14968): #17 RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:182:11)
I/flutter (14968): #18 RenderObject.layout (package:flutter/src/rendering/object.dart:1644:7)
I/flutter (14968): #19 RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:407:13)
I/flutter (14968): #20 RenderShrinkWrappingViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1651:12)
I/flutter (14968): #21 RenderShrinkWrappingViewport.performLayout (package:flutter/src/rendering/viewport.dart:1614:20)
I/flutter (14968): #22 RenderObject.layout (package:flutter/src/rendering/object.dart:1644:7)
I/flutter (14968): #23 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (14968): #24 RenderObject.layout (package:flutter/src/rendering/object.dart:1644:7)
I/flutter (14968): #25 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (14968): #26 RenderObject.layout (package:flutter/src/rendering/object.dart:1644:7)
I/flutter (14968): #27 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (14968): #28 RenderObject.layout (package:flutter/src/rendering/object.dart:1644:7)
I/flutter (14968): #29 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (14968): #30 RenderObject.layout (package:flutter/src/rendering/object.dart:1644:7)
I/flutter (14968): #31 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (14968): #32 RenderObject.layout (package:flutter/src/rendering/object.dart:1644:7)
I/flutter (14968): #33 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (14968): #34 RenderObject.layout (package:flutter/src/rendering/object.dart:1644:7)
I/flutter (14968): #35 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (14968): #36 RenderObject.layout (package:flutter/src/rendering/object.dart:1644:7)
I/flutter (14968): #37 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (14968): #38 RenderObject.layout (package:flutter/src/rendering/object.dart:1644:7)
I/flutter (14968): #39 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (14968): #40 RenderObject.layout (package:flutter/src/rendering/object.dart:1644:7)
I/flutter (14968): #41 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (14968): #42 RenderObject.layout (package:flutter/src/rendering/object.dart:1644:7)
I/flutter (14968): #43 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (14968): #44 RenderObject.layout (package:flutter/src/rendering/object.dart:1644:7)
I/flutter (14968): #45 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (14968): #46 RenderObject.layout (package:flutter/src/rendering/object.dart:1644:7)
I/flutter (14968): #47 RenderSliverList.performLayout.advance (package:flutter/src/rendering/sliver_list.dart:201:17)
I/flutter (14968): #48 RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:234:19)
I/flutter (14968): #49 RenderObject.layout (package:flutter/src/rendering/object.dart:1644:7)
I/flutter (14968): #50 RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:182:11)
I/flutter (14968): #51 RenderObject.layout (package:flutter/src/rendering/object.dart:1644:7)
I/flutter (14968): #52 RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:407:13)
I/flutter (14968): #53 RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1322:12)
I/flutter (14968): #54 RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1240:20)
I/flutter (14968): #55 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1519:7)
I/flutter (14968): #56 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:766:18)
I/flutter (14968): #57 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:347:19)
I/flutter (14968): #58 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:701:13)
I/flutter (14968): #59 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:286:5)
I/flutter (14968): #60 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1012:15)
I/flutter (14968): #61 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:952:9)
I/flutter (14968): #62 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:864:5)
I/flutter (14968): #66 _invoke (dart:ui/hooks.dart:219:10)
I/flutter (14968): #67 _drawFrame (dart:ui/hooks.dart:178:3)
I/flutter (14968): (elided 3 frames from package dart:async)
I/flutter (14968): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (14968): 1
I/flutter (14968): null
I/flutter (14968): Another exception was thrown: NoSuchMethodError: The method '[]' was called on null.
I/flutter (14968): 2
I/flutter (14968): null
I/flutter (14968): Another exception was thrown: NoSuchMethodError: The method '[]' was called on null.
So from terminal output , we can see its not printing hit 7 , so something wrong with json parsing.