【发布时间】:2021-07-14 01:38:21
【问题描述】:
我正在发出发布请求,然后返回成功/错误消息。我的状态设置是这样的:
import 'package:did_flutter_windows/blocs/createDid/formSubmissionStatus.dart';
class CreateDidState {
final String firstName;
final String lastName;
final String email;
final String phoneNumber;
final DateTime? dateOfBirth;
final String sex;
final String address;
final String city;
final String state;
final String postalCode;
final String country;
final FormSubmissionStatus formStatus;
CreateDidState({
this.firstName = "",
this.lastName = "",
this.email = "",
this.phoneNumber = "",
this.dateOfBirth,
this.sex = "",
this.address = "",
this.city = "",
this.state = "",
this.postalCode = "",
this.country = "",
this.formStatus = const InitialFormStatus(),
});
CreateDidState copyWith({
String? firstname,
String? lastName,
String? email,
String? phoneNumber,
DateTime? dateOfBirth,
String? sex,
String? address,
String? city,
String? state,
String? postalCode,
String? country,
FormSubmissionStatus? formStatus,
}) {
return CreateDidState(
firstName: firstname ?? this.firstName,
lastName: lastName ?? this.lastName,
email: email ?? this.email,
phoneNumber: phoneNumber ?? this.phoneNumber,
dateOfBirth: dateOfBirth ?? this.dateOfBirth,
sex: sex ?? this.sex,
address: address ?? this.address,
city: city ?? this.city,
state: state ?? this.state,
postalCode: postalCode ?? this.postalCode,
country: country ?? this.country,
formStatus: formStatus ?? this.formStatus,
);
}
}
formstatus 代表提交可以处于的不同状态。所以初始/提交/成功/失败。
import 'package:did_flutter_windows/data/models/did.dart';
abstract class FormSubmissionStatus {
const FormSubmissionStatus();
}
class InitialFormStatus extends FormSubmissionStatus {
const InitialFormStatus();
}
class FormSubmitting extends FormSubmissionStatus {}
class SubmissionSuccess extends FormSubmissionStatus {
final Did did;
final String successMessage;
SubmissionSuccess({required this.did, required this.successMessage});
}
class SubmissionFailed extends FormSubmissionStatus {
final error;
SubmissionFailed({required this.error});
}
如您所见,我将响应消息传递给表单的状态,但我不知道如何在 ui 中访问该消息。我现在有一个 BlocListener 监听 formstatus 并在提交成功或失败时返回静态通知。但是我想让消息动态并显示从后端返回的消息传递给formstatus。
BlocListener<CreateDidBloc, CreateDidState>(
listener: (context, state) {
if (state.formStatus is SubmissionSuccess) {
showSuccessNoti(
message: state.formStatus.succsessMessage, //TODO: make mesasge dynamic and display message of formstatus
context: context);
} else if (state.formStatus is SubmissionFailed) {
showErrorNoti(message: "error", context: context);
}
},
...
【问题讨论】:
标签: flutter dart bloc flutter-bloc