错误:无法将参数类型“TextEditingController”分配给参数类型“String”。在 FLUTTER

时间:2021-02-09 12:50:53

标签: firebase flutter dart

我的 signup.dart 文件:

    import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';

class SignUp extends StatefulWidget {
  @override
  _SignUpState createState() => _SignUpState();
}

class _SignUpState extends State<SignUp> {
  final FirebaseAuth firebaseAuth = FirebaseAuth.instance;
  final _formKey = GlobalKey<FormState>();
  TextEditingController _emailTextController = TextEditingController();
  TextEditingController _passwordTextController = TextEditingController();
  TextEditingController _nameTextController = TextEditingController();
  TextEditingController _confirmPasswordTextController =
      TextEditingController();
  String gender;
  String groupValue = "Erkek";

  bool loading = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        children: <Widget>[
          Image.asset(
            'images/backg.jpg',
            fit: BoxFit.fill,
            width: double.infinity,
            height: double.infinity,
          ),
          Container(
            color: Colors.black.withOpacity(0.4),
            width: double.infinity,
            height: double.infinity,
          ),
          Padding(
            padding: const EdgeInsets.only(top: 200.0),
            child: Center(
              child: Form(
                  key: _formKey,
                  child: ListView(
                    children: <Widget>[
                      Padding(
                        padding:
                            const EdgeInsets.fromLTRB(14.0, 8.0, 14.0, 8.0),
                        child: Material(
                          borderRadius: BorderRadius.circular(20.0),
                          color: Colors.white.withOpacity(0.4),
                          elevation: 0.0,
                          child: Padding(
                            padding: const EdgeInsets.only(left: 12.0),
                            child: ListTile(
                              title: TextFormField(
                                controller: _passwordTextController,
                                decoration: InputDecoration(
                                  hintText: "Ad Soyad",
                                  icon: Icon(Icons.person),
                                    border: InputBorder.none
                                ),
                                // ignore: missing_return
                                validator: (value) {
                                  if (value.isEmpty) {
                                    return "İsim boşluğu doldurulmalıdır.";
                                  }
                                  return null;
                                },
                                // ignore: missing_return
                              ),
                              trailing: Icon(Icons.remove_red_eye),
                            ),
                          ),
                        ),
                      ),

                      Padding(
                        padding:
                            const EdgeInsets.fromLTRB(14.0, 8.0, 14.0, 8.0),
                        child: Material(
                          borderRadius: BorderRadius.circular(20.0),
                          color: Colors.white.withOpacity(0.4),
                          elevation: 0.0,
                          child: Padding(
                            padding: const EdgeInsets.only(left: 12.0),
                            child: TextFormField(
                                controller: _emailTextController,
                                decoration: InputDecoration(
                                  hintText: "Email",
                                  icon: Icon(Icons.email),
                                    border: InputBorder.none
                                ),
                                // ignore: missing_return
                                validator: (value) {
                                  if (value.isEmpty) {
                                    Pattern pattern =
                                        r'^(([^<>()[]\.,;:\s@"]+(.[^<>()[]\.,;:\s@"]+)*)|(".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$';
                                    RegExp regex = new RegExp(pattern);
                                    if (!regex.hasMatch(value))
                                      return "Lütfen geçerli bir mail adresi giriniz.";
                                    else
                                      return null;
                                  }
                                }),
                          ),
                        ),
                      ),
                      Padding(
                        padding: const EdgeInsets.fromLTRB(14.0, 8.0, 14.0, 8.0),
                        child: new Container(
                          color: Colors.white.withOpacity(0.4),
                          child: Row(
                            children: <Widget>[
                              Expanded(
                                  child: ListTile(
                                    title: Text(
                                      "Erkek",
                                      textAlign: TextAlign.end ,
                                      style: TextStyle(color: Colors.white),
                                    ),
                                    trailing:  Radio(value: "Erkek", groupValue: groupValue, onChanged: (e)=>valueChanged(e)),
                                  )),
                              Expanded(
                                  child: ListTile(
                                    title: Text(
                                      "Kadın",
                                      textAlign: TextAlign.end ,
                                      style: TextStyle(color: Colors.white),
                                    ),
                                    trailing:  Radio(value: "Kadın", groupValue: groupValue, onChanged: (e)=>valueChanged(e)),
                                  )),
                            ],
                          ),
                        ),
                      ),
                      Padding(
                        padding:
                            const EdgeInsets.fromLTRB(14.0, 8.0, 14.0, 8.0),
                        child: Material(
                          borderRadius: BorderRadius.circular(20.0),
                          color: Colors.white.withOpacity(0.4),
                          elevation: 0.0,
                          child: Padding(
                            padding: const EdgeInsets.only(left: 12.0),
                            child: ListTile(
                              title: TextFormField(
                                controller: _passwordTextController,
                                obscureText: true,
                                decoration: InputDecoration(
                                  hintText: "Şifre",
                                  icon: Icon(Icons.lock_outline),
                                    border: InputBorder.none
                                ),
                                // ignore: missing_return
                                validator: (value) {
                                  if (value.isEmpty) {
                                    return "Şifre boşluğu doldurulmalıdır.";
                                  } else if (value.length < 6) {
                                    return "Şifre 6 haneden uzun olmalı!";
                                  }
                                  return null;
                                },
                                // ignore: missing_return
                              ),
                                trailing : IconButton(icon: Icon(Icons.remove_red_eye), onPressed: (){})
                            ),
                          ),
                        ),
                      ),
                      Padding(
                        padding:
                            const EdgeInsets.fromLTRB(14.0, 8.0, 14.0, 8.0),
                        child: Material(
                          borderRadius: BorderRadius.circular(20.0),
                          color: Colors.white.withOpacity(0.4),
                          elevation: 0.0,
                          child: Padding(
                            padding: const EdgeInsets.only(left: 12.0),
                            child: ListTile(
                              title : TextFormField(
                                controller: _confirmPasswordTextController,
                                obscureText: true,
                                decoration: InputDecoration(
                                  hintText: "Şifreyi Doğrula",
                                  icon: Icon(Icons.lock_outline),
                                  border: InputBorder.none
                                ),
                                // ignore: missing_return
                                validator: (value) {
                                  if (value.isEmpty) {
                                    return "Şifre boşluğu doldurulmalıdır.";
                                  } else if (value.length < 6) {
                                    return "Şifre 6 haneden uzun olmalı!";
                                  }else if (_passwordTextController != value){
                                    return "Şifreler uyuşmuyor.";
                                  }
                                  return null;
                                },
                                // ignore: missing_return
                              ),
                                trailing : IconButton(icon: Icon(Icons.remove_red_eye), onPressed: (){}),
                            ),
                          ),
                        ),
                      ),
                      Padding(
                        padding:
                            const EdgeInsets.fromLTRB(12.0, 8.0, 12.0, 8.0),
                        child: Material(
                            borderRadius: BorderRadius.circular(20.0),
                            color: Colors.red.withOpacity(0.8),
                            elevation: 0.0,
                            child: MaterialButton(
                              onPressed: () {
                                validateForm();
                              },
                              minWidth: MediaQuery.of(context).size.width,
                              child: Text(
                                "Kayıt Ol",
                                textAlign: TextAlign.center,
                                style: TextStyle(
                                    color: Colors.white,
                                    fontWeight: FontWeight.bold,
                                    fontSize: 15.0),
                              ),
                            )),
                      ),
                      Padding(
                          padding: const EdgeInsets.all(8.0),
                          child: InkWell(
                              onTap: () {
                                Navigator.pop(context);
                              },
                              child: Text(
                                "Giriş Yap",
                                textAlign: TextAlign.center,
                                style: TextStyle(color: Colors.red),
                              ))),
                    ],
                  )),
            ),
          ),
          Visibility(
              visible: loading ?? true,
              child: Center(
                child: Container(
                  alignment: Alignment.center,
                  color: Colors.white.withOpacity(0.9),
                  child: CircularProgressIndicator(
                    valueColor: AlwaysStoppedAnimation<Color>(Colors.red),
                  ),
                ),
              ))
        ],
      ),
    );
  }

  valueChanged(e) {
    setState(() {
      if (e == "Erkek") {
        groupValue = e;
        gender = e;
      } else if (e == "Kadın") {
        groupValue = e;
        gender = e;
      }
    });
  }

  void validateForm() async{
    FormState formState =   _formKey.currentState;
    if(formState.validate()){
      User user = await firebaseAuth.currentUser;
      if(user == null){
        firebaseAuth.createUserWithEmailAndPassword(email: _emailTextController, password: _passwordTextController).then((user) => {

        });
      }
    }
  }
}

