路由“null”的构建器返回 null。路由构建器绝不能返回 null

时间:2021-05-16 19:54:52

标签: android flutter dart

======== 小部件库捕获的异常 ================================== ====================== 构建 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){
//
//     }
// }
}

0 个答案:

没有答案