ChangeNotifier에서 notifyListeners를 사용할 때?

냉기

때때로 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

VueJS에서 Typescript를 사용할 때 TypeError

분류에서Dev

Python에서 except를 사용할 때 SyntaxError

분류에서Dev

Android에서 RecyclerView를 사용할 때 NPE

분류에서Dev

Android에서 CheckBox를 사용할 때 NullPointerException

분류에서Dev

$ USER를 사용할 때 "root"를 에코

분류에서Dev

메서드를 호출 할 때 _ 사용

분류에서Dev

다른 사람에서 메서드를 호출 할 때 사용

분류에서Dev

Unity에서 GetComponent <> ()를 사용할 때 사전을 읽지 못함

분류에서Dev

NSFetchedResultsController에서 sectionNameKeyPath를 사용할 때 순서

분류에서Dev

Numba에서 클래스를 사용할 때의 서명 오류

분류에서Dev

Rstudio 서버를 사용할 때 httr에서 listener_endpoint 구성

분류에서Dev

"?"를 사용할 수 없습니다. .htaccess 때문에 URL에서

분류에서Dev

mysql 쿼리에서 max ()를 사용할 때 에코 오류

분류에서Dev

사용자 confimation에 OnBackButtonpressed ()를 사용할 때 DisplayAlert 응답 대기

분류에서Dev

Angular : for (key, value)를 사용할 때 ng-options에 필터 사용

분류에서Dev

Nginx를 사용할 때 Odoo에서 사용자 IP 주소를 얻는 방법

분류에서Dev

useState에서 객체를 상태로 사용할 때 rerenders 방지

분류에서Dev

Python 3에서 Keras를 사용할 때 ValueError

분류에서Dev

axios에서 POST를 사용할 때 307 상태 코드 받기

분류에서Dev

Memcached를 사용할 때 VSCode PHP Intelephense에서 오류 표시

분류에서Dev

Flutter에서 Dio를 사용할 때 응답 헤더 무시

분류에서Dev

JQuery mousemove 함수를 사용할 때 DIV 내에서 유지

분류에서Dev

SQLAlchemy에서 setter를 사용할 때 AttributeError 가져 오기

분류에서Dev

Python에서 multiprocessing.Array를 사용할 때 OSError (Errno 9)

분류에서Dev

함수에서 ensym, sym vs enquo를 사용할 때 이해

분류에서Dev

Ansible에서 범위를 반복 할 때 변수 사용

분류에서Dev

함수를 사용할 때 Sequelize에서 그룹화

분류에서Dev

Blazor wasm에서 CSharpScript를 사용할 때 System.IO.FileNotFoundException

분류에서Dev

React에서 후크를 사용할 때 무한 루프

Related 관련 기사

  1. 1

    VueJS에서 Typescript를 사용할 때 TypeError

  2. 2

    Python에서 except를 사용할 때 SyntaxError

  3. 3

    Android에서 RecyclerView를 사용할 때 NPE

  4. 4

    Android에서 CheckBox를 사용할 때 NullPointerException

  5. 5

    $ USER를 사용할 때 "root"를 에코

  6. 6

    메서드를 호출 할 때 _ 사용

  7. 7

    다른 사람에서 메서드를 호출 할 때 사용

  8. 8

    Unity에서 GetComponent <> ()를 사용할 때 사전을 읽지 못함

  9. 9

    NSFetchedResultsController에서 sectionNameKeyPath를 사용할 때 순서

  10. 10

    Numba에서 클래스를 사용할 때의 서명 오류

  11. 11

    Rstudio 서버를 사용할 때 httr에서 listener_endpoint 구성

  12. 12

    "?"를 사용할 수 없습니다. .htaccess 때문에 URL에서

  13. 13

    mysql 쿼리에서 max ()를 사용할 때 에코 오류

  14. 14

    사용자 confimation에 OnBackButtonpressed ()를 사용할 때 DisplayAlert 응답 대기

  15. 15

    Angular : for (key, value)를 사용할 때 ng-options에 필터 사용

  16. 16

    Nginx를 사용할 때 Odoo에서 사용자 IP 주소를 얻는 방법

  17. 17

    useState에서 객체를 상태로 사용할 때 rerenders 방지

  18. 18

    Python 3에서 Keras를 사용할 때 ValueError

  19. 19

    axios에서 POST를 사용할 때 307 상태 코드 받기

  20. 20

    Memcached를 사용할 때 VSCode PHP Intelephense에서 오류 표시

  21. 21

    Flutter에서 Dio를 사용할 때 응답 헤더 무시

  22. 22

    JQuery mousemove 함수를 사용할 때 DIV 내에서 유지

  23. 23

    SQLAlchemy에서 setter를 사용할 때 AttributeError 가져 오기

  24. 24

    Python에서 multiprocessing.Array를 사용할 때 OSError (Errno 9)

  25. 25

    함수에서 ensym, sym vs enquo를 사용할 때 이해

  26. 26

    Ansible에서 범위를 반복 할 때 변수 사용

  27. 27

    함수를 사용할 때 Sequelize에서 그룹화

  28. 28

    Blazor wasm에서 CSharpScript를 사용할 때 System.IO.FileNotFoundException

  29. 29

    React에서 후크를 사용할 때 무한 루프

뜨겁다태그

보관