From be6c331e0b786c8e0e83f8ce309eb89b97b14bb4 Mon Sep 17 00:00:00 2001 From: Bram Bakker Date: Wed, 29 Mar 2023 16:10:44 +0200 Subject: [PATCH] Update media_picker.dart --- lib/src/media_picker.dart | 107 ++++++++++++++++++++++++++------------ 1 file changed, 74 insertions(+), 33 deletions(-) diff --git a/lib/src/media_picker.dart b/lib/src/media_picker.dart index 82c0961..5a068cc 100644 --- a/lib/src/media_picker.dart +++ b/lib/src/media_picker.dart @@ -109,6 +109,7 @@ class MediaPicker extends StatefulWidget { this.horizontalSpacing = 0, this.verticalSpacing = 0, this.loadingIconColor, + this.disabledPickers, Key? key, }) : super(key: key); @@ -118,6 +119,7 @@ class MediaPicker extends StatefulWidget { final double horizontalSpacing; final double verticalSpacing; final Color? loadingIconColor; + final List? disabledPickers; final Widget Function( Widget displayResult, Map? inputSettings, @@ -148,7 +150,6 @@ class _MediaPickerState extends State { } var theme = Theme.of(context); - return Wrap( alignment: WrapAlignment.center, direction: widget.inputsDirection, @@ -165,41 +166,81 @@ class _MediaPickerState extends State { ), ] else ...[ for (final input in inputs) ...[ - GestureDetector( - onTap: () async { - setState(() { - _isLoading = true; - }); - await onPressedMediaType(context, input); - }, - child: Wrap( - children: [ - input.widget ?? - Container( - height: 55, - width: MediaQuery.of(context).size.width * 0.9, - decoration: const BoxDecoration( - border: Border( - bottom: BorderSide( - color: Color(0xFF979797), - width: 1, + if (widget.disabledPickers!.contains(input.label) == true) ...[ + IgnorePointer( + child: GestureDetector( + onTap: () async { + setState(() { + _isLoading = true; + }); + await onPressedMediaType(context, input); + }, + child: Wrap( + children: [ + input.widget ?? + Container( + height: 55, + width: MediaQuery.of(context).size.width * 0.9, + decoration: const BoxDecoration( + border: Border( + bottom: BorderSide( + color: Color(0xFF979797), + width: 1, + ), + ), + ), + child: Align( + alignment: Alignment.centerLeft, + child: Padding( + padding: const EdgeInsets.only(left: 15), + child: Text( + input.label, + style: theme.textTheme.titleLarge, + ), + ), ), ), - ), - child: Align( - alignment: Alignment.centerLeft, - child: Padding( - padding: const EdgeInsets.only(left: 15), - child: Text( - input.label, - style: theme.textTheme.titleLarge, - ), - ), - ), - ), - ], + ], + ), + ), ), - ), + ] else ...[ + GestureDetector( + onTap: () async { + setState(() { + _isLoading = true; + }); + await onPressedMediaType(context, input); + }, + child: Wrap( + children: [ + input.widget ?? + Container( + height: 55, + width: MediaQuery.of(context).size.width * 0.9, + decoration: const BoxDecoration( + border: Border( + bottom: BorderSide( + color: Color(0xFF979797), + width: 1, + ), + ), + ), + child: Align( + alignment: Alignment.centerLeft, + child: Padding( + padding: const EdgeInsets.only(left: 15), + child: Text( + input.label, + style: theme.textTheme.titleLarge, + ), + ), + ), + ), + ], + ), + ), + ], ] ] ],