Future addExpenseInDatabase(BuildContext context) async {
Map splitByMap = {};
Map paidByMap = {};
for (var element in splitByList) {
String dateTime = DateTime.now().microsecondsSinceEpoch.toString();
splitByMap[dateTime] = element.toJson();
}
for (var element in paidByList) {
String dateTime = DateTime.now().microsecondsSinceEpoch.toString();
paidByMap[dateTime] = element.toJson();
}
getIt().showCircularDialog(context);
Future.delayed(Duration(seconds: 5)).then((value) async {
DateFormat formatter = DateFormat('yyyy-MM-dd');
formattedDate.value = formatter.format(selectedDate.value);
if (!isNullEmptyOrFalse(amountController.value.text)) {
if (paidByList.isNotEmpty && splitByList.isNotEmpty) {
await FirebaseHelper.addAndEditExpense(
isEdit: isFromExpenseEdit.isTrue,
groupID: groupModel.value.groupID.toString(),
expenseId: expenseList.value.expenseID.toString(),
description: descriptionController.value.text,
iconPath: selectedCategory.value.icon.toString(),
currency: selectedCurrency.value,
amount: amountController.value.text,
expenseDate: formattedDate.value,
notes: noteController.value.text,
paidByList: paidByMap,
splitByList: splitByMap,
).then((value) {
activityList.add(ActivityModel(
image: groupModel.value.groupImage.toString(),
groupType: groupModel.value.groupType.toString(),
title: isFromExpenseEdit.isTrue == true
? "You updated '${descriptionController.value.text}' in '${groupModel.value.groupName}'"
: "You added '${descriptionController.value.text}' in '${groupModel.value.groupName}'",
date: DateTime.now().toString(),
));
List activityListJson = activityList.map((friend) => friend.toJson()).toList();
box.write(ArgumentConstant.activityList, activityListJson);
List splitByListJson = [];
box.write(ArgumentConstant.passSplitByList, splitByListJson);
List paidByListJson = [];
box.write(ArgumentConstant.passPaidByList, paidByListJson);
getIt().hideCircularDialog(context);
Get.back();
},);
} else {
getIt().hideCircularDialog(context);
Fluttertoast.showToast(msg: "Enter paid by and split by");
}
} else {
getIt().hideCircularDialog(context);
Fluttertoast.showToast(msg: "Enter description and amount");
FocusScope.of(context).requestFocus(focusNode);
}
});
}
Мне нужно вставить несколько данных одновременно в базу данных Firebase реального времени. Эта функция отвечает за добавление записи о расходах в базу данных и обновление локальных компонентов пользовательского интерфейса в зависимости от того, была ли операция успешной или нет. Он включает проверку данных, асинхронные операции с базой данных и обратную связь от пользовательского интерфейса.
[code]Future addExpenseInDatabase(BuildContext context) async { Map splitByMap = {}; Map paidByMap = {}; for (var element in splitByList) { String dateTime = DateTime.now().microsecondsSinceEpoch.toString(); splitByMap[dateTime] = element.toJson(); } for (var element in paidByList) { String dateTime = DateTime.now().microsecondsSinceEpoch.toString(); paidByMap[dateTime] = element.toJson(); } getIt().showCircularDialog(context); Future.delayed(Duration(seconds: 5)).then((value) async { DateFormat formatter = DateFormat('yyyy-MM-dd'); formattedDate.value = formatter.format(selectedDate.value); if (!isNullEmptyOrFalse(amountController.value.text)) { if (paidByList.isNotEmpty && splitByList.isNotEmpty) { await FirebaseHelper.addAndEditExpense( isEdit: isFromExpenseEdit.isTrue, groupID: groupModel.value.groupID.toString(), expenseId: expenseList.value.expenseID.toString(), description: descriptionController.value.text, iconPath: selectedCategory.value.icon.toString(), currency: selectedCurrency.value, amount: amountController.value.text, expenseDate: formattedDate.value, notes: noteController.value.text, paidByList: paidByMap, splitByList: splitByMap, ).then((value) { activityList.add(ActivityModel( image: groupModel.value.groupImage.toString(), groupType: groupModel.value.groupType.toString(), title: isFromExpenseEdit.isTrue == true ? "You updated '${descriptionController.value.text}' in '${groupModel.value.groupName}'" : "You added '${descriptionController.value.text}' in '${groupModel.value.groupName}'", date: DateTime.now().toString(), )); List activityListJson = activityList.map((friend) => friend.toJson()).toList(); box.write(ArgumentConstant.activityList, activityListJson); List splitByListJson = []; box.write(ArgumentConstant.passSplitByList, splitByListJson); List paidByListJson = []; box.write(ArgumentConstant.passPaidByList, paidByListJson); getIt().hideCircularDialog(context); Get.back(); },); } else { getIt().hideCircularDialog(context); Fluttertoast.showToast(msg: "Enter paid by and split by"); } } else { getIt().hideCircularDialog(context); Fluttertoast.showToast(msg: "Enter description and amount"); FocusScope.of(context).requestFocus(focusNode); } }); } [/code] Мне нужно вставить несколько данных одновременно в базу данных Firebase реального времени. Эта функция отвечает за добавление записи о расходах в базу данных и обновление локальных компонентов пользовательского интерфейса в зависимости от того, была ли операция успешной или нет. Он включает проверку данных, асинхронные операции с базой данных и обратную связь от пользовательского интерфейса.