Флаттер: Как проверить строку URL в форме регистрации? - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть форма регистрации со следующими полями ввода:

Имя домена Пароль электронной почты

Я бы хотел добиться следующего процесса:

Пользователь введите в бизнес-домене, введите адрес электронной почты, подключенный к домену и пароль.

Каков наилучший способ проверки приложения в фоновом режиме, если домен отправляет обратно код 200 для обеспечения проверки? Кто-нибудь из вас, опытных программистов, может посоветовать мне?

Я экспериментировал с "http 0.12.0 + 4" на pub.dev, но он не был создан именно для того, чего я хочу достичь.

import 'package:easybeezzy/screens/login_screen.dart';
import 'package:flutter/material.dart';

class SignupScreen extends StatefulWidget {
  static final String id = 'signup_screen';

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

class _SignupScreenState extends State<SignupScreen> {
  final _formKey = GlobalKey<FormState>();
  String _name, _email, _password, _domain;

  _submit() {
    if (_formKey.currentState.validate()) {
      _formKey.currentState.save();
      print(_name);
      print(_domain);
      print(_email);
      print(_password);
      //Logging in the User with Firebase
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: SingleChildScrollView(
          child: Container(
            height: MediaQuery.of(context).size.height,
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: <Widget>[
                Text(
                  'Easy Beezy',
                  style: TextStyle(
                    fontSize: 50.0,
                    fontFamily: 'PlayfairDisplay',
                  ),
                ),
                Form(
                  key: _formKey,
                  child: Column(
                    mainAxisSize: MainAxisSize.min,
                    children: <Widget>[
                      Padding(
                        padding: EdgeInsets.symmetric(
                          horizontal: 30.0,
                          vertical: 10.0,
                        ),
                        child: TextFormField(
                          decoration: InputDecoration(labelText: 'Domain'),
                          validator: (input) => input.length < 3
                              ? 'Please enter a valid Domain'
                              : null,
                          onSaved: (input) => _domain = input,
                        ),
                      ),
                      Padding(
                        padding: EdgeInsets.symmetric(
                          horizontal: 30.0,
                          vertical: 10.0,
                        ),
                        child: TextFormField(
                          decoration: InputDecoration(labelText: 'Name'),
                          validator: (input) => input.trim().isEmpty
                              ? 'Please enter a valid name'
                              : null,
                          onSaved: (input) => _name = input,
                        ),
                      ),
                      Padding(
                        padding: EdgeInsets.symmetric(
                            horizontal: 30.0, vertical: 10.0),
                        child: TextFormField(
                          decoration: InputDecoration(labelText: 'Email'),
                          validator: (input) => !input.contains('@')
                              ? 'Please enter a valid email, must be connected to the DOMAIN.'
                              : null,
                          onSaved: (input) => _email = input,
                        ),
                      ),
                      Padding(
                        padding: EdgeInsets.symmetric(
                          horizontal: 30.0,
                          vertical: 10.0,
                        ),
                        child: TextFormField(
                          decoration: InputDecoration(labelText: 'Password'),
                          validator: (input) => input.length < 6
                              ? 'Must be at least six characters'
                              : null,
                          onSaved: (input) => _password = input,
                          obscureText: true,
                        ),
                      ),
                      SizedBox(height: 20.0),
                      Container(
                        width: 250.0,
                        child: FlatButton(
                          onPressed: _submit,
                          color: Colors.amberAccent,
                          padding: EdgeInsets.all(10.0),
                          child: Text(
                            'Sign Up',
                            style: TextStyle(
                                fontSize: 20.0, color: Colors.black54),
                          ),
                        ),
                      ),
                      SizedBox(
                        height: 20.0,
                      ),
                      Container(
                        width: 250.0,
                        child: FlatButton(
                          onPressed: () => Navigator.pop(context),
                          color: Colors.blueAccent,
                          padding: EdgeInsets.all(10.0),
                          child: Text(
                            'Back to login',
                            style:
                                TextStyle(fontSize: 20.0, color: Colors.white),
                          ),
                        ),
                      ),
                    ],
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

Большое спасибо за ваше время, если вам нужна дополнительная информация о моем проекте, дайте мне знать, чтобы я мог предоставить ее вам. Вы не будете забыты, когда приложение будет готово к тестированию.

Надеюсь, я чему-то научусь у настоящих профессионалов.

...