Firebase 颤振与振动;供应商及;身份验证:方法';isAuthenticate';被调用为空
因此,我尝试将提供者、firebase身份验证和共享_首选项混合在一起。但它有点工作,但在它最终工作之前,它总是给我这个错误。这种方法有点让我适得其反。我做错了什么?请让我知道您的解决方案或意见 系统用户类Firebase 颤振与振动;供应商及;身份验证:方法';isAuthenticate';被调用为空,firebase,flutter,dart,firebase-authentication,Firebase,Flutter,Dart,Firebase Authentication,因此,我尝试将提供者、firebase身份验证和共享_首选项混合在一起。但它有点工作,但在它最终工作之前,它总是给我这个错误。这种方法有点让我适得其反。我做错了什么?请让我知道您的解决方案或意见 系统用户类 import 'package:shared_preferences/shared_preferences.dart'; class SystemUser { final String uid; List selectedPicture; SystemUser({ t
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);
}
import'package:shared_preferences/shared_preferences.dart';
类系统用户{
最后一个字符串uid;
列出所选图片;
系统用户({
这个.uid,
});
//检查验证状态并返回相应的值
Future isAuthenticate()异步{
//您可以实现共享首选项
SharedReferences prefs=等待SharedReferences.getInstance();
返回prefs.getBool('authKey')??false;
}
////无论何时登录用户,只要调用
//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();
},
);
}
小部件构建(构建上下文){
最终用户=提供者(上下文);
var width=MediaQuery.of(context).size.width;
实用工具=实用工具();
打印(“用户为$User”);
回归未来建设者(
future:Provider.of(context.isAuthenticate(),
生成器:(上下文,异步快照){
//加载数据时
如果(snapshot.data==null){
返回加载();
}
//如果有错误
if(snapshot.hasError){
返回文本(snapshot.error.toString());
}
//检索数据-检查身份验证
//已验证,请转到主屏幕
如果(snapshot.data==true){
打印(“在主屏幕中”);
返回NavigationWrapper();
}
//未通过身份验证,请转到身份验证屏幕
打印(“在授权或登录中”);
返回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
I/flatter(19065):检查后:“SharedReferences”实例和false
I/颤振(19065):转到包装器
I/颤振(19065):用户为空
I/颤振(19065):══╡ WIDGETS库捕获到异常╞═══════════════════════════════════════════════════════════
I/Flatter(19065):在构建包装器时抛出以下NoSuchMethodError(脏的,依赖项):
I/flatter(19065):[\u InheritedProviderScope,MediaQuery],状态:\u WrapperState\3473e):
I/flatter(19065):方法“isAuthenticate”在null上被调用。
I/颤振(19065):接收器:空
I/flatter(19065):尝试呼叫:isAuthenticate()
I/颤振(19065):
I/flatter(19065):导致错误的相关小部件是:
I/颤振(19065):包装器file:///Users/punreachrany/Desktop/Flutter/PhotoEarn/lib/screens/app_starter.dart:51:33
I/颤振(19065):
I/flatter(19065):当抛出异常时,这是堆栈:
I/颤振(19065):#0 Object.noSuchMethod(dart:核心补丁/Object_补丁。dart:51:5)
I/flatter(19065):#1_WrapperState.build(包:PhotoEarn/screens/wrapper.dart:78:48)
I/flatter(19065):#2 StatefulElement.build(包:flatter/src/widgets/framework.dart:4744:28)
I/flatter(19065):#3 ComponentElement.performRebuild(包:flatter/src/widgets/framework.dart:4627:15)
I/flatter(19065):#4 StatefulElement.performRebuild(包:flatter/src/widgets/framework.dart:4800:11)
I/flatter(19065):#5 Element.rebuild(包:flatter/src/widgets/framework.dart:4343:5)
I/flatter(19065):#6 ComponentElement._firstBuild(包:flatter/src/widgets/framework.dart:4606:5)
I/flatter(19065):#7 StatefulElement._firstBuild(包:flatter/src/widgets/framework.dart:4791:11)
I/flatter(19065):#8 ComponentElement.mount(包:flatter/src/widgets/framework.dart:4601:5)
I/颤振(19065):。。。正常元件安装(132个机架)
I/flatter(19065):#140 Element.inflateWidget(包:flatter/src/widgets/framework.dart:3569:14)
I/flatter(19065):141element.updateChild(包:flatter/src/widgets/framework.dart:3327:18)
I/flatter(19065):#142 RenderObjectElement.updateChildren(包:flatter/src/widgets/framework.dart:5705:32)
I/flatter(19065):143multi-childrenderobjectelement.update(包:flatter/src/widgets/framework.dart:6246:17)
I/flatter(19065):#144 Element.updateChild(包:flatter/src/widgets/framework.dart:3314:15)
I/flatter(19065):#145 ComponentElement.performRebuild(包:flatter/src/widgets/framework.dart:4652:16)
I/flatter(19065):146stateflement.performRebuild(包:flatter/src/widgets/framework.dart:4800:11)
I/flatter(19065):#147 Element.rebuild(包:flatter/src/widgets/framework.dart:4343:5)
I/flatter(19065):148statefulelement.update(包:flatter/src/widgets/framework.dart:4832:5)
I/flatter(19065):149element.updateChild(包:flatter/src/widgets/framework.dart:3314:15)
I/flatter(19065):#150 ComponentElement.performRebuild(包:flatter/src/widgets/framework.dart:4652:16)
I/flatter(19065):#151 Element.rebuild(包:flatter/src/widgets/framework.dart:4343:5)
I/flatter(19065):#152 ProxyElement.update(包:flatter/src/widgets/framework.dart:4987:5)
I/flatter(19065):#153 _inheritednotifiedrelation.update(包:flatter/src/widgets/inherited_notifier.dart:183:11)
I/flatter(19065):154element.updateChild(包:flatter/src/widgets/framework.dart:3314:15)
I/flatter(19065):#155 SingleChildRenderObjectElement.update(包:flatter/src/widgets/framework.dart:6125:14)
I/flatter(19065):#156 Element.updateChild(包:flatter/src/widgets/framework.dart:3314:15)
I/flatter(19065):#157 ComponentElement.performRebuild(包:flatter/src/widgets/framework.dart:4652:16)
I/flatter(19065):#158 stateflement.performRebuild(包:flatter/src/widgets/framework.dart:4800:11)
I/flatter(19065):#159 Element.rebuild(包:flatter/src/widgets/framework.dart:4343:5)
I/颤振(1