import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:whatsapp_ui/features/auth/repository/auth_repository.dart';
import 'package:whatsapp_ui/models/user_model.dart';
final authControllerProvider = Provider((ref) {
final authRepository = ref.watch(authRepositoryProvider);
return AuthController(authRepository: authRepository, ref: ref);
});
final userDataAuthProvider = FutureProvider((ref) {
final authController = ref.watch(authControllerProvider);
return authController.getUserData();
});
이 authController는 밑의 클래스명과 동일합니다, 레퍼런스 변수 니깐 점찍고 클래스 안의 메소드에 접근할 수 있다고 생각하지만, authcontroller라고변수 선언을 한적도 없고 그냥 클래스명의 소문자로 써서 객체임을 표현하고 잇습니다. 헷갈립니다, 그냥 작명이라면 메소드에 접근 할 수 없을 텐데 접근한걸 보면 밑의 클래스의 객체이고 근데 클래스 밖에서 전역변수로 정의 되있습니다, 이 문젤 리버포드 공홈에 가도 잘 모르겠어서 여기에 올립니당.
class AuthController {
final AuthRepository authRepository;
final ProviderRef ref;
AuthController({
required this.authRepository,
required this.ref,
});
Future<UserModel?> getUserData() async {
UserModel? user = await authRepository.getCurrentUserData();
return user;
}