getFormContainer function

List<Widget> getFormContainer({
  1. required RxList<MahasMessageModel> error,
  2. RxBool? loadingSubmit,
  3. required RxBool loadingForm,
  4. RxBool? loadingDelete,
  5. RxBool? isReadOnly,
  6. required Widget child,
  7. Function? saveOnTap,
  8. Future<void> onRefresh()?,
  9. Function? editOnTap,
  10. Function? deleteOnTap,
})

Implementation

List<Widget> getFormContainer({
  required RxList<MahasMessageModel> error,
  RxBool? loadingSubmit,
  required RxBool loadingForm,
  RxBool? loadingDelete,
  RxBool? isReadOnly,
  required Widget child,
  Function? saveOnTap,
  Future<void> Function()? onRefresh,
  Function? editOnTap,
  Function? deleteOnTap,
}) {
  var appBarPadding = MahasDimensions.getAppBarPadding();
  return [
    Expanded(
      flex: 1,
      child: RefreshIndicator(
        onRefresh: onRefresh ?? () async {},
        child: ListView(
          padding: const EdgeInsets.all(0),
          children: [
            Container(
              padding: EdgeInsets.symmetric(horizontal: appBarPadding),
              child: Obx(
                () => loadingForm.value == true
                    ? MahasShimmer.getShimmerListItem(appBarPadding: 0)
                    : Column(
                        children: [
                          Obx(() => mahasMessageBoxWidget(error)),
                          getSpaceHeight(1.5),
                          child,
                        ],
                      ),
              ),
            ),
          ],
        ),
      ),
    ),
    getSpaceHeight(2),
    Container(
      padding: EdgeInsets.symmetric(horizontal: appBarPadding),
      child: Obx(
        () => Column(
          children: loadingForm.value != true && saveOnTap != null
              ? [
                  if (isReadOnly?.value == false)
                    getButton("Save", saveOnTap,
                        loading: loadingSubmit?.value ?? false),
                  if (isReadOnly?.value == true)
                    Row(
                      children: [
                        if (editOnTap != null)
                          Expanded(
                            flex: 3,
                            child: getButton("Edit", editOnTap, icon: "edit"),
                          ),
                        if (editOnTap != null && deleteOnTap != null)
                          getSpaceWidth(1),
                        if (deleteOnTap != null)
                          Expanded(
                            child: getButton(
                              "",
                              deleteOnTap,
                              loading: loadingDelete?.value ?? false,
                              icon: "delete",
                              bgColor: MahasColors.dangerColor,
                            ),
                          ),
                      ],
                    ),
                  getSpaceHeight(2),
                ]
              : [],
        ),
      ),
    ),
  ];
}