我的显示错误。

正在执行热重载... 正在将文件同步到设备 sdk gphone x86... lib/pages/signup.dart:276:60:错误:无法将参数类型“TextEditingController”分配给参数类型“String”。

  • 'TextEditingController' 来自 'package:flutter/src/widgets/editable_text.dart' ('/C:/src/flutter/packages/flutter/lib/src/widgets/editable_text.dart')。 firebaseAuth.createUserWithEmailAndPassword(email: _emailTextController, password: _passwordTextController).then((user) => { ^ lib/pages/signup.dart:276:92:错误:无法将参数类型“TextEditingController”分配给参数类型“String”。

  • 'TextEditingController' 来自 'package:flutter/src/widgets/editable_text.dart' ('/C:/src/flutter/packages/flutter/lib/src/widgets/editable_text.dart')。 firebaseAuth.createUserWithEmailAndPassword(email: _emailTextController, password: _passwordTextController).then((user) => { ^ ==========新错误=================

    void validateForm() 异步 { FormState formState = _formKey.currentState; 如果(formState.validate()){ 用户用户 = 等待 firebaseAuth.currentUser; 如果(用户==空){ 火力验证 .createUserWithEmailAndPassword( 电子邮件:_emailTextController.text, 密码:_passwordTextController.text) .then((用户) => {

               _userServices.createUser(
                   {
                 "username": _nameTextController.text,
                   "email": user.email
                 }
    
               )
         });
       }
     }
    

    } }

1 个答案:

答案 0 :(得分:0)

使用 _emailTextController.text 而不是仅使用 _emailTextController