CommunityProgramación y desarrollogithub.com

flutter/flutter-plugins

Crea un plugin de Flutter que proporciona interoperabilidad nativa para que otras aplicaciones Flutter lo utilicen.

¿Qué es flutter-plugins?

Esta habilidad está diseñada para desarrolladores que desean crear plugins de Flutter, permitiendo que el código Dart interactúe con funcionalidades nativas de Android (Kotlin/Java) e iOS (Swift/Objective-C). Su objetivo es simplificar la creación de paquetes reutilizables que exponen APIs de plataforma, como sensores, almacenamiento o funciones personalizadas, a otras aplicaciones Flutter. Es compatible con cualquier entorno de desarrollo Flutter, incluyendo IDEs como VS Code y Android Studio, así como herramientas de línea de comandos. El flujo de trabajo típico implica definir una interfaz Dart, implementar el código específico de la plataforma usando el sistema de channels de Flutter, y empaquetar el plugin para su distribución a través de pub.dev o uso interno.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/flutter/skills/tree/main/skills/flutter-plugins

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace flutter-plugins?

Construye un plugin de Flutter que proporciona interoperabilidad nativa para que otras aplicaciones Flutter lo utilicen.

Descripción General

Este skill te guía en la creación de un plugin Flutter que permite a las apps Flutter acceder a funcionalidades nativas de Android e iOS. El plugin expone una API Dart unificada mientras implementa el código específico de la plataforma mediante MethodChannel (Flutter) y FlutterMethodChannel (Android/iOS).

¿Qué es un Plugin de Flutter?

Un plugin de Flutter es un paquete que agrega funcionalidades nativas a una aplicación Flutter. Los plugins se utilizan para:

  • Acceder a APIs de plataforma (cámara, GPS, Bluetooth, etc.)
  • Integrar servicios nativos (pago, autenticación, etc.)
  • Proporcionar widgets nativos personalizados

Estructura del Proyecto

mi_plugin/
├── lib/
│   └── mi_plugin.dart
├── android/
│   ├── src/main/kotlin/com/ejemplo/mi_plugin/
│   │   └── MiPlugin.kt
├── ios/
│   ├── Classes/
│   │   └── MiPlugin.swift
├── test/
│   └── mi_plugin_test.dart
├── example/
│   └── (aplicación de ejemplo que usa el plugin)
├── pubspec.yaml
└── README.md

Cómo Empezar

  1. Crear el plugin: Ejecuta flutter create --template=plugin mi_plugin
  2. Definir la API Dart en lib/mi_plugin.dart
  3. Implementar la parte nativa:
    • Android: Edita MiPlugin.kt (o .java)
    • iOS: Edita MiPlugin.swift (o .m)
  4. Usar el plugin: Agrega mi_plugin como dependencia en tu app Flutter

Ejemplo de Código

Dart (API)

import 'package:flutter/services.dart';

class MiPlugin {
  static const _channel = MethodChannel('com.ejemplo/mi_plugin');

  static Future<String?> getPlataforma() async {
    return await _channel.invokeMethod('getPlataforma');
  }
}

Android (Kotlin)

class MiPlugin: FlutterPlugin, MethodCallHandler {
  override fun onMethodCall(call: MethodCall, result: Result) {
    if (call.method == "getPlataforma") {
      result.success("Android ${android.os.Build.VERSION.RELEASE}")
    } else {
      result.notImplemented()
    }
  }
}

iOS (Swift)

public class MiPlugin: NSObject, FlutterPlugin {
  public static func register(with registrar: FlutterPluginRegistrar) {
    let channel = FlutterMethodChannel(name: "com.ejemplo/mi_plugin", binaryMessenger: registrar.messenger())
    let instance = MiPlugin()
    registrar.addMethodCallDelegate(instance, channel: channel)
  }

  public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
    if call.method == "getPlataforma" {
      result("iOS " + UIDevice.current.systemVersion)
    } else {
      result(FlutterMethodNotImplemented)
    }
  }
}

Recursos

Consejos

  • Siempre maneja errores de forma adecuada en ambas plataformas
  • Prueba el plugin tanto en simuladores como en dispositivos reales
  • Escribe pruebas unitarias para la lógica Dart y nativa
  • Publica tu plugin en pub.dev para que otros puedan usarlo

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

flutter/flutter-accessibility

Configure your Flutter app to support assistive technologies like Screen Readers

flutter/flutter-accessibility-audit

Triggers an accessibility scan through the widget_inspector and automatically adds Semantics widgets or missing labels to the source code.

flutter/flutter-adding-home-screen-widgets

Adds home screen widgets to a Flutter app for Android and iOS. Use when providing glanceable app information or quick actions on the device home screen.

flutter/flutter-add-integration-test

Configures Flutter Driver for app interaction and converts MCP actions into permanent integration tests. Use when adding integration testing to a project, exploring UI components via MCP, or automating user flows with the integration_test package.

flutter/flutter-add-widget-preview

Adds interactive widget previews to the project using the previews.dart system. Use when creating new UI components or updating existing screens to ensure consistent design and interactive testing.

flutter/flutter-add-widget-test

Implement a component-level test using `WidgetTester` to verify UI rendering and user interactions (tapping, scrolling, entering text). Use when validating that a specific widget displays correct data and responds to events as expected.

flutter/flutter-animating-apps

Implements animated effects, transitions, and motion in a Flutter app. Use when adding visual feedback, shared element transitions, or physics-based animations.

flutter/flutter-animation

Add animated effects to your Flutter app

flutter/flutter-apply-architecture-best-practices

Architects a Flutter application using the recommended layered approach (UI, Logic, Data). Use when structuring a new project or refactoring for scalability.

flutter/flutter-app-size

Measure and reduce the size of the Flutter app bundle, APK, or IPA

flutter/flutter-architecting-apps

Architects a Flutter application using the recommended layered approach (UI, Logic, Data). Use when structuring a new project or refactoring for scalability.

flutter/flutter-architecture

Use the Flutter team's recommended app architecture

flutter/flutter-building-forms

Builds Flutter forms with validation and user input handling. Use when creating login screens, data entry forms, or any multi-field user input.

flutter/flutter-building-layouts

Builds Flutter layouts using the constraint system and layout widgets. Use when creating or refining the UI structure of a Flutter application.

flutter/flutter-building-plugins

Builds Flutter plugins that provide native interop for other apps to use. Use when creating reusable packages that bridge Flutter with platform-specific functionality.

flutter/flutter-build-responsive-layout

Use `LayoutBuilder`, `MediaQuery`, or `Expanded/Flexible` to create a layout that adapts to different screen sizes. Use when you need the UI to look good on both mobile and tablet/desktop form factors.

flutter/flutter-caching

Cache data in a Flutter app

flutter/flutter-caching-data

Implements caching strategies for Flutter apps to improve performance and offline support. Use when retaining app data locally to reduce network requests or speed up startup.

flutter/flutter-concurrency

Execute long-running tasks in a background thread in Flutter

flutter/flutter-databases

Work with databases in a Flutter app

Skills relacionados