showQualityDialog method

void showQualityDialog(
  1. BuildContext context
)

Implementation

void showQualityDialog(BuildContext context) {
  if (qualities.isEmpty) {
    ScaffoldMessenger.of(context).showSnackBar(
      const SnackBar(
        content: Text('No qualities available'),
      ),
    );
    return;
  }
  if (context.orientation == Orientation.landscape) {
    showDialog(
      context: context,
      builder: (context) {
        return AlertDialog(
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(10),
          ),
          title: const Text(
            'Quality',
            style: TextStyle(
              color: Colors.black,
              fontSize: 20,
              fontWeight: FontWeight.bold,
            ),
          ),
          content: Obx(() {
            return SingleChildScrollView(
              child: Column(
                mainAxisSize: MainAxisSize.min,
                children: [
                  // InkWell(
                  //   onTap: () {
                  //     Navigator.pop(context);
                  //     if (configuration.autoQuality) {
                  //       configuration = configuration.copyWith(
                  //         autoQuality: false,
                  //       );
                  //     } else {
                  //       configuration = configuration.copyWith(
                  //         autoQuality: true,
                  //       );
                  //     }
                  //     startAutoQuality();
                  //   },
                  //   child: Padding(
                  //     padding: const EdgeInsets.symmetric(
                  //       vertical: 5,
                  //       horizontal: 10,
                  //     ),
                  //     child: Row(
                  //       children: [
                  //         configuration.autoQuality
                  //             ? const Icon(
                  //                 Icons.check_box_rounded,
                  //                 color: Colors.blue,
                  //               )
                  //             : const Icon(
                  //                 Icons.check_box_outline_blank,
                  //                 color: Colors.grey,
                  //               ),
                  //         10.widthBox,
                  //         const Expanded(child: Text("Auto")),
                  //       ],
                  //     ),
                  //   ),
                  // ),
                  ...qualities.value.map(
                    (quality) => InkWell(
                      onTap: () {
                        Navigator.pop(context);
                        selectedQuality = quality;
                        _qualityStream.add(quality);
                        setQuality(quality);
                      },
                      child: Padding(
                        padding: const EdgeInsets.symmetric(
                          vertical: 5,
                          horizontal: 10,
                        ),
                        child: Row(
                          children: [
                            selectedQuality == quality
                                ? const Icon(
                                    Icons.check_box_rounded,
                                    color: Colors.blue,
                                  )
                                : const Icon(
                                    Icons.check_box_outline_blank,
                                    color: Colors.grey,
                                  ),
                            10.widthBox,
                            Text(quality.toLowerCase().contains("p")
                                ? quality
                                : "${quality}p"),
                          ],
                        ),
                      ),
                    ),
                  )
                ],
              ),
            );
          }),
        );
      },
    );
  } else {
    showModalBottomSheet(
      context: context,
      shape: const RoundedRectangleBorder(
        borderRadius: BorderRadius.vertical(
          top: Radius.circular(10),
        ),
      ),
      isScrollControlled: true,
      builder: (context) {
        return Padding(
          padding: const EdgeInsets.all(10),
          child: Column(
            mainAxisSize: MainAxisSize.min,
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              const Text(
                'Quality',
                style: TextStyle(
                  color: Colors.black,
                  fontSize: 20,
                  fontWeight: FontWeight.bold,
                ),
              ),
              const Divider(),
              Obx(() {
                return Column(
                  children: [
                    // InkWell(
                    //   onTap: () {
                    //     Navigator.pop(context);
                    //     if (configuration.autoQuality) {
                    //       configuration = configuration.copyWith(
                    //         autoQuality: false,
                    //       );
                    //     } else {
                    //       configuration = configuration.copyWith(
                    //         autoQuality: true,
                    //       );
                    //     }
                    //     startAutoQuality();
                    //   },
                    //   child: Padding(
                    //     padding: const EdgeInsets.symmetric(
                    //       vertical: 2,
                    //       horizontal: 5,
                    //     ),
                    //     child: Row(
                    //       children: [
                    //         configuration.autoQuality
                    //             ? const Icon(
                    //                 Icons.check_box_rounded,
                    //                 color: Colors.blue,
                    //               )
                    //             : const Icon(
                    //                 Icons.check_box_outline_blank,
                    //                 color: Colors.grey,
                    //               ),
                    //         10.widthBox,
                    //         const Expanded(child: Text("Auto")),
                    //       ],
                    //     ),
                    //   ),
                    // ),
                    ListView.builder(
                      shrinkWrap: true,
                      physics: const NeverScrollableScrollPhysics(),
                      itemCount: qualities.value.length,
                      itemBuilder: (context, index) {
                        final quality = qualities[index];
                        return InkWell(
                          onTap: () {
                            Navigator.pop(context);
                            selectedQuality = quality;
                            _qualityStream.add(quality);
                            setQuality(quality);
                          },
                          child: Padding(
                            padding: const EdgeInsets.symmetric(
                              vertical: 2,
                              horizontal: 5,
                            ),
                            child: Row(
                              children: [
                                selectedQuality == quality
                                    ? const Icon(
                                        Icons.check_box_rounded,
                                        color: Colors.blue,
                                      )
                                    : const Icon(
                                        Icons.check_box_outline_blank,
                                        color: Colors.grey,
                                      ),
                                10.widthBox,
                                Expanded(
                                    child: Text(quality.contains("p")
                                        ? quality
                                        : "${quality}p")),
                              ],
                            ),
                          ),
                        );
                      },
                    ),
                  ],
                );
              }),
            ],
          ),
        );
      },
    );
  }
}