import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../providers/settings_provider.dart'; import '../services/api_service.dart'; class RegisterPage extends StatefulWidget { @override _RegisterPageState createState() => _RegisterPageState(); } class _RegisterPageState extends State { final _usernameController = TextEditingController(); final _passwordController = TextEditingController(); bool _isLoading = false; void _handleRegister() async { setState(() => _isLoading = true); final settings = context.read(); final api = ApiService(settings, null); try { final response = await api.register( _usernameController.text, _passwordController.text, ); if (response.statusCode == 201) { ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("Registered! Please login."))); Navigator.pop(context); } else { final error = jsonDecode(response.body)['error'] ?? "Registration Failed"; ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(error))); } } catch (e) { ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("Network Error"))); } finally { setState(() => _isLoading = false); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text("Register")), body: Padding( padding: const EdgeInsets.all(16.0), child: Column( children: [ TextField(controller: _usernameController, decoration: InputDecoration(labelText: "Username")), TextField(controller: _passwordController, decoration: InputDecoration(labelText: "Password"), obscureText: true), SizedBox(height: 20), _isLoading ? CircularProgressIndicator() : ElevatedButton(onPressed: _handleRegister, child: Text("Register")), ], ), ), ); } }