Created with <3 with dartpad.dev.
Last active
October 26, 2023 04:10
-
-
Save taghassan54/fa84f486ce4b8d54970fbe11efa0a696 to your computer and use it in GitHub Desktop.
clean architecture
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void main() async { | |
Login auth = Login(new AuthRepoImpl()); | |
User? loginResult = | |
await auth.call(LoginModel(userName: "taghassan54", userPass: "123456")); | |
print(loginResult?.id); | |
print(loginResult?.user); | |
} | |
//abstract USECASE | |
abstract class UseCase<Type, Param> { | |
Future<Type> call(Param params); | |
} | |
class NoParams {} | |
//LOGIN USERCASE | |
class Login implements UseCase<User?, LoginModel> { | |
final AuthRepo loginRepository; | |
Login(this.loginRepository); | |
@override | |
Future<User?> call(LoginModel params) async { | |
return await loginRepository.login( | |
params.userName, params.userPass); | |
} | |
} | |
//LOGIN PARAM MODEL | |
class LoginModel { | |
final String userName; | |
final String userPass; | |
LoginModel({required this.userName, required this.userPass}); | |
} | |
//user reponse model | |
class User { | |
final int id; | |
final String user; | |
User({ | |
required this.id, | |
required this.user, | |
}); | |
} | |
// DataSource | |
class LoginUserDataSource { | |
Future<User?> login(userName, userPass) async { | |
if (userName == "taghassan54" && userPass == "123456") { | |
return User(id: 1, user: "admin"); | |
} else { | |
return null; | |
} | |
} | |
} | |
// abstract Repo | |
abstract class AuthRepo { | |
Future<User?> login(userName, userPass); | |
} | |
//Auth Repo | |
class AuthRepoImpl extends AuthRepo { | |
LoginUserDataSource datasource = new LoginUserDataSource(); | |
Future<User?> login(userName, userPass) async { | |
return await datasource.login(userName, userPass); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment