我有一個包含此類資料的陣列(實際上有更多資料)
[
{
serviceid: "979cf8e6",
amount: 1,
price: 0,
materialsPrice: 100,
enable: true,
chenge: true
},
{
serviceid: "979cf812",
amount: 1,
price: 15.5,
materialsPrice: 0,
enable: true,
chenge: false
}
]
我的目標是在陣列的選定元素中將“啟用”更改為所需的狀態。為此,我將使用一個塊。也就是說,如果當我點擊事件時,我傳輸 (false and "979cf8e6") 。然后應該找到所需的元素(服務 = 979cf8e6)。并且這個元素應該在 false 上啟用。我試圖開始一些事情,但沒有成功。也許有人知道怎么做?))
on<OnChangeStatusListItemClick>((event, emit) async {
var serviceId = event.serviceId;//(my serviceId here)
var paymentStatus = event.status;//(my new status here)
var paymentDetails = state.listVariant; //(my list here)
PaymentDetailsModel? selected;
paymentDetails = paymentDetails.map((paymentDetailsOne) {
paymentDetailsOne.serviceid == serviceId;
var selectedPaymentDetails = paymentDetailsOne.copyWith(enable: paymentStatus);
return selectedPaymentDetails;
}).toList();
emit(state.copyWith(listVariant: paymentDetails));
});
我的 PaymentDetailsModel 模型(此模型用于 listVariant)
@freezed
class PaymentDetailsModel with _$PaymentDetailsModel {
@JsonSerializable(fieldRename: FieldRename.none, explicitToJson: true)
const factory PaymentDetailsModel({
required String serviceid,
required double? price,
required int? minmal,
required int amount,
required bool enable,
required bool chenge,
}) = _PaymentDetailsModel;
factory PaymentDetailsModel.fromJson(Map<String, dynamic> json) =>
_$PaymentDetailsModelFromJson(json);
}
uj5u.com熱心網友回復:
我想也許你會錯過如果其他檢查你的地圖功能,不太確定,但你可以嘗試:
on<OnChangeStatusListItemClick>((event, emit) async {
final serviceId = event.serviceId;//(my serviceId here)
final paymentStatus = event.status;//(my new status here)
final paymentDetails = state.listVariant.map((paymentDetailsOne) {
if ( paymentDetailsOne.serviceid == serviceId) {
return paymentDetailsOne.copyWith(enable: paymentStatus);
} else {
return paymentDetailsOne;
}
}).toList();
emit(state.copyWith(listVariant: paymentDetails));
});
uj5u.com熱心網友回復:
假設這是您的清單:
List<CustomModel> paymentDetails = [
CustomModel(
serviceid: "979cf8e6",
amount: 1,
price: 0,
materialsPrice: 100,
enable: true,
change: true),
CustomModel(
serviceid: "979cf812",
amount: 1,
price: 15.5,
materialsPrice: 0,
enable: true,
change: false),
];
你需要這樣做:
on<OnChangeStatusListItemClick>((event, emit) async {
var serviceId = event.serviceId;
var paymentStatus = event.status;
var paymentDetails = state.listVariant;
PaymentDetailsModel? selected;
var item = paymentDetails.where((element) => element.serviceid == serviceId);
if (item.isNotEmpty) {
var index = paymentDetails.indexOf(item.first);
paymentDetails[index] = CustomModel(
serviceid: item.first.serviceid,
amount: item.first.amount,
price: item.first.price,
materialsPrice: item.first.materialsPrice,
enable: paymentStatus,
chenge: item.first.chenge);
}
print("1 = ${paymentDetails.first.enable}"); // 1 = false
emit(state.copyWith(listVariant: paymentDetails));
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/516792.html
標籤:扑镖
