Android “路线的建造商”;空";返回null。路由生成器决不能返回null

Android “路线的建造商”;空";返回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

=======小部件库捕获的异常======================================================= 已抛出以下断言:building Builder(脏): 路由“null”的生成器返回null

路由生成器决不能返回null。 导致错误的相关小部件是: 材料聚丙烯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){
//
//     }
// }
}
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){
//
//     }
// }
}