Android “路线的建造商”;空";返回null。路由生成器决不能返回null
=======小部件库捕获的异常======================================================= 已抛出以下断言:building Builder(脏): 路由“null”的生成器返回null 路由生成器决不能返回null。 导致错误的相关小部件是: 材料聚丙烯file:///C:/Users/aresrana/Desktop/Jiudo/jiwdopani/lib/UserLogIn/main.dart:8:14Android “路线的建造商”;空";返回null。路由生成器决不能返回null,android,flutter,dart,Android,Flutter,Dart,=======小部件库捕获的异常======================================================= 已抛出以下断言:building Builder(脏): 路由“null”的生成器返回null 路由生成器决不能返回null。 导致错误的相关小部件是: 材料聚丙烯file:///C:/Users/aresrana/Desktop/Jiudo/jiwdopani/lib/UserLogIn/main.dart:8:14 class AdminPage e
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){
//
// }
// }
}
class AdminPage扩展StatefulWidget{
VerifyPin createState()=>VerifyPin();
}
类VerifyPin扩展状态{
final pinCode=新文本编辑控制器();
@凌驾
小部件构建(构建上下文){
final refPin=FirebaseDatabase.instance.reference().child(“AdminPin”);
字符串ExactPin=“”;
返回式示波器(
onWillPop:()=>Future.value(false),
孩子:脚手架(
appBar:appBar(
标题:文本(“请输入您的Pin”),
背景颜色:颜色。靛蓝[900],
前导:图标按钮(图标:图标(图标。箭头向后),
onPressed:()=>Navigator.push(上下文,
MaterialPage路由(生成器:(BuildContext上下文){return LoginPage();}))
)
),
正文:中(
孩子:填充(
填充:常数边集全部(110.0),
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
文本字段(
控制器:pinCode,
装饰:输入装饰(
hintText:“在此处输入您的Pin”
)
),
升起按钮(按下时:()
{
refPin.child(“ExactPin”).one()然后((DataSnapshot数据){
设置状态(){
ExactPin=data.value;
});
if(pinCode.text==ExactPin){
//导航器.of(上下文).push(MaterialPageRoute(
//生成器:(context)=>MenuAdmin());
push(上下文,MaterialPage路由(生成器:(BuildContext){
返回MenuAdmin();}));
}
否则{
返回showDialog(上下文:上下文,
生成器:(上下文){
返回警报对话框(
标题:文本(“错误”),
内容:Text('请输入正确的pin!'
'如果忘记pin码,请与任何管理员联系。'
‘谢谢!’,
行动:[
FlatButton(子项:文本(“重试”),
已按下:(){
Navigator.push(上下文,
MaterialPage路由(生成器:(构建上下文){
返回AdminPage();});
}
),
],
);
});
}
});
},
子项:文本('Submit')
),
]
)
)
)
));
}}
Future main()异步{
WidgetsFlutterBinding.ensureInitialized();
等待Firebase.initializeApp();
runApp(材料应用程序)
(debugShowCheckedModeBanner:false,home:MyApp());
}
类MyApp扩展了StatefulWidget{
@凌驾
_MyAppState createState()=>new_MyAppState();
}
类MyAppState扩展了状态{
@凌驾
小部件构建(构建上下文){
//debugShowCheckedModeBanner:false,
回家();
}
}
类Home扩展了StatefulWidget{
@凌驾
_HomeState createState()=>\u HomeState();
}
类(HomeState扩展状态){
@凌驾
小部件构建(构建上下文){
返回AuthService().handleAuth();
}
}
类身份验证服务{
//确定用户是否经过身份验证。
handleAuth(){
返回流生成器(
流:FirebaseAuth.instance.authStateChanges(),
生成器:(BuildContext上下文,快照){
if(snapshot.hasData){
返回UserMenu();
}否则
返回登录页面();
});
}
//注销
signOut()异步{
试一试{
返回wait wait FirebaseAuth.instance.signOut();
}
捕获(e){
打印(如toString());
返回null;
}
}
//登录
登录(字符串电子邮件、字符串密码、上下文){
FirebaseAuth.instance
.使用电子邮件和密码登录(电子邮件:电子邮件,密码:密码)
.然后((val){
用户菜单();
}).catchError((e){
ErrorHandler().errorDialog(上下文,e);
});
}
//注册新用户
注册(字符串电子邮件、字符串密码、字符串fname、字符串lname、字符串cadd、字符串cname){
返回FirebaseAuth.instance
.createUserWithEmailAndPassword(电子邮件:电子邮件,密码:密码);
}
//重置密码
重置密码链接(字符串电子邮件){
FirebaseAuth.instance.sendPasswordResetEmail(email:email);
}
//注销
//Future signOut()异步{
//试一试{
//
//}捕获(e){
//
// }
// }
}