Flicker drawer in app when I try to get user name from firebase
1,287
In initState, you are calling an async function _getCurrentUser. So, naturally this function will execute asynchronously while initState continues and the page is rendered with _uname as null.
Red screen is being displayed because of a null pointer exception being thrown when you are displaying the name.
Either initialize _uname with an empty string
String _uname = '';
or use null aware operator while displaying name
child: Text("Welcome " + _uname ?? '',
style: TextStyle(
color: Colors.white,
fontSize: 20.0,
fontWeight: FontWeight.w500))),
]));
Author by
Bohdan Natsevych
Updated on December 13, 2022Comments
-
Bohdan Natsevych over 1 year
I am building my first Flutter app with custom drawer. It should display "Welcome" + name_of_user in the header of the drawer. But when I try to retrieve user data from firebase it shows me red screen with errors for 1 second and then it behaves like normal. How can I fix that red screen?
FirebaseUser mCurrentUser; String _uname; FirebaseAuth _auth; DocumentReference ref; @override void initState() { super.initState(); _auth = FirebaseAuth.instance; _getCurrentUser(); } _getCurrentUser () async { mCurrentUser = await _auth.currentUser(); DocumentSnapshot item = await Firestore.instance.collection("users").document(mCurrentUser.uid).get(); //If //I delete this line everything works fine but I don't have user name. _uname = item['fname']; setState(() { }); }
Then I display name like this
child: Text("Welcome " + _uname, style: TextStyle( color: Colors.white, fontSize: 20.0, fontWeight: FontWeight.w500))), ]));
Console log
Launching lib\main.dart on Android SDK built for x86 in debug mode... Initializing gradle... Resolving dependencies... Running Gradle task 'assembleDebug'... registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection) registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection) registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection) Built build\app\outputs\apk\debug\app-debug.apk. Installing build\app\outputs\apk\app.apk... Syncing files to device Android SDK built for x86... D/EGL_emulation(22382): eglMakeCurrent: 0xd7f1a7e0: ver 3 1 (tinfo 0xd7f0f900) D/eglCodecCommon(22382): setVertexArrayObject: set vao to 0 (0) 1 0 W/DynamiteModule(22382): Local module descriptor class for providerinstaller not found. W/com.dsc.viu_ap(22382): Unsupported class loader I/DynamiteModule(22382): Considering local module com.google.android.gms.flags:3 and remote module com.google.android.gms.flags:3 I/DynamiteModule(22382): Selected local version of com.google.android.gms.flags I/DynamiteModule(22382): Considering local module providerinstaller:0 and remote module providerinstaller:0 W/ProviderInstaller(22382): Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0. D/ApplicationLoaders(22382): Returning zygote-cached class loader: /system/framework/android.hidl.base-V1.0-java.jar D/ApplicationLoaders(22382): Returning zygote-cached class loader: /system/framework/android.hidl.manager-V1.0-java.jar D/ApplicationLoaders(22382): Returning zygote-cached class loader: /system/framework/android.hidl.base-V1.0-java.jar I/com.dsc.viu_ap(22382): The ClassLoaderContext is a special shared library. W/BiChannelGoogleApi(22382): [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzak@a5e5857 I/com.dsc.viu_ap(22382): The ClassLoaderContext is a special shared library. I/com.dsc.viu_ap(22382): The ClassLoaderContext is a special shared library. I/com.dsc.viu_ap(22382): NativeAlloc concurrent copying GC freed 16121(979KB) AllocSpace objects, 13(376KB) LOS objects, 49% free, 1791KB/3583KB, paused 22.289ms total 224.233ms I/com.dsc.viu_ap(22382): The ClassLoaderContext is a special shared library. W/com.dsc.viu_ap(22382): Accessing hidden field Ldalvik/system/BaseDexClassLoader;->pathList:Ldalvik/system/DexPathList; (greylist, reflection, allowed) W/com.dsc.viu_ap(22382): Accessing hidden field Ldalvik/system/DexPathList;->nativeLibraryDirectories:Ljava/util/List; (greylist, reflection, allowed) W/com.dsc.viu_ap(22382): Accessing hidden field Ldalvik/system/DexPathList;->systemNativeLibraryDirectories:Ljava/util/List; (greylist, reflection, allowed) W/com.dsc.viu_ap(22382): Accessing hidden field Ldalvik/system/DexPathList;->nativeLibraryPathElements:[Ldalvik/system/DexPathList$NativeLibraryElement; (greylist, reflection, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Ldalvik/system/DexPathList;->makePathElements(Ljava/util/List;)[Ldalvik/system/DexPathList$NativeLibraryElement; (greylist, reflection, allowed) V/NativeCrypto(22382): Registering com/google/android/gms/org/conscrypt/NativeCrypto's 284 native methods... W/com.dsc.viu_ap(22382): Accessing hidden method Ljava/security/spec/ECParameterSpec;->getCurveName()Ljava/lang/String; (greylist, reflection, allowed) D/NetworkSecurityConfig(22382): No Network Security Config specified, using platform default I/ProviderInstaller(22382): Installed default security provider GmsCore_OpenSSL W/com.dsc.viu_ap(22382): Accessing hidden method Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (greylist,core-platform-api, linking, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Lsun/misc/Unsafe;->arrayBaseOffset(Ljava/lang/Class;)I (greylist,core-platform-api, linking, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Lsun/misc/Unsafe;->copyMemory(JJJ)V (greylist, linking, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Lsun/misc/Unsafe;->objectFieldOffset(Ljava/lang/reflect/Field;)J (greylist,core-platform-api, linking, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Lsun/misc/Unsafe;->getByte(J)B (greylist,core-platform-api, linking, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Lsun/misc/Unsafe;->getByte(Ljava/lang/Object;J)B (greylist,core-platform-api, linking, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Lsun/misc/Unsafe;->getLong(J)J (greylist,core-platform-api, linking, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Lsun/misc/Unsafe;->putByte(JB)V (greylist,core-platform-api, linking, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Lsun/misc/Unsafe;->putByte(Ljava/lang/Object;JB)V (greylist,core-platform-api, linking, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (greylist,core-platform-api, reflection, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (greylist,core-platform-api, reflection, allowed) W/com.dsc.viu_ap(22382): Accessing hidden field Ljava/nio/Buffer;->address:J (greylist, reflection, allowed) W/com.dsc.viu_ap(22382): Accessing hidden field Ljava/net/Socket;->impl:Ljava/net/SocketImpl; (greylist, reflection, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Ldalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard; (greylist,core-platform-api, linking, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Ldalvik/system/CloseGuard;->open(Ljava/lang/String;)V (greylist,core-platform-api, linking, allowed) W/com.dsc.viu_ap(22382): Accessing hidden field Ljava/io/FileDescriptor;->descriptor:I (greylist, JNI, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Ljava/security/spec/ECParameterSpec;->setCurveName(Ljava/lang/String;)V (greylist, reflection, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Lsun/security/x509/AlgorithmId;->get(Ljava/lang/String;)Lsun/security/x509/AlgorithmId; (greylist, reflection, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Lsun/security/x509/AlgorithmId;->getName()Ljava/lang/String; (greylist,core-platform-api, reflection, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Ldalvik/system/BlockGuard;->getThreadPolicy()Ldalvik/system/BlockGuard$Policy; (greylist,core-platform-api, linking, allowed) W/com.dsc.viu_ap(22382): Accessing hidden method Ldalvik/system/BlockGuard$Policy;->onNetwork()V (greylist, linking, allowed) W/BiChannelGoogleApi(22382): [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzak@a5e5857 D/FirebaseAuth(22382): Notifying id token listeners about user ( UhkwQ6lvz3ZwYoBdLH6zod0Li353 ). W/Firestore(22382): (19.0.0) [FirestoreCallCredentials]: Failed to get token: com.google.firebase.firestore.FirebaseFirestoreException: getToken aborted due to token change. I/flutter (22382): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════ I/flutter (22382): The following ArgumentError was thrown building AppDrawer(dirty, state: AppDrawerState#ebffb): I/flutter (22382): Invalid argument(s) I/flutter (22382): I/flutter (22382): When the exception was thrown, this was the stack: I/flutter (22382): #0 _StringBase.+ (dart:core-patch/string_patch.dart:260:57) I/flutter (22382): #1 AppDrawerState._createHeader (package:viu_app/widget/drawer.dart:110:38) I/flutter (22382): #2 AppDrawerState.build (package:viu_app/widget/drawer.dart:41:11) I/flutter (22382): #3 StatefulElement.build (package:flutter/src/widgets/framework.dart:4012:27) I/flutter (22382): #4 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3924:15) I/flutter (22382): #5 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #6 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3907:5) I/flutter (22382): #7 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4053:11) I/flutter (22382): #8 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3902:5) I/flutter (22382): #9 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14) I/flutter (22382): #10 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12) I/flutter (22382): #11 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16) I/flutter (22382): #12 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #13 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3907:5) I/flutter (22382): #14 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3902:5) I/flutter (22382): #15 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14) I/flutter (22382): #16 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12) I/flutter (22382): #17 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5092:14) I/flutter (22382): #18 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14) I/flutter (22382): #19 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12) I/flutter (22382): #20 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16) I/flutter (22382): #21 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #22 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3907:5) I/flutter (22382): #23 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4053:11) I/flutter (22382): #24 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3902:5) I/flutter (22382): #25 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14) I/flutter (22382): #26 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12) I/flutter (22382): #27 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5092:14) I/flutter (22382): #28 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14) I/flutter (22382): #29 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12) I/flutter (22382): #30 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5092:14) I/flutter (22382): #31 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14) I/flutter (22382): #32 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12) I/flutter (22382): #33 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5092:14) I/flutter (22382): #34 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14) I/flutter (22382): #35 MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5198:32) I/flutter (22382): #36 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14) I/flutter (22382): #37 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12) I/flutter (22382): #38 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5092:14) I/flutter (22382): #39 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14) I/flutter (22382): #40 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12) I/flutter (22382): #41 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5099:14) I/flutter (22382): #42 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #43 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16) I/flutter (22382): #44 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #45 StatefulElement.update (package:flutter/src/widgets/framework.dart:4085:5) I/flutter (22382): #46 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #47 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16) I/flutter (22382): #48 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #49 StatelessElement.update (package:flutter/src/widgets/framework.dart:3981:5) I/flutter (22382): #50 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #51 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3077:38) I/flutter (22382): #52 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12) I/flutter (22382): #53 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16) I/flutter (22382): #54 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #55 ProxyElement.update (package:flutter/src/widgets/framework.dart:4219:5) I/flutter (22382): #56 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #57 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16) I/flutter (22382): #58 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #59 StatefulElement.update (package:flutter/src/widgets/framework.dart:4085:5) I/flutter (22382): #60 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #61 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16) I/flutter (22382): #62 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #63 ProxyElement.update (package:flutter/src/widgets/framework.dart:4219:5) I/flutter (22382): #64 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #65 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16) I/flutter (22382): #66 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #67 ProxyElement.update (package:flutter/src/widgets/framework.dart:4219:5) I/flutter (22382): #68 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #69 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:4817:32) I/flutter (22382): #70 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5208:17) I/flutter (22382): #71 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #72 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16) I/flutter (22382): #73 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #74 StatefulElement.update (package:flutter/src/widgets/framework.dart:4085:5) I/flutter (22382): #75 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #76 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16) I/flutter (22382): #77 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #78 ProxyElement.update (package:flutter/src/widgets/framework.dart:4219:5) I/flutter (22382): #79 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #80 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16) I/flutter (22382): #81 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #82 StatefulElement.update (package:flutter/src/widgets/framework.dart:4085:5) I/flutter (22382): #83 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #84 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5099:14) I/flutter (22382): #85 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #86 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16) I/flutter (22382): #87 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #88 StatelessElement.update (package:flutter/src/widgets/framework.dart:3981:5) I/flutter (22382): #89 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #90 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5099:14) I/flutter (22382): #91 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #92 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16) I/flutter (22382): #93 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #94 StatefulElement.update (package:flutter/src/widgets/framework.dart:4085:5) I/flutter (22382): #95 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #96 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16) I/flutter (22382): #97 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #98 StatefulElement.update (package:flutter/src/widgets/framework.dart:4085:5) I/flutter (22382): #99 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #100 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16) I/flutter (22382): #101 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #102 ProxyElement.update (package:flutter/src/widgets/framework.dart:4219:5) I/flutter (22382): #103 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #104 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16) I/flutter (22382): #105 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #106 ProxyElement.update (package:flutter/src/widgets/framework.dart:4219:5) I/flutter (22382): #107 Element.updateChild (package:flutter/src/widgets/framework.dart:2876:15) I/flutter (22382): #108 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16) I/flutter (22382): #109 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5) I/flutter (22382): #110 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2340:33) I/flutter (22382): #111 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:700:20) I/flutter (22382): #112 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:285:5) I/flutter (22382): #113 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1016:15) I/flutter (22382): #114 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:958:9) I/flutter (22382): #115 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:874:5) I/flutter (22382): #119 _invoke (dart:ui/hooks.dart:236:10) I/flutter (22382): #120 _drawFrame (dart:ui/hooks.dart:194:3) I/flutter (22382): (elided 3 frames from package dart:async) I/flutter (22382): ════════════════════════════════════════════════════════════════════════════════════════════════════
-
Gene Z. Ragan over 4 yearsCan you add the content of your console so we can see any additional info about the error you are encountering? Thanks!
-
Bohdan Natsevych over 4 years@Genez.Ragan Edited
-
-
Bohdan Natsevych over 4 yearsI initialize _uname with an empty string and also I had to move _uname = item['fname'] inside the setstate(). Now I don't have red screen. Thank you!