TKK_E32210493/lib/registrasi.dart

115 lines
3.5 KiB
Dart

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<RegistrationScreen> {
final FirebaseAuth _auth = FirebaseAuth.instance;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
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<void> 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'),
),
);
}
}
}
}