当我尝试从Firebase获取用户名时,应用程序中的抽屉闪烁

时间:2019-09-03 21:11:18

标签: firebase flutter google-cloud-firestore firebase-authentication flicker

我正在使用自定义抽屉构建我的第一个Flutter应用程序。它应该在抽屉的标题中显示“ Welcome” + name_of_user。但是,当我尝试从Firebase检索用户数据时,它向我显示red screen with errors 1秒钟,然后其行为类似于normal。如何修复该红色屏幕?

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(() {
    });
  }

然后我显示这样的名字

 child: Text("Welcome " + _uname,
                  style: TextStyle(
                      color: Colors.white,
                      fontSize: 20.0,
                      fontWeight: FontWeight.w500))),
        ]));

控制台日志

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): ════════════════════════════════════════════════════════════════════════════════════════════════════

1 个答案:

答案 0 :(得分:0)

在initState中,您正在调用 async 函数_getCurrentUser。因此,自然而然地,此函数将在initState继续执行且页面以_uname呈现为null时异步执行。

由于显示名称时抛出空指针异常,所以显示红色屏幕。

使用空字符串初始化_uname

  String _uname = '';

或在显示名称时使用空感知运算符

child: Text("Welcome " + _uname ?? '',
                  style: TextStyle(
                      color: Colors.white,
                      fontSize: 20.0,
                      fontWeight: FontWeight.w500))),
        ]));