因此,我尝试将提供程序,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
最后评论 最后,请告诉我如何解决此问题。我期待着您的回音。我将欣赏各种想法。预先谢谢你。