diff --git a/CHANGELOG.md b/CHANGELOG.md index 7bf3b6b..be5b147 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,12 @@ +## 0.5.0 + +- added the ability to disable certain pickers in the code + ## 0.4.0 - Bump `flutter_form_wizard` to version 6.0.0 - Remove unnecessary `riverpod` dependency + ## 0.3.5 - Fixed left button @@ -13,6 +18,7 @@ ## 0.3.3 - Added optional left button on audio picker + ## 0.3.2 - Fixed an incorrect import on web diff --git a/lib/src/media_picker.dart b/lib/src/media_picker.dart index 82c0961..c5c4e35 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,13 @@ 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, - ), - ), - ), - child: Align( - alignment: Alignment.centerLeft, - child: Padding( - padding: const EdgeInsets.only(left: 15), - child: Text( - input.label, - style: theme.textTheme.titleLarge, - ), - ), - ), - ), - ], - ), - ), + if (widget.disabledPickers!.contains(input.label) == true) ...[ + IgnorePointer( + child: gestureDetectorWidget(input, theme), + ) + ] else ...[ + gestureDetectorWidget(input, theme), + ], ] ] ], @@ -254,4 +227,42 @@ class _MediaPickerState extends State { bool _hasContent(MediaResult content) { return content.fileValue != null || content.textValue != null; } + + Widget gestureDetectorWidget(MediaPickerInput input, ThemeData theme) { + return 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, + ), + ), + ), + ), + ], + ), + ); + } } diff --git a/pubspec.yaml b/pubspec.yaml index 53fcc8a..ef1475a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_media_picker description: A new Flutter package project. -version: 0.4.0 +version: 0.5.0 homepage: https://github.com/Iconica-Development/flutter_media_picker publish_to: "none"