showAppBottomSheet<T> function

Future<T?> showAppBottomSheet<T>({
  1. required BuildContext context,
  2. double initialChildSize = 0.7,
  3. double minChildSize = 0.5,
  4. double maxChildSize = 0.9,
  5. required String title,
  6. required Widget child,
})

Implementation

Future<T?> showAppBottomSheet<T>({
  required BuildContext context,
  double initialChildSize = 0.7,
  double minChildSize = 0.5,
  double maxChildSize = 0.9,
  required String title,
  required Widget child,
}) {
  return showModalBottomSheet(
    isScrollControlled: true,
    context: context,
    backgroundColor: Colors.transparent,
    builder: (context) {
      return Padding(
        padding: EdgeInsets.only(
          bottom: MediaQuery.of(context).viewInsets.bottom,
        ),
        child: DissmisibleModalWidget(
          child: DraggableScrollableSheet(
            initialChildSize: initialChildSize,
            minChildSize: minChildSize,
            maxChildSize: maxChildSize,
            builder: (context, scrollController) {
              return InputKeyboardUnfocusableWidget(
                child: Container(
                  decoration: const BoxDecoration(
                    color: Colors.white,
                    borderRadius: BorderRadius.only(
                      topLeft: Radius.circular(16),
                      topRight: Radius.circular(16),
                    ),
                  ),
                  child: ListView(
                    controller: scrollController,
                    children: [
                      Padding(
                        padding: const EdgeInsets.all(16),
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.spaceBetween,
                          children: [
                            Text(
                              title,
                              style: Theme.of(context).textTheme.displayMedium,
                            ),
                            IconButton(
                              iconSize: 28,
                              onPressed: Get.back,
                              icon: const Icon(CupertinoIcons.xmark),
                            ),
                          ],
                        ),
                      ),
                      const Divider(),
                      child,
                    ],
                  ),
                ),
              );
            },
          ),
        ),
      );
    },
  );
}