状态不会在页面导航抖动时持续存在

问题描述

我有一个应用程序,我正在使用 riverpod 管理状态。好吧,我注意到在页面导航上我丢失了状态并重置为初始状态。这是我的代码

提供者

final registerauthControllerProvider = StateNotifierProvider.autodispose<
 RegisterauthController,AuthenticatingUser>((ref) => RegisterauthController(ref.read));

状态通知代码

class RegisterauthController extends StateNotifier<AuthenticatingUser> {
RegisterauthController(this._read) : super(AuthenticatingUser.initial());

final Reader _read;

void updateEmail(String email) async {
state = state.copyWith(authenticating: true);
final getEmail = await _read(authRepositoryProvider).checkEmail(email);
if (getEmail == 'Email Already Exists') {
  state = state.copyWith(authenticating: false,emailError: true);
}
state = state.copyWith(authenticating: false,email: email);
print(state);
}

void updatePersonalDetails(
   String firstName,String lastName,String phoneNumber) {
   state = state.copyWith(
    authenticating: false,firstName: firstName,lastName: lastName,phoneNumber: phoneNumber);
 print(state);

} }

状态类 导入 'package:equatable/equatable.dart';

class AuthenticatingUser extends Equatable {
  final String? firstName;
  final String? lastName;
  final String? email;
  final String? phoneNumber;
  final String? password;
  final int? passcode;
  final String? img;
  final bool authenticating;
  final bool emailError;

  AuthenticatingUser(
      {this.firstName,this.lastName,this.email,this.phoneNumber,this.password,this.passcode,required this.authenticating,required this.emailError,this.img});

factory AuthenticatingUser.initial() {
  return AuthenticatingUser(
    firstName: null,lastName: null,email: null,phoneNumber: null,passcode: null,password: null,authenticating: false,emailError: false,img: null);
  }

AuthenticatingUser copyWith(
  {String? firstName,String? lastName,String? email,String? phoneNumber,int? passcode,required bool authenticating,bool emailError = false,String? password,String? img}) {
 return AuthenticatingUser(
    authenticating: authenticating,email: email,password: password,passcode: passcode,phoneNumber: phoneNumber,emailError: emailError,img: img);
}

  @override
  List<Object?> get props =>
      [firstName,lastName,email,phoneNumber,password,img,authenticating];
}

第 1 页点击方法

 onTap: () => {
              print('object'),if (EmailValidator.validate(emailEditingController.text))
                {
                  context
                      .read(registerauthControllerProvider.notifier)
                      .updateEmail(emailEditingController.text),},// notValid = true,

更新电子邮件函数的打印状态返回带有更新电子邮件的状态,但是当通过提供程序侦听器导航到第二页时,我使用 updatePersonalDetails 函数更新状态时,我看到 authenticateduser.email 状态值返回到无效的。就像在每次页面导航后都会重置状态。我希望状态在页面导航后保持不变。我怎样才能做到这一点?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)