====social_login.dart====
abstract class SocialLogin{
Future<bool> login();
Future<bool> logout();
}
====kakao_login.dart====
import 'package:flutter_study/social_login.dart';
import 'package:kakao_flutter_sdk_user/kakao_flutter_sdk_user.dart';
class KakaoLogin implements SocialLogin{
@override
Future<bool> login() async{
try{
bool isInstalled = await isKakaoTalkInstalled();
if(isInstalled){
try{
await UserApi.instance.loginWithKakaoTalk();
return true;
}catch(error){
return false;
}
}
else{
try{
await UserApi.instance.loginWithKakaoAccount();
return true;
}catch(error){
return false;
}
}
}catch(error){
return false;
}
}
@override
Future<bool> logout() async{
try{
await UserApi.instance.unlink();
return true;
}catch(error){
return false;
}
}
}
====main_view_model.dart====
import 'package:flutter_study/social_login.dart';
import 'package:kakao_flutter_sdk_user/kakao_flutter_sdk_user.dart';
class MainViewModel{
final SocialLogin _socialLogin;
bool isLogined = false;
User? user;
MainViewModel(this._socialLogin);
Future login() async {
isLogined = await _socialLogin.login();
if (isLogined) {
user = await UserApi.instance.me();
}
}
Future logout() async {
await _socialLogin.logout();
isLogined = false;
user = null;
}
}
이 코드에서 MainViewModel의 login과 logout은 SocialLoing의 loing logout을 재정의 한건가요?
이 댓글은 게시물 작성자가 삭제하였습니다.
ㅇㅇ 객체지향의 가장병신같은점이지 쓸데없이 코드를길게만듬
근데 KakaoLogin에는 @override로 재정의한다는게 명시되어있는데 MainViewModel에는 @override가 없는데 저게 그냥 MainViewModel의 함수인지 SocialLogin의 추상함수를 재정의한건지 어떻게 알죠?
메인뷰모델의 함수임 임플리먼트가 없기때문에 이름만 똑같이한거고 비즈니스로직이랍시고 로그인됏는지 사용자는 누구인지 더 추가한거임
그럼 MainViewModel에서 SocialLogin이 하는 역할은 없나요? 생성자에 인자로 들어가있는데
하는일이 있음 실제 로그인 구현체는 소셜로그인 클래스를 상속받은 카카오어쩌고 클래스가 됨 = 소셜로그인
아 졸라 어렵네요 하..
이것만 몇시간째 생각중인데 도저히 이해가 안감 푸우
상속개념을 잘 모르면 그 개념부터 익혀야할듯 상위클래스는 하위클래스를 담을수있다는것도 많이 연습해보는것이 좋다 더 간단한 소스로
항상 좋은말 감사합니다. 아까 일베지향 빼고..