registration_screen.dart 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // ignore_for_file: library_private_types_in_public_api
  2. import 'dart:convert';
  3. import 'package:flutter/material.dart';
  4. import 'package:http/http.dart' as http;
  5. class RegistrationScreen extends StatefulWidget {
  6. static const routeName = 'registrationScreen';
  7. const RegistrationScreen({super.key});
  8. @override
  9. _RegistrationScreenState createState() => _RegistrationScreenState();
  10. }
  11. class _RegistrationScreenState extends State<RegistrationScreen> {
  12. final TextEditingController _usernameController = TextEditingController();
  13. final TextEditingController _emailController = TextEditingController();
  14. final TextEditingController _passwordController = TextEditingController();
  15. Future<void> _registerUser() async {
  16. const String apiUrl = 'YOUR_API_ENDPOINT'; // Replace with your API endpoint
  17. final response = await http.post(
  18. Uri.parse(apiUrl),
  19. headers: {'Content-Type': 'application/json'},
  20. body: jsonEncode({
  21. 'username': _usernameController.text.trim(),
  22. 'email': _emailController.text.trim(),
  23. 'password': _passwordController.text.trim(),
  24. }),
  25. );
  26. if (response.statusCode == 201) {
  27. // User registration successful
  28. print('User registered successfully');
  29. } else {
  30. // Handle registration errors
  31. print('Error during registration: ${response.statusCode}');
  32. print('Response body: ${response.body}');
  33. }
  34. }
  35. @override
  36. Widget build(BuildContext context) {
  37. return Scaffold(
  38. appBar: AppBar(
  39. title: const Text('User Registration'),
  40. ),
  41. body: Padding(
  42. padding: const EdgeInsets.all(16.0),
  43. child: Column(
  44. mainAxisAlignment: MainAxisAlignment.center,
  45. children: [
  46. TextField(
  47. controller: _usernameController,
  48. decoration: const InputDecoration(labelText: 'Username'),
  49. ),
  50. const SizedBox(height: 16.0),
  51. TextField(
  52. controller: _emailController,
  53. decoration: const InputDecoration(labelText: 'Email'),
  54. ),
  55. const SizedBox(height: 16.0),
  56. TextField(
  57. controller: _passwordController,
  58. decoration: const InputDecoration(labelText: 'Password'),
  59. obscureText: true,
  60. ),
  61. const SizedBox(height: 24.0),
  62. ElevatedButton(
  63. onPressed: _registerUser,
  64. child: const Text('Register'),
  65. ),
  66. ],
  67. ),
  68. ),
  69. );
  70. }
  71. }