때때로 notifyListeners를 사용하는 이유와 notifyListeners를 사용하지 않는 이유는 무엇입니까? changenotifier에서 함수를 어떻게 사용할 수 있습니까?
예를 들어,이 코드에서 때때로 우리는 notifyListeners를 사용했지만 때때로 (login () 함수에서) notifyListeners를 사용하지 않았습니다. 왜 ? notifyListeners를 사용할 때?
String get userEmail => _userEmail;
set userEmail(String value) {
_userEmail = value;
notifyListeners();
}
String get userPassword => _userPassword;
set userPassword(String value) {
_userPassword = value;
notifyListeners();
}
String get userName => _userName;
set userName(String value) {
_userName = value;
notifyListeners();
}
DateTime get dateOfBirth => _dateOfBirth;
set dateOfBirth(DateTime value) {
_dateOfBirth = value;
notifyListeners();
}
Future<bool> login() async {
try {
isLoading = true;
print(userEmail);
print(userPassword);
if (isLogin) {
await FirebaseAuth.instance.signInWithEmailAndPassword(
email: userEmail,
password: userPassword,
);
} else {
await FirebaseAuth.instance.createUserWithEmailAndPassword(
email: userEmail,
password: userPassword,
);
}
isLoading = false;
return true;
} catch (err) {
print(err);
isLoading = false;
return false;
}
}
}
게다가 누군가이 코드에서 set 메서드를 사용하는 이유에 대해 대답 할 수 있습니까?
bool get isLogin => _isLogin;
set isLogin(bool value) {
_isLogin = value;
notifyListeners();
}
이 메서드 notifyListeners()
는 재 빌드를 트리거 할 때마다 또는 특정 작업을 수행하기 위해 변경 사항을 모니터링하는 활성 리스너가있을 때마다 사용됩니다.
시나리오를 가정하면 데이터 모델이 있고 API에서 데이터를 가져 오자마자 구문 분석하고 모델 클래스를 채우면 UI가 데이터를 가져온 후 자동으로 다시 빌드되기를 원합니다!
이를 위해 notifyListeners()
데이터 클래스와 UI 코드에서 사용할 수 있습니다. 변경 사항을 모니터링하고 변경 사항이 발생하는 즉시 기본 위젯을 다시 빌드 ChangeNotifierProvider
하는 Consumer
위젯 으로 다시 빌드해야하는 부분을 래핑 할 수 있습니다. (에스).
위에서 공유 한 코드 private
에서이 파일 외부에서 액세스 할 수없는 필드를 사용 getters
했으며 setters
기본적으로이를 검색하고 수정하는 데 사용 하고 있습니다.
지금 마지막 질문에 답하기 위해 set
메서드를 사용 하거나 setter
기본적으로 값 (일반적으로 개인 값)을 업데이트하거나 수정합니다.
그냥 몇 가지 추가 정보를 제공하기 위해, 당신은해야 하지 "안전"으로 단지 getter 및 setter 필드를 포장. 이 방법은 오래되었으며 Dart 언어에서는 필요하지 않습니다.
여기에서 이에 대한 자세한 내용을 읽을 수 있습니다.
여기 에서 dart의 getter 및 setter에 대해 읽을 수도 있습니다 .
StackOverflow를 처음 사용 하셨으므로 환영합니다. 해피 플러터 링!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다