flutter_pemission

permission_handler: ^10.0.0
#  fluttertoast: ^8.2.2
  Future<void> requestStoragePermission() async {
    var status = await Permission.storage.request();
    if (status.isGranted) {
      showToast("Storage access granted");
    } else if (status.isDenied) {
      showToast("Storage access denied");
    } else if (status.isPermanentlyDenied) {
      showToast("Storage access permanently denied");
    } else {
      showToast("Storage access : ${status.isGranted}");
    }
  }

  Future<void> requestLocationPermission() async {
    var status = await Permission.location.request();
    if (status.isGranted) {
      showToast("Location access granted");
    } else if (status.isDenied) {
      showToast("Location access denied");
    } else if (status.isPermanentlyDenied) {
      showToast("Location access permanently denied");
    } else {
      showToast("Location access : ${status.isGranted}");
    }
  }

  Future<void> requestCameraPermission() async {
    var status = await Permission.camera.request();
    if (status.isGranted) {
      showToast("Camera access granted");
    } else if (status.isDenied) {
      showToast("Camera access denied");
    } else if (status.isPermanentlyDenied) {
      showToast("Camera access permanently denied");
    } else {
      showToast("Camera access : ${status.isGranted}");
    }
  }
ElevatedButton(
  onPressed: () async {
    var status = await Permission.camera.status;
    showToast("Camera access : ${status}");

    if (status.isGranted) {
      showToast("Camera access granted");
    } else if (!status.isGranted) {
      requestCameraPermission();
    }
  },
  child: const Text("Ask camera permission"),
),
ElevatedButton(
  onPressed: () async {
    var status = await Permission.storage.status;
    showToast("Storage access : ${status}");

    if (status.isGranted) {
      showToast("Storage access granted");
    } else if (!status.isGranted) {
      requestStoragePermission();
    }
  },
  child: const Text("Ask storage permission"),
),
ElevatedButton(
  onPressed: () async {
    var status = await Permission.location.status;
    showToast("Location access : ${status}");

    if (status.isGranted) {
      showToast("Location access granted");
    } else if (!status.isGranted) {
      requestLocationPermission();
    }
  },
  child: const Text("Ask Location permission"),
),
post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)

    # Start of the permission_handler configuration
    target.build_configurations.each do |config|

      # You can enable the permissions needed here. For example to enable camera
      # permission, just remove the `#` character in front so it looks like this:
      #
      # ## dart: PermissionGroup.camera
      # 'PERMISSION_CAMERA=1'
      #
      #  Preprocessor definitions can be found in: https://github.com/Baseflow/flutter-permission-handler/blob/master/permission_handler_apple/ios/Classes/PermissionHandlerEnums.h
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
        '$(inherited)',

        ## dart: PermissionGroup.calendar
        'PERMISSION_EVENTS=1',

        ## dart: PermissionGroup.reminders
        # 'PERMISSION_REMINDERS=1',

        ## dart: PermissionGroup.contacts
        # 'PERMISSION_CONTACTS=1',

        ## dart: PermissionGroup.camera
        'PERMISSION_CAMERA=1',

        ## dart: PermissionGroup.microphone
        # 'PERMISSION_MICROPHONE=1',

        ## dart: PermissionGroup.speech
        # 'PERMISSION_SPEECH_RECOGNIZER=1',

        ## dart: PermissionGroup.photos
        # 'PERMISSION_PHOTOS=1',

        ## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
        'PERMISSION_LOCATION=1',

        ## dart: PermissionGroup.notification
        # 'PERMISSION_NOTIFICATIONS=1',

        ## dart: PermissionGroup.mediaLibrary
        # 'PERMISSION_MEDIA_LIBRARY=1',

        ## dart: PermissionGroup.sensors
        # 'PERMISSION_SENSORS=1',

        ## dart: PermissionGroup.bluetooth
        # 'PERMISSION_BLUETOOTH=1',

        ## dart: PermissionGroup.appTrackingTransparency
        # 'PERMISSION_APP_TRACKING_TRANSPARENCY=1',

        ## dart: PermissionGroup.criticalAlerts
        # 'PERMISSION_CRITICAL_ALERTS=1'
      ]

    end
    # End of the permission_handler configuration
  end
end
	<key>NSCameraUsageDescription</key>
	<string>We need access to your camera for this feature</string>
	<key>NSPhotoLibraryUsageDescription</key>
	<string>We need access to your photo library for this feature</string>
	<key>NSLocationAlwaysUsageDescription</key>
	<string>Location Needed</string>
	<key>NSLocationWhenInUseUsageDescription</key>
	<string>Location Needed</string>
	<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
	<string>Location Needed</string>
    <uses-feature
        android:name="android.hardware.camera"
        android:required="false"
        tools:targetApi="eclair" />

    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>