import 'package:appwrite/appwrite.dart' as account_models; import 'package:appwrite/models.dart' as user_models; import 'package:flutter/cupertino.dart'; import 'package:get/get.dart'; import 'package:appwrite/appwrite.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; class LoginController extends GetxController { final _account = Rxn(); final mailController = TextEditingController(); final passwordController = TextEditingController(); final nameController = TextEditingController(); final _endpoint = dotenv.env['APPWRITE_ENDPOINT_URL'] ?? ''; final _projectId = dotenv.env['APPWRITE_PROJECT_ID'] ?? ''; final _logedInUser = Rxn(); account_models.Account? get account => _account.value; user_models.User? get logedInUser => _logedInUser.value; @override void onInit() { Client client = Client() .setEndpoint(_endpoint) .setProject(_projectId); _account.value = Account(client); super.onInit(); } Future login(String email, String password) async { await _account.value!.createEmailPasswordSession( email: email, password: password, ); final user = await _account.value!.get(); _logedInUser.value = user; } Future register(String email, String password, String name) async { await _account.value!.create( userId: ID.unique(), email: email, password: password, name: name, ); await login(email, password); } Future logout() async { await _account.value!.deleteSession(sessionId: 'current'); _logedInUser.value = null; } @override void onClose() { mailController.dispose(); passwordController.dispose(); nameController.dispose(); super.onClose(); } }