====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에서 sociallogin을 import하고 생성자에 인자로 넣었는데 추상클래스라 아무런 기능도 못하는데 왜 넣은거죠? 재정의를 한 것도 아니고..
댓글 0