【问题标题】:Why emitting state resets state variable in flutter cubit为什么发射状态会重置 flutter cubit 中的状态变量
【发布时间】:2022-12-19 14:44:40
【问题描述】:

我正在使用 cubit 进行状态管理。我在状态中有一个变量。当发出其他一些 state 时,它会被重置。

状态文件

class UserState extends Equatable {
  final SampleModel? sampleModel;
  const UserState({this.sampleModel});
  UserState copyWith({String? name, String? avatar}) {
    return UserState(
        sampleModel: SampleModel(
            name: name ?? sampleModel?.name ?? "",
            avatar: avatar ?? sampleModel?.avatar ?? ""));
  }

  @override
  List<Object?> get props => [sampleModel];
}

class UserMainLoadingState extends UserState {}   // this resets my sampleModel why ?

class UserSavedUpdatedState extends UserState {   // One way around is by sending props in every state
  UserSavedUpdatedState({required SampleModel sample})
      : super(sampleModel: sample);
}

肘锉

 Future<void> addSampleUser({required SampleModel sample}) async {
    print("I am inside this add sample");
    print("State is ${state.sampleModel!}");   // prints sampleModel
    emit(UserSideLoadingState());
    print("State is ${state.sampleModel!}");   // Null check operator used on a null value
 }

为什么会发生这种情况,以及如何在不将 props 传递给每个状态的情况下克服这个问题。

【问题讨论】:

    标签: flutter bloc flutter-bloc cubit flutter-cubit


    【解决方案1】:

    它正在重置,因为当你发出 UserMainLoadingState 时,你没有从以前的状态复制 SampleModel,所以它丢失了。简单的解决方案是:

    class UserMainLoadingState extends UserState {
      const UserMainLoadingState({required SampleModel sample})
          : super(sampleModel: sample);
    }
    

    【讨论】:

      猜你喜欢
      • 2022-10-13
      • 2021-02-12
      • 2022-01-21
      • 2021-09-03
      • 2021-12-14
      • 2021-01-10
      • 2021-03-13
      • 1970-01-01
      • 2020-12-15
      相关资源
      最近更新 更多