Home > Software engineering >  How i fix username password email is null in flutter
How i fix username password email is null in flutter

Time:12-18

I use widget StatefulWidget and _inputFiled

I've created a model class

class Profile {
  String? email;
  String? username;
  String? password;

  Profile({
    this.email,
    this.username,
    this.password,
  });
}

And using like

class _RegisterScreenState extends State<RegisterScreen> {
  final formKey = GlobalKey<FormState>();
  Profile profile = Profile();

  @override
  Widget build(BuildContext context) {
    return Form(
      child: Scaffold(
        body: Container(
          margin: EdgeInsets.all(24),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: [
             // _header(context),
              _inputField(context),
             // _forgotPassword(context),
            ],
          ),
        ),
      ),
    );
  }
 _inputField(context) {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: [
        TextFormField(
          keyboardType: TextInputType.emailAddress,
          onSaved: (String? email) {
            formKey.currentState?.save();
            profile.email = email!;
          },
        ),
        SizedBox(height: 10),
        TextFormField(
          onSaved: (String? username) {
            formKey.currentState?.save();
            profile.username = username!;
          },
        ),
        SizedBox(height: 10),
        TextFormField(
          onSaved: (String? password) {
            profile.password = password!;
          },
        ),
        SizedBox(height: 10),
        ElevatedButton(
          onPressed: () {
            formKey.currentState?.save(); // Save the entire form
            print(
                "email =${profile.email} username =${profile.username} password =${profile.password}");
            Navigator.push(context, MaterialPageRoute(builder: ((context) {
              return LoginScreen();
            })));
          },
          child: Text(
            "Register",
          ), 
        )
      ],
    );
  }

Terminal say : email =null username =null password =null

CodePudding user response:

The form key hasn't been used.

  Widget build(BuildContext context) {
    return Form(
      key: formKey, // add here
      child: Scaffold(

CodePudding user response:

You need put your Global key in your form:

  return Form(
      key: formKey,
      child: Scaffold(
 

And the formKey.currentState?.save() only on

 ElevatedButton(
          onPressed: () {
            formKey.currentState?.save(); // Save the entire form
            print(
                "email =${profile.email} username =${profile.username} password =${profile.password}");

it is not needed in onSave methods as it will be executed first on button onPressed

CodePudding user response:

It is becauae you made them null able and if you dont initialize them the first value will be null.

  • Related