class AuthProvider {
final MemberRepository repository;
late final SharedPreferences prefs;
AuthProvider(this.repository);
/* ... */
bool check() {
int? userId = prefs.getInt("userId");
if (userId == null) {
return false;
}
return true;
}
int getUserId() {
int? userId = prefs.getInt("userId");
if (userId == null) {
throw PetCheeseAuthError("사용자를 찾을 수 없습니다.");
}
return userId;
}
/* ... */
}
AuthProvider는 SharedPreferences라는 외부 라이브러리를 사용한다. 해당 라이브러리의 API 중 getInt
의 경우 값을 찾을 수 없는 경우 null을 반환한다.
class CustomSharedPreferencesError {
final String message;
CustomSharedPreferencesError(this.message);
}
class CustomSharedPreferences {
late final SharedPreferences prefs;
CustomSharedPreferences() {
/* ... */
}
/* ... */
bool checkInt(String key) {
return prefs.getInt(key) != null;
}
int getInt(String key) {
int? value = prefs.getInt(key);
if (value == null) {
throw CustomSharedPreferencesError("값을 찾을 수 없습니다.");
}
return value;
}
/* ... */
}
class AuthProvider {
final MemberRepository repository;
final CustomSharedPreferences prefs;
AuthProvider(this.repository, this.prefs);
/* ... */
bool check() {
return prefs.checkInt("userId");
}
int getUserId() {
try {
int userId = prefs.getInt("userId");
return userId;
} catch (e) {
throw PetCheeseAuthError("사용자를 찾을 수 없습니다.");
}
}
/* ... */
}