import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:flutter/material.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:input_kwh/login.dart'; class RegistrationScreen extends StatefulWidget { @override _RegistrationScreenState createState() => _RegistrationScreenState(); } class _RegistrationScreenState extends State { final FirebaseAuth _auth = FirebaseAuth.instance; final GlobalKey _formKey = GlobalKey(); late String _email, _password, _username; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Registration'), ), body: Center( child: Padding( padding: const EdgeInsets.all(20.0), child: Form( key: _formKey, child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ TextFormField( validator: (input) { if (input!.isEmpty) { return 'Please type an email'; } return null; }, onSaved: (input) => _email = input!, decoration: InputDecoration(labelText: 'Email'), ), TextFormField( validator: (input) { if (input!.length < 6) { return 'Your password needs to be at least 6 characters'; } return null; }, onSaved: (input) => _password = input!, decoration: InputDecoration(labelText: 'Password'), obscureText: true, ), TextFormField( validator: (input) { if (input!.isEmpty) { return 'Please type an username'; } return null; }, onSaved: (input) => _username = input!, decoration: InputDecoration(labelText: 'Username'), ), SizedBox(height: 20), ElevatedButton( onPressed: signUp, child: Text('Sign Up'), ), ], ), ), ), ), ); } Future signUp() async { if (_formKey.currentState!.validate()) { _formKey.currentState!.save(); try { // Membuat pengguna baru di Firebase Authentication UserCredential userCredential = await _auth.createUserWithEmailAndPassword( email: _email, password: _password, ); // Menyimpan data pengguna ke Firestore Firebase await FirebaseFirestore.instance .collection('akun') .doc(userCredential.user!.uid) .set({ 'email': _email, 'password': _password, 'username': _username, }); ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('Pengguna berhasil ditambahkan'), ), ); // Jika registrasi berhasil, arahkan ke halaman login Navigator.push(context, MaterialPageRoute(builder: (_) => Login())); } catch (e) { print('Error adding user: $e'); ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('Gagal menambahkan pengguna'), ), ); } } } }