======== 小部件库捕获的异常 ================================== ====================== 构建 Builder(dirty) 时抛出了以下断言: 路由“null”的构建器返回 null。
路由构建器绝不能返回空值。 相关的导致错误的小部件是: MaterialApp file:///C:/Users/aresrana/Desktop/Jiudo/jiwdopani/lib/UserLogIn/main.dart:8:14
class AdminPage extends StatefulWidget{
VerifyPin createState()=> VerifyPin();
}
class VerifyPin extends State<AdminPage>{
final pinCode=new TextEditingController();
@override
Widget build(BuildContext context) {
final refPin=FirebaseDatabase.instance.reference().child("AdminPin");
String ExactPin="";
return WillPopScope(
onWillPop:()=> Future.value(false),
child: Scaffold(
appBar:AppBar(
title: Text('Please Enter Your Pin'),
backgroundColor:Colors.indigo[900],
leading: IconButton(icon: Icon(Icons.arrow_back),
onPressed:()=>Navigator.push(context,
MaterialPageRoute(builder: (BuildContext context) { return LoginPage();}))
)
),
body: Center(
child: Padding (
padding: const EdgeInsets.all(110.0),
child:Column(
mainAxisAlignment:MainAxisAlignment.center,
children: <Widget>[
TextField(
controller: pinCode,
decoration: InputDecoration(
hintText: 'Enter Your Pin Here'
)
),
RaisedButton(onPressed: ()
{
refPin.child("ExactPin").once().then((DataSnapshot data) {
setState(() {
ExactPin = data.value;
});
if (pinCode.text ==ExactPin) {
// Navigator.of(context).push(MaterialPageRoute(
// builder: (context) => MenuAdmin()));
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) {
return MenuAdmin();}));
}
else {
return showDialog(context: context,
builder: (context) {
return AlertDialog(
title: Text('Error'),
content: Text('Please enter the correct pin !'
'Contact to any of the admins if you have forgotten the pin.'
'Thanks!'),
actions: [
FlatButton(child: Text('Try Again'),
onPressed:(){
Navigator.push(context,
MaterialPageRoute(builder: (BuildContext context) {
return AdminPage();}));
}
),
],
);
});
}
});
},
child: Text('Submit')
),
]
)
)
)
));
}}
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MaterialApp
(debugShowCheckedModeBanner: false,home: MyApp()));
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState()=> new _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
//debugShowCheckedModeBanner: false,
return Home();
}
}
class Home extends StatefulWidget{
@override
_HomeState createState()=>_HomeState();
}
class _HomeState extends State<Home> {
@override
Widget build(BuildContext context) {
return AuthService().handleAuth();
}
}
class AuthService {
//Determine if the user is authenticated.
handleAuth() {
return StreamBuilder(
stream: FirebaseAuth.instance.authStateChanges(),
builder: (BuildContext context, snapshot) {
if (snapshot.hasData) {
return UserMenu();
} else
return LoginPage();
});
}
//Sign out
signOut() async {
try {
return await FirebaseAuth.instance.signOut();
}
catch(e){
print(e.toString());
return null;
}
}
//Sign In
signIn(String email, String password, context) {
FirebaseAuth.instance
.signInWithEmailAndPassword(email: email, password: password)
.then((val) {
UserMenu();
}).catchError((e) {
ErrorHandler().errorDialog(context, e);
});
}
//Signup a new user
signUp(String email, String password,String fname,String lname,String cadd,String cname) {
return FirebaseAuth.instance
.createUserWithEmailAndPassword(email: email, password: password);
}
//Reset Password
resetPasswordLink(String email) {
FirebaseAuth.instance.sendPasswordResetEmail(email: email);
}
//sign out
// Future signOut()async {
// try {
//
// } catch(e){
//
// }
// }
}