当我们在ChangeNotifier中使用notifyListeners时?

为什么我们有时使用notifyListeners 以及为什么我们不使用notifyListeners?我们如何在 changenotifier 中使用函数?

例如,在这段代码中,有时我们使用了notifyListeners,但有时我们没有使用notifyListeners(在login() 函数中)。为什么 ?当我们使用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 代码中使用,您可以使用将监视更改ChangeNotifierProviderConsumerWidget或Widget包装需要重建的部分,一旦遇到任何更改,它们将重建底层 Widget (s)。

在您上面共享的代码中,您使用private了无法在此文件之外访问的字段,并且您正在使用getterssetters基本上检索它们并修改它们

现在回答你的最后一个问题,我们使用set方法或setter基本上更新或修改一个值(通常是一个私有值)

只是为你提供一些额外的信息,您应包装在getter和setter领域只是为了“安全”。这种方法是旧的,在 Dart 语言中不需要

您可以在此处阅读有关此内容的更多信息

您还可以在此处阅读有关 dart 中的 getter 和 setter 的信息。

由于您是 StackOverflow 的新手,我欢迎您。飘飘快乐!


以上是当我们在ChangeNotifier中使用notifyListeners时?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>