我的应用程序无法加载登录UI,它只是在加载CircularProgressIndicator()时卡住了:以下是我的代码提供程序代码,当我运行应用程序时,它没有显示任何错误,但随后应用程序没有加载登录UI: main.dart
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider.value(value: UserProvider.initialize())
],
child: MyApp(),
),
);
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'AfriMarKet',
theme: ThemeData(
primaryColor: Colors.white
),
home: ScreensController());
}
}
class ScreensController extends StatelessWidget {
@override
Widget build(BuildContext context) {
final user = Provider.of<UserProvider>(context);
switch (user.status) {
case Status.Uninitialized:
return SplashScreen();
case Status.Unauthenticated:
case Status.Authenticating:
return LoginPage();
case Status.Authenticated:
return HomePage();
default:
return LoginPage();
}
}
}provider.dart枚举状态{未初始化,已验证,正在验证,未验证}
class UserProvider extends ChangeNotifier{
FirebaseAuth _auth;
FirebaseUser _user;
Status _status = Status.Uninitialized;
Status get status => _status;
FirebaseUser get user => _user;
Firestore _firestore = Firestore.instance;
UserServices _userServices = UserServices();
UserProvider.initialize(): _auth = FirebaseAuth.instance{
_auth.onAuthStateChanged.listen(_onStateChanged);
}
Future<bool> signIn(String email, String password)async{
try{
_status = Status.Authenticating;
notifyListeners();
await _auth.signInWithEmailAndPassword(email: email, password: password);
return true;
}catch(e){
_status = Status.Unauthenticated;
notifyListeners();
print(e.toString());
return false;
}
}
Future<bool> signUp(String name,String email, String password)async{
try{
_status = Status.Authenticating;
notifyListeners();
await _auth.createUserWithEmailAndPassword(email: email, password: password).then((user){
_firestore.collection('users').document(user.user.uid).setData({
'name':name,
'email':email,
'uid':user.user.uid
});
});
return true;
}catch(e){
_status = Status.Unauthenticated;
notifyListeners();
print(e.toString());
return false;
}
}
Future signOut()async{
_auth.signOut();
_status = Status.Unauthenticated;
notifyListeners();
return Future.delayed(Duration.zero);
}
Future<void> _onStateChanged(FirebaseUser user) async{
if(user == null){
_status = Status.Unauthenticated;
}else{
_user = user;
_status = Status.Authenticated;
}
notifyListeners();
}
}发布于 2020-06-21 00:53:51
谢谢大家的帮助,我终于弄明白了,问题是我添加了这部分代码
Visibility(
child: Center(
child: Container(
alignment: Alignment.center,
color: Colors.white.withOpacity(0.9),
child: CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(Colors.red),
),
),
),
)作为我脚手架中的最后一个小部件,它引起了我所有loginPage的噩梦
https://stackoverflow.com/questions/62475063
复制相似问题