Flutter Initstate方法不初始化控制器

Flutter Initstate方法不初始化控制器,flutter,dart,Flutter,Dart,我在用开始文本设置控制器时遇到问题。我的意思是,我将参数内的值传递到下一个屏幕,我希望在TextFormField中设置该值。我试图在initState中用stat值初始化控制器,但看起来程序根本不使用这个方法。没有打印任何内容。 所以我看到了两个问题,第一个是没有进入initState方法,这导致我在下一个屏幕开始时没有任何文本 代码: import'包:email_validator/email_validator.dart'; 进口“包装:颤振/cupertino.dart”; 进口“包装

我在用开始文本设置控制器时遇到问题。我的意思是,我将参数内的值传递到下一个屏幕,我希望在
TextFormField
中设置该值。我试图在
initState
中用stat值初始化控制器,但看起来程序根本不使用这个方法。没有打印任何内容。 所以我看到了两个问题,第一个是没有进入
initState
方法,这导致我在下一个屏幕开始时没有任何文本

代码:

import'包:email_validator/email_validator.dart';
进口“包装:颤振/cupertino.dart”;
进口“包装:颤振/材料.省道”;
类注册页扩展StatefulWidget{
最终字符串电子邮件;
const RegistrationPage({Key?Key,必选this.email}):super(Key:Key);
@凌驾
_RegistrationPage createState()=>\u RegistrationPage();
}
类注册页扩展状态{
最终的GlobalKey _formKey=GlobalKey();
最终emailController=TextEditingController();
最终密码控制器=TextEditingController();
final repeatedPasswordController=TextEditingController();
final phoneNumberController=文本编辑控制器();
最终用户名控制器=TextEditingController();
var_passwordVisible=false;
var_repeatedPasswordVisible=false;
@凌驾
小部件构建(构建上下文){
@凌驾
无效处置(){
emailController.dispose();
passwordController.dispose();
repeatedPasswordController.dispose();
phoneNumberController.dispose();
usernameController.dispose();
super.dispose();
}
@凌驾
void initState(){
super.initState();
打印(“凹凸”);
emailController.text=widget.email;
}
返回脚手架(
appBar:appBar(
标题:文本(“Zarejestruj się”),
标题:对,
标高:6.0,
形状:连续矩形边框(
borderRadius:仅限常量borderRadius(
左上:半径。圆形(90.0),
),
),
),
正文:SingleChildScrollView(
子:容器(
填充:所有边缘设置(20.0),
宽度:MediaQuery.of(context).size.width,
高度:MediaQuery.of(context).size.height,
子:列(
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
标志(尺寸:80),
大小盒子(
身高:28.0,
),
正文(
“Witamy na pokładzie!”,
样式:TextStyle(
尺寸:20,
颜色:颜色(0xff000000),
),
textAlign:textAlign.center,
),
大小盒子(
身高:8.0,
),
正文(
“Utwórz nowe konto”,
样式:TextStyle(
尺寸:17,
颜色:颜色(0xff000000),
),
textAlign:textAlign.center,
),
大小盒子(
身高:26.0,
),
形式(
键:_formKey,
子:列(
儿童:[
TextFormField(
控制器:emailController,
装饰:输入装饰(
边框:OutlineInputBorder(),
hintText:“地址电子邮件”,
填充颜色:颜色(0xffffffff),
是的,
前缀:图标(Icons.mail),
),
验证器:(值){
返回validateEmail(值);
},
),
大小盒子(
身高:10.0,
),
TextFormField(
控制器:电话号码控制器,
键盘类型:TextInputType.phone,
装饰:输入装饰(
边框:OutlineInputBorder(),
hintText:“电话号码”,
填充颜色:颜色(0xffffffff),
是的,
前缀:图标(Icons.phone),
),
验证器:(值){
返回validateMobile(值);
},
),
大小盒子(
身高:10.0,
),
TextFormField(
控制器:usernameController,
装饰:输入装饰(
边框:OutlineInputBorder(),
hintText:“Nazwa użytkownika”,
填充颜色:颜色(0xffffffff),
是的,
前缀:图标(图标.帐户\圆圈),
),
验证器:(值){
返回validateUsername(值);
},
),
大小盒子(
身高:10.0,
),
TextFormField(
控制器:密码控制器,
蒙蔽文字:!\u密码可见,
装饰:输入装饰(
errorMaxLines:2,
边框:OutlineInputBorder(),
hintText:“Hasło”,
填充颜色:颜色(0xffffffff),
是的,
前缀:图标(图标.密码),
后缀:图标按钮(
图标:图标(
_密码可见
?图标。可见性
:Icons.visibility\u o
import 'package:email_validator/email_validator.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class RegistrationPage extends StatefulWidget {
  final String email;

  const RegistrationPage({Key? key, required this.email}) : super(key: key);

  @override
  _RegistrationPage createState() => _RegistrationPage();
}

class _RegistrationPage extends State<RegistrationPage> {
  final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
  final emailController = TextEditingController();
  final passwordController = TextEditingController();
  final repeatedPasswordController = TextEditingController();
  final phoneNumberController = TextEditingController();
  final usernameController = TextEditingController();

  var _passwordVisible = false;
  var _repeatedPasswordVisible = false;

  @override
  Widget build(BuildContext context) {
    @override
    void dispose() {
      emailController.dispose();
      passwordController.dispose();
      repeatedPasswordController.dispose();
      phoneNumberController.dispose();
      usernameController.dispose();
      super.dispose();
    }

    @override
    void initState() {
      super.initState();
      print('bump');
      emailController.text = widget.email;
    }

    return Scaffold(
      appBar: AppBar(
        title: Text("Zarejestruj się"),
        centerTitle: true,
        elevation: 6.0,
        shape: ContinuousRectangleBorder(
          borderRadius: const BorderRadius.only(
            topLeft: Radius.circular(90.0),
          ),
        ),
      ),
      body: SingleChildScrollView(
        child: Container(
          padding: EdgeInsets.all(20.0),
          width: MediaQuery.of(context).size.width,
          height: MediaQuery.of(context).size.height,
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              FlutterLogo(size: 80),
              SizedBox(
                height: 28.0,
              ),
              Text(
                'Witamy na pokładzie!',
                style: TextStyle(
                  fontSize: 20,
                  color: Color(0xff000000),
                ),
                textAlign: TextAlign.center,
              ),
              SizedBox(
                height: 8.0,
              ),
              Text(
                'Utwórz nowe konto',
                style: TextStyle(
                  fontSize: 17,
                  color: Color(0xff000000),
                ),
                textAlign: TextAlign.center,
              ),
              SizedBox(
                height: 26.0,
              ),
              Form(
                key: _formKey,
                child: Column(
                  children: <Widget>[
                    TextFormField(
                      controller: emailController,
                      decoration: InputDecoration(
                        border: OutlineInputBorder(),
                        hintText: 'Adres e-mail',
                        fillColor: Color(0xffffffff),
                        filled: true,
                        prefixIcon: Icon(Icons.mail),
                      ),
                      validator: (value) {
                        return validateEmail(value);
                      },
                    ),
                    SizedBox(
                      height: 10.0,
                    ),
                    TextFormField(
                      controller: phoneNumberController,
                      keyboardType: TextInputType.phone,
                      decoration: InputDecoration(
                        border: OutlineInputBorder(),
                        hintText: 'Numer telefonu',
                        fillColor: Color(0xffffffff),
                        filled: true,
                        prefixIcon: Icon(Icons.phone),
                      ),
                      validator: (value) {
                        return validateMobile(value);
                      },
                    ),
                    SizedBox(
                      height: 10.0,
                    ),
                    TextFormField(
                      controller: usernameController,
                      decoration: InputDecoration(
                        border: OutlineInputBorder(),
                        hintText: 'Nazwa użytkownika',
                        fillColor: Color(0xffffffff),
                        filled: true,
                        prefixIcon: Icon(Icons.account_circle),
                      ),
                      validator: (value) {
                        return validateUsername(value);
                      },
                    ),
                    SizedBox(
                      height: 10.0,
                    ),
                    TextFormField(
                      controller: passwordController,
                      obscureText: !_passwordVisible,
                      decoration: InputDecoration(
                        errorMaxLines: 2,
                        border: OutlineInputBorder(),
                        hintText: 'Hasło',
                        fillColor: Color(0xffffffff),
                        filled: true,
                        prefixIcon: Icon(Icons.password),
                        suffixIcon: IconButton(
                          icon: Icon(
                            _passwordVisible
                                ? Icons.visibility
                                : Icons.visibility_off,
                            color: Theme.of(context).primaryColorDark,
                          ),
                          onPressed: () {
                            setState(() {
                              _passwordVisible = !_passwordVisible;
                            });
                          },
                        ),
                      ),
                      validator: (value) {
                        return validatePassword(value);
                      },
                    ),
                    SizedBox(
                      height: 10.0,
                    ),
                    TextFormField(
                      controller: repeatedPasswordController,
                      obscureText: !_repeatedPasswordVisible,
                      decoration: InputDecoration(
                        border: OutlineInputBorder(),
                        hintText: 'Powtórz hasło',
                        fillColor: Color(0xffffffff),
                        filled: true,
                        prefixIcon: Icon(Icons.password),
                        suffixIcon: IconButton(
                          icon: Icon(
                            _repeatedPasswordVisible
                                ? Icons.visibility
                                : Icons.visibility_off,
                            color: Theme.of(context).primaryColorDark,
                          ),
                          onPressed: () {
                            setState(() {
                              _repeatedPasswordVisible =
                                  !_repeatedPasswordVisible;
                            });
                          },
                        ),
                      ),
                      validator: (value) {
                        return validateRepeatedPassword();
                      },
                    ),
                    SizedBox(
                      height: 15.0,
                    ),
                    ConstrainedBox(
                      constraints:
                          BoxConstraints.tightFor(width: 240, height: 60),
                      child: ElevatedButton(
                        onPressed: () {
                          if (_formKey.currentState!.validate()) {
                            print('gut');
                          }
                        },
                        child: Text('Zarejestruj',
                            style: TextStyle(
                              fontSize: 30,
                              color: Color(0xffffffff),
                            ),
                            textAlign: TextAlign.center),
                        style: ButtonStyle(
                          backgroundColor: MaterialStateProperty.all<Color>(
                            Color(0xFF2F45C6),
                          ),
                          shape:
                              MaterialStateProperty.all<RoundedRectangleBorder>(
                            RoundedRectangleBorder(
                              borderRadius: BorderRadius.circular(25.0),
                            ),
                          ),
                        ),
                      ),
                    ),
                  ],
                ),
              )
            ],
          ),
        ),
      ),
      backgroundColor: const Color(0xFEF9F9FC),
    );
  }

  validators....
}