Flutter和提供者与身份验证:方法“ isAuthenticate”是在null

时间:2020-10-22 14:04:34

标签: firebase flutter dart firebase-authentication

因此,我尝试将提供程序,firebase身份验证和shared_preference混合在一起。但这有点奏效,但在最终奏效之前,总是会给我这个错误。这种方法适得其反。我在这里做错了什么?请让我知道您的解决方案或评论。

SystemUser类

import 'package:shared_preferences/shared_preferences.dart';

class SystemUser {
  final String uid;
  List selectedPicture;

  SystemUser({
    this.uid,
  });

  // check for auth state and return corresponding value
  Future<bool> isAuthenticate() async {
    // you can implement shared prefereces
    SharedPreferences prefs = await SharedPreferences.getInstance();
    return prefs.getBool('authKey') ?? false;
  }

// // whenever you logged in the user just call
// prefs.setString('authKey', true);
}

功能

Widget build(BuildContext context) {
    final user = Provider.of<SystemUser>(context);
    var width = MediaQuery.of(context).size.width;
    Utilities utilities = Utilities();
    print('User is $user');



    return FutureBuilder<bool>(
      future: Provider.of<SystemUser>(context).isAuthenticate(),
      builder: (context, AsyncSnapshot snapshot) {
        // while loading data
        if (snapshot.data == null) {
          return Loading();
        }
        // if has error
        if (snapshot.hasError) {
          return Text(snapshot.error.toString());
        }
        // retrieve data - check for authentication

        // authenticated, go to homescreen
        if (snapshot.data == true) {
          print('In HomeScreen');
          return NavigationWrapper();
        }
        // not authenticated, go to auth screen
        print('In Authenicate or Login');
        return Authenticate();
      },
    );


  }

错误消息

I/flutter (19065): After checking : Instance of 'SharedPreferences' and false
I/flutter (19065): Go to wrapper
I/flutter (19065): User is null
I/flutter (19065): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (19065): The following NoSuchMethodError was thrown building Wrapper(dirty, dependencies:
I/flutter (19065): [_InheritedProviderScope<SystemUser>, MediaQuery], state: _WrapperState#3473e):
I/flutter (19065): The method 'isAuthenticate' was called on null.
I/flutter (19065): Receiver: null
I/flutter (19065): Tried calling: isAuthenticate()
I/flutter (19065): 
I/flutter (19065): The relevant error-causing widget was:
I/flutter (19065):   Wrapper file:///Users/punreachrany/Desktop/Flutter/PhotoEarn/lib/screens/app_starter.dart:51:33
I/flutter (19065): 
I/flutter (19065): When the exception was thrown, this was the stack:
I/flutter (19065): #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
I/flutter (19065): #1      _WrapperState.build (package:PhotoEarn/screens/wrapper.dart:78:48)
I/flutter (19065): #2      StatefulElement.build (package:flutter/src/widgets/framework.dart:4744:28)
I/flutter (19065): #3      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4627:15)
I/flutter (19065): #4      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
I/flutter (19065): #5      Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
I/flutter (19065): #6      ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4606:5)
I/flutter (19065): #7      StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4791:11)
I/flutter (19065): #8      ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
I/flutter (19065): ...     Normal element mounting (132 frames)
I/flutter (19065): #140    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
I/flutter (19065): #141    Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
I/flutter (19065): #142    RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5705:32)
I/flutter (19065): #143    MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6246:17)
I/flutter (19065): #144    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
I/flutter (19065): #145    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
I/flutter (19065): #146    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
I/flutter (19065): #147    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
I/flutter (19065): #148    StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
I/flutter (19065): #149    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
I/flutter (19065): #150    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
I/flutter (19065): #151    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
I/flutter (19065): #152    ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
I/flutter (19065): #153    _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:183:11)
I/flutter (19065): #154    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
I/flutter (19065): #155    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6125:14)
I/flutter (19065): #156    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
I/flutter (19065): #157    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
I/flutter (19065): #158    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
I/flutter (19065): #159    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
I/flutter (19065): #160    StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
I/flutter (19065): #161    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
I/flutter (19065): #162    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6125:14)
I/flutter (19065): #163    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
I/flutter (19065): #164    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6125:14)
I/flutter (19065): #165    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
I/flutter (19065): #166    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
I/flutter (19065): #167    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
I/flutter (19065): #168    StatelessElement.update (package:flutter/src/widgets/framework.dart:4708:5)
I/flutter (19065): #169    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
I/flutter (19065): #170    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
I/flutter (19065): #171    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
I/flutter (19065): #172    ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
I/flutter (19065): #173    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
I/flutter (19065): #174    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
I/flutter (19065): #175    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
I/flutter (19065): #176    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
I/flutter (19065): #177    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2730:33)
I/flutter (19065): #178    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:913:20)
I/flutter (19065): #179    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:302:5)
I/flutter (19065): #180    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1117:15)
I/flutter (19065): #181    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1055:9)
I/flutter (19065): #182    SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:971:5)
I/flutter (19065): #186    _invoke (dart:ui/hooks.dart:251:10)
I/flutter (19065): #187    _drawFrame (dart:ui/hooks.dart:209:3)
I/flutter (19065): (elided 3 frames from dart:async)
I/flutter (19065): 
I/flutter (19065): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (19065): User is Instance of 'SystemUser'
I/flutter (19065): In HomeScreen
W/Firestore(19065): (21.3.0) [Firestore]: Listen for Query(pictures where creator_uid == I1yM9QjCBkXMZUKuTlfNxrxnRTb2 order by -created_date, -__name__) failed: Status{code=FAILED_PRECONDITION, description=The query requires an index. You can create it here: https://console.firebase.google.com/v1/r/project/photo-earn/firestore/indexes?create_composite=Cktwcm9qZWN0cy9waG90by1lYXJuL2RhdGFiYXNlcy8oZGVmYXVsdCkvY29sbGVjdGlvbkdyb3Vwcy9waWN0dXJlcy9pbmRleGVzL18QARoPCgtjcmVhdG9yX3VpZBABGhAKDGNyZWF0ZWRfZGF0ZRACGgwKCF9fbmFtZV9fEAI, cause=null}
I/System.out(19065): com.google.firebase.firestore.FirebaseFirestoreException: FAILED_PRECONDITION: The query requires an index. You can create it here: https://console.firebase.google.com/v1/r/project/photo-earn/firestore/indexes?create_composite=Cktwcm9qZWN0cy9waG90by1lYXJuL2RhdGFiYXNlcy8oZGVmYXVsdCkvY29sbGVjdGlvbkdyb3Vwcy9waWN0dXJlcy9pbmRleGVzL18QARoPCgtjcmVhdG9yX3VpZBABGhAKDGNyZWF0ZWRfZGF0ZRACGgwKCF9fbmFtZV9fEAI

最后评论 最后,请告诉我如何解决此问题。我期待着您的回音。我将欣赏各种想法。预先谢谢你。

0 个答案:

没有答案