import 'dart:convert'; import 'package:agrilink_vocpro/core/state/result_state.dart'; import 'package:agrilink_vocpro/domain/service/app_service.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:googleapis_auth/auth_io.dart'; import 'package:http/http.dart' as http; class AuthProvider extends ChangeNotifier { TextEditingController emailController = TextEditingController(); TextEditingController passwordController = TextEditingController(); bool _isRememberMe = false; bool get isRememberMe => _isRememberMe; String errorMessage = ''; ResultState loginState = ResultState.initial; void controllerClear() { emailController.clear(); passwordController.clear(); notifyListeners(); } void setRememberMe(bool value) { _isRememberMe = value; notifyListeners(); } Future login(context, {required String email, required String password}) async { loginState = ResultState.loading; notifyListeners(); try { final result = await AppService().login( username: email, password: password, rememberMe: isRememberMe.toString(), ); if (result.data != null) { loginState = ResultState.hasData; notifyListeners(); } else { errorMessage = 'Login gagal, data tidak ditemukan'; loginState = ResultState.error; notifyListeners(); } } catch (e) { showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: const Text('Error'), content: Text('$e'), actions: [ TextButton( child: const Text('OK'), onPressed: () { Navigator.of(context).pop(); }, ), ], ); }, ); loginState = ResultState.error; notifyListeners(); } } bool validateInputs() { if (emailController.text.isEmpty || passwordController.text.isEmpty) { errorMessage = 'Email dan password tidak boleh kosong'; loginState = ResultState.error; notifyListeners(); return false; } return true; } Future getAccessToken() async { try { final serviceAccountJson = await rootBundle.loadString( 'assets/json/agrilink-vocpro-b37f9-firebase-adminsdk-a4f6g-e6565344e3.json', ); final accountCredentials = ServiceAccountCredentials.fromJson( json.decode(serviceAccountJson), ); const scope = ['https://www.googleapis.com/auth/firebase.messaging']; final client = http.Client(); try { final accessCredential = await obtainAccessCredentialsViaServiceAccount( accountCredentials, scope, client); final accessToken = accessCredential.accessToken.data; print('Access Token: $accessToken'); } catch (e) { print('Error: $e'); } } catch (e) { print('Error 2: $e'); } } }