Advertisement
Hevernooo

Регистрация

Nov 19th, 2024
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 4.53 KB | None | 0 0
  1. import 'package:firebase_auth/firebase_auth.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:plantual_1/ui/auth/signInScreen.dart';
  4. import 'package:plantual_1/widgets/round_button.dart';
  5. import 'package:plantual_1/utils/utils.dart';
  6.  
  7. import '../../scenes/home.dart';
  8.  
  9. class signUpScreen extends StatefulWidget {
  10.   const signUpScreen({super.key});
  11.  
  12.   @override
  13.   State<signUpScreen> createState() => _signUpScreenState();
  14. }
  15.  
  16. class _signUpScreenState extends State<signUpScreen> {
  17.  
  18.   bool loading = false;
  19.   final _formKey = GlobalKey<FormState>();
  20.   final emailController = TextEditingController();
  21.   final passwordController = TextEditingController();
  22.  
  23.   FirebaseAuth _auth = FirebaseAuth.instance;
  24.  
  25.   @override
  26.   void dispose(){
  27.     super.dispose();
  28.     emailController.dispose();
  29.     passwordController.dispose();
  30.   }
  31.  
  32.   void signUp(){
  33.     setState(() {
  34.       loading = true;
  35.     });
  36.     _auth.createUserWithEmailAndPassword(
  37.         email: emailController.text.toString(),
  38.         password: passwordController.text.toString()).then((value){
  39.       setState(() {
  40.         loading = false;
  41.       });
  42.       utilsDone().toastMessage('Аккаунт успешно создан');
  43.       Navigator.push(context, MaterialPageRoute(builder: (context) => Home()));
  44.     }).onError((error, stackTrace){
  45.       if(error.toString() == '[firebase_auth/invalid-email] The email address is badly formatted.') {
  46.         utilsError().toastMessage('Почта введена неправильно');
  47.       };
  48.       setState(() {
  49.         loading = false;
  50.       });
  51.     });
  52.   }
  53.  
  54.   @override
  55.   Widget build(BuildContext context) {
  56.     return Scaffold(
  57.       appBar: AppBar(
  58.         backgroundColor: Colors.lightGreen,
  59.         foregroundColor: Colors.white,
  60.         centerTitle: true,
  61.         title: Text('Регистрация', style: TextStyle(color: Colors.white)),
  62.       ),
  63.       body: Padding(
  64.         padding: const EdgeInsets.symmetric(horizontal: 20),
  65.         child: Column(
  66.           mainAxisAlignment: MainAxisAlignment.center,
  67.           crossAxisAlignment: CrossAxisAlignment.center,
  68.           children: [
  69.             Form(
  70.               key: _formKey,
  71.               child: Column(
  72.                 children: [
  73.                   TextFormField(
  74.                     keyboardType: TextInputType.emailAddress,
  75.                     controller: emailController,
  76.                     decoration: const InputDecoration(
  77.                         hintText: 'Почта',
  78.                         helperText: 'Введите эл.почту',
  79.                         prefixIcon: Icon(Icons.alternate_email)
  80.                     ),
  81.                     validator: (value) {
  82.                       if(value!.isEmpty){
  83.                         return 'Введите почту';
  84.                       }
  85.                       return null;
  86.                     },
  87.                   ),
  88.                   const SizedBox(height: 10),
  89.                   TextFormField(
  90.                     keyboardType: TextInputType.text,
  91.                     obscureText: true,
  92.                     controller: passwordController,
  93.                     decoration: const InputDecoration(
  94.                         hintText: 'Пароль',
  95.                         helperText: 'Введите пароль',
  96.                         prefixIcon: Icon(Icons.lock_open)
  97.                     ),
  98.                     validator: (value) {
  99.                       if(value!.isEmpty){
  100.                         return 'Введите пароль';
  101.                       }
  102.                       return null;
  103.                     },
  104.                   ),
  105.                 ],
  106.               ),
  107.             ),
  108.             const SizedBox(height: 30),
  109.             roundButton(
  110.               title: 'Зарегистрироваться',
  111.               loading: loading,
  112.               onTap: () {
  113.               if(_formKey.currentState!.validate()){
  114.                 signUp();
  115.               }
  116.             },),
  117.             const SizedBox(height: 10),
  118.             Row(
  119.               mainAxisAlignment: MainAxisAlignment.center,
  120.               children: [
  121.                 Text('Уже есть аккаунт?'),
  122.                 TextButton(
  123.                     onPressed: (){
  124.                       Navigator.push(context,
  125.                           MaterialPageRoute(builder: (context) => signInScreen())
  126.                       );
  127.                     },
  128.                     child: Text('Войти'))
  129.               ],
  130.             )
  131.           ],
  132.         ),
  133.       ),
  134.     );
  135.   }
  136. }
  137.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement