flutter_native_toolkit 1.0.4 copy "flutter_native_toolkit: ^1.0.4" to clipboard
flutter_native_toolkit: ^1.0.4 copied to clipboard

A powerful CLI tool to automate native Android and iOS configuration in Flutter projects. Set minSdkVersion, add permissions, configure Info.plist, and more with simple commands.

Flutter Native Toolkit #

pub package License: MIT

A powerful CLI tool to automate native Android and iOS configuration in Flutter projects. Stop manually editing AndroidManifest.xml, build.gradle, and Info.plist files!

Features #

  • 100+ Pre-configured Permissions - Comprehensive permission database with Android and iOS mappings
  • Add/Remove Permissions - Full CRUD operations for permissions on both platforms
  • Set Android minSdkVersion - Update build.gradle or build.gradle.kts
  • Add iOS Plist Keys - Configure Info.plist entries
  • URL Schemes - Add deep linking support for iOS
  • Android Features - Add uses-feature tags to manifest
  • Status Command - View current native configuration
  • Init Templates - Quick setup for common app types (social, ecommerce, maps, etc.)
  • Smart Input Parsing - Warns when using . instead of , to separate permissions
  • Interactive Mode - Guided permission selection by category
  • Cross-Platform - Works on Windows, macOS, and Linux

Installation #

dart pub global activate flutter_native_toolkit

Then use from any Flutter project:

flutter_native_toolkit <command>

Local Installation #

Add to your dev_dependencies:

dev_dependencies:
  flutter_native_toolkit: ^1.0.0

Run with:

dart run flutter_native_toolkit <command>

Quick Start #

# View current configuration
flutter_native_toolkit status

# Initialize with a template
flutter_native_toolkit init -t social

# Add permissions (comma-separated)
flutter_native_toolkit add-permission -n camera,location,microphone

# Remove a permission
flutter_native_toolkit remove-permission -n camera

# Set Android SDK version
flutter_native_toolkit set-sdk -v 23

# Add URL scheme for deep linking
flutter_native_toolkit add-url-scheme -s myapp

# Interactive mode
flutter_native_toolkit add-permission -i

Commands Reference #

status - View Configuration #

Show current native Android and iOS configuration.

flutter_native_toolkit status

Output:

Native Configuration Status
==================================================

Android
------------------------------
  minSdkVersion: 23

  Permissions (3):
    - INTERNET
    - CAMERA
    - ACCESS_FINE_LOCATION

  Features (1):
    - camera (required)

iOS
------------------------------
  Permission Keys (2):
    - NSCameraUsageDescription
    - NSLocationWhenInUseUsageDescription

  URL Schemes (1):
    - myapp://

init - Initialize with Templates #

Quick setup with common permissions for your app type.

flutter_native_toolkit init -t <template>

Available Templates:

Template Permissions
social camera, microphone, images, contacts, notifications
ecommerce internet, notifications, camera, location
maps location, coarse_location, background_location, internet
media camera, microphone, images, video, audio_files, write_storage
chat camera, microphone, contacts, notifications, internet
fitness activity_recognition, sensors, location, health, notifications

Example:

flutter_native_toolkit init -t social

add-permission - Add Permissions #

Add permission(s) to Android and/or iOS.

flutter_native_toolkit add-permission [options]

Options:

Option Short Description
--name -n Permission key(s), comma-separated
--platform -p Target: android, ios, or both (default)
--ios-description -d Custom iOS usage description
--interactive -i Launch interactive selector
--list -l List all available permissions

Examples:

# Single permission
flutter_native_toolkit add-permission -n camera

# Multiple permissions (comma-separated)
flutter_native_toolkit add-permission -n camera,location,microphone

# Android only
flutter_native_toolkit add-permission -n internet -p android

# iOS with custom description
flutter_native_toolkit add-permission -n camera -p ios -d "Camera needed for QR scanning"

# Interactive mode
flutter_native_toolkit add-permission -i

# List all permissions
flutter_native_toolkit add-permission -l

remove-permission - Remove Permissions #

Remove permission(s) from Android and/or iOS.

flutter_native_toolkit remove-permission -n <permission> [options]

Options:

Option Short Description
--name -n Permission key(s) to remove, comma-separated
--platform -p Target: android, ios, or both (default)

Examples:

# Remove single permission
flutter_native_toolkit remove-permission -n camera

# Remove multiple permissions
flutter_native_toolkit remove-permission -n camera,location

# Remove from Android only
flutter_native_toolkit remove-permission -n internet -p android

set-sdk - Set Android minSdkVersion #

Update the minSdkVersion in build.gradle.

flutter_native_toolkit set-sdk -v <version>

Examples:

# Set to API 23 (Android 6.0)
flutter_native_toolkit set-sdk -v 23

# Set to API 26 (Android 8.0)
flutter_native_toolkit set-sdk -v 26

Supports:

  • Groovy DSL: minSdkVersion 21
  • Kotlin DSL: minSdk = 21
  • Variable references: flutter.minSdkVersion

add-url-scheme - Add URL Scheme #

Add URL scheme to iOS for deep linking.

flutter_native_toolkit add-url-scheme -s <scheme>

Example:

flutter_native_toolkit add-url-scheme -s myapp
# Your app can now be opened with: myapp://path/to/content

add-feature - Add Android Feature #

Add uses-feature tag to AndroidManifest.xml.

flutter_native_toolkit add-feature -n <feature> [options]

Options:

Option Short Description
--name -n Feature name (e.g., camera or android.hardware.camera)
--required -r Whether feature is required (default: true)

Examples:

# Required feature
flutter_native_toolkit add-feature -n camera

# Optional feature
flutter_native_toolkit add-feature -n camera --no-required

# Full feature name
flutter_native_toolkit add-feature -n android.hardware.bluetooth_le -r

add-plist - Add iOS Plist Key #

Add key-value pair to iOS Info.plist.

flutter_native_toolkit add-plist -k <key> -v <value> [options]

Options:

Option Short Description
--key -k Plist key name
--value -v Value for the key
--type -t Type: string, boolean, integer, array

Examples:

# String value
flutter_native_toolkit add-plist -k CFBundleDisplayName -v "My App"

# Boolean value
flutter_native_toolkit add-plist -k UIRequiresFullScreen -v true -t boolean

# Integer value
flutter_native_toolkit add-plist -k MinimumOSVersion -v 12 -t integer

list-permissions - List Permissions #

Display all available permissions by category.

flutter_native_toolkit list-permissions [options]

Options:

Option Short Description
--category -c Filter by category

Examples:

# List all
flutter_native_toolkit list-permissions

# Filter by category
flutter_native_toolkit list-permissions -c camera
flutter_native_toolkit list-permissions -c location

add-dep - Add Dependency #

Quick wrapper for flutter pub add.

flutter_native_toolkit add-dep -n <package> [options]

Examples:

# Regular dependency
flutter_native_toolkit add-dep -n http

# Dev dependency
flutter_native_toolkit add-dep -n mockito -d

Permission Categories #

Category Count Description
Network & Connectivity 21 Internet, WiFi, foreground services
Camera & Media Capture 3 Camera, microphone, flashlight
Location Services 5 Fine/coarse/background location
Storage & Files 12 Photos, videos, documents
Contacts & Calendar 5 Contacts, calendar, reminders
Phone & SMS 17 Calls, SMS, voicemail
Bluetooth & NFC 9 Bluetooth LE, NFC
Sensors & Biometrics 8 Fingerprint, Face ID, motion
System & Notifications 67 Notifications, alarms, settings

Total: 100+ permissions

Common Permissions #

Key Android iOS
camera CAMERA NSCameraUsageDescription
microphone RECORD_AUDIO NSMicrophoneUsageDescription
location ACCESS_FINE_LOCATION NSLocationWhenInUseUsageDescription
contacts_read READ_CONTACTS NSContactsUsageDescription
calendar_read READ_CALENDAR NSCalendarsUsageDescription
biometric USE_BIOMETRIC NSFaceIDUsageDescription
bluetooth BLUETOOTH NSBluetoothAlwaysUsageDescription
images READ_MEDIA_IMAGES NSPhotoLibraryUsageDescription
notifications POST_NOTIFICATIONS -
internet INTERNET -

Run flutter_native_toolkit list-permissions to see all permissions.


Smart Input Handling #

The tool detects common input mistakes:

# Mistake: Using . instead of ,
flutter_native_toolkit add-permission -n camera.location
# Warning: It looks like you used "." instead of "," to separate permissions
# Did you mean: camera, location?

The tool will still attempt to process the permissions correctly.


Interactive Mode #

Launch the interactive permission selector:

flutter_native_toolkit add-permission -i

Features:

  • Browse by category
  • Multi-select with 1,3,5 or all
  • iOS compatibility indicators [iOS]
  • Review before adding

Programmatic Usage #

Use as a library in your Dart code:

import 'package:flutter_native_toolkit/flutter_native_toolkit.dart';

void main() {
  final projectRoot = '/path/to/flutter/project';

  // Android Manager
  final android = AndroidManager(projectRoot);

  // Add permission
  final result = android.addPermission('android.permission.CAMERA');
  switch (result) {
    case Success(:final message):
      print('Success: $message');
    case Failure(:final error):
      print('Error: $error');
  }

  // Remove permission
  android.removePermission('android.permission.CAMERA');

  // Add feature
  android.addFeature('android.hardware.camera', required: true);

  // Get current config
  print('minSdk: ${android.getMinSdkVersion()}');
  print('Permissions: ${android.getPermissions()}');

  // iOS Manager
  final ios = IosManager(projectRoot);

  // Add plist key
  ios.addPlistKey('NSCameraUsageDescription', 'Camera needed');

  // Add URL scheme
  ios.addUrlScheme('myapp');

  // Get current config
  print('iOS Permissions: ${ios.getPermissionKeys()}');
  print('URL Schemes: ${ios.getUrlSchemes()}');
}

Error Handling #

Clear error messages guide you:

# Not in Flutter project
$ flutter_native_toolkit set-sdk -v 23
Error: Not a Flutter/Dart project. Could not find pubspec.yaml.

# Invalid permission
$ flutter_native_toolkit add-permission -n invalid
Warning: Permission "invalid" not found. Use --list to see available permissions.

# Missing directory
$ flutter_native_toolkit add-url-scheme -s myapp
Error: iOS directory not found. Run "flutter create ." to add iOS support.

Requirements #

  • Dart SDK: ^3.0.0
  • Flutter project with pubspec.yaml
  • Android commands: android/ directory required
  • iOS commands: ios/ directory required

Dependencies #

dependencies:
  args: ^2.5.0    # CLI argument parsing
  xml: ^6.5.0     # AndroidManifest.xml parsing
  path: ^1.9.0    # Cross-platform paths

Contributing #

Contributions welcome! Please:

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/amazing)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing)
  5. Open a Pull Request

License #

MIT License - see LICENSE for details.


Support #


Made with Dart for Flutter developers

1
likes
150
points
287
downloads

Publisher

unverified uploader

Weekly Downloads

A powerful CLI tool to automate native Android and iOS configuration in Flutter projects. Set minSdkVersion, add permissions, configure Info.plist, and more with simple commands.

Repository (GitHub)
View/report issues

Topics

#cli #flutter #android #ios #automation

Documentation

Documentation
API reference

Funding

Consider supporting this project:

github.com

License

MIT (license)

Dependencies

args, path, xml

More

Packages that depend on flutter_native_toolkit