flutter_deck

May 5, 2026 ยท View on GitHub

Pub Version GitHub Actions Workflow Status GitHub Repo stars License: MIT flutter_deck docs FlutterDeck Header

A lightweight, customizable, and easy-to-use framework to create presentations in Flutter.

Live demo: https://flutterdeck.dev/demo

๐Ÿช„ Features

  • ๐Ÿ’™ Slide deck is built as any other Flutter app.
  • ๐Ÿงญ Navigator 2.0 support - each slide is rendered as an individual page with a deep link to it.
  • ๐Ÿพ Steps - each slide can have multiple steps that can be navigated through.
  • ๐ŸŽ“ Presenter view - control your presentation from a separate screen or (even) device.
  • โš™๏ธ Define a global configuration once and override it per slide if needed.
  • ๐Ÿš€ Predictable API to access the slide deck state and its methods from anywhere in the app.
  • ๐Ÿ“ฆ Out of the box slide templates, widgets, transitions and controls.
  • ๐ŸŽจ Custom theming and light/dark mode support.
  • ๐ŸŒ Built-in localization support.

๐Ÿ“š Documentation

The official documentation is available at https://flutterdeck.dev.

๐Ÿ“ฆ Packages

PackagePubDescription
flutter_deckPub VersionThe core package that provides the main functionality to create presentations.
flutter_deck_clientPub VersionA common client interface and models for the flutter_deck presenter view.
flutter_deck_web_clientPub VersionA Web client implementation for the flutter_deck presenter view.
flutter_deck_ws_clientPub VersionA WebSocket client implementation for the flutter_deck presenter view.
flutter_deck_ws_server-A WebSocket server for flutter_deck_ws_client implemented using dart_frog.
flutter_deck_pdf_exportPub VersionA flutter_deck plugin to export presentations to PDF format.
flutter_deck_pptx_exportPub VersionA flutter_deck plugin to export presentations to PPTX format.

๐Ÿ’ป Installation

โ— In order to start using flutter_deck you must have the Flutter SDK installed on your machine.

Add flutter_deck to your pubspec.yaml:

dependencies:
  flutter_deck:

Install it:

flutter packages get

๐Ÿ‘‹ Hello flutter_deck!

Use FlutterDeckApp as your slide deck's root widget and pass a list of widgets as slides:

void main() {
  runApp(const FlutterDeckExample());
}

class FlutterDeckExample extends StatelessWidget {
  const FlutterDeckExample({super.key});

  @override
  Widget build(BuildContext context) {
    // This is an entry point for the Flutter Deck app.
    return FlutterDeckApp(
      configuration: const FlutterDeckConfiguration(...),
      slides: [
        <...>
      ],
    );
  }
}

Also, you can define a global configuration for your slide deck:

FlutterDeckApp(
  configuration: FlutterDeckConfiguration(
    background: const FlutterDeckBackgroundConfiguration(
      light: FlutterDeckBackground.solid(Color(0xFFB5FFFC)),
      dark: FlutterDeckBackground.solid(Color(0xFF16222A)),
    ),
    controls: const FlutterDeckControlsConfiguration(
      presenterToolbarVisible: true,
      gestures: FlutterDeckGesturesConfiguration.mobileOnly(),
      shortcuts: FlutterDeckShortcutsConfiguration(
        enabled: true,
        nextSlide: const {SingleActivator(LogicalKeyboardKey.arrowRight)},
        previousSlide: const {SingleActivator(LogicalKeyboardKey.arrowLeft)},
        toggleMarker: const {
          SingleActivator(
            LogicalKeyboardKey.keyM,
            control: true,
            meta: true,
          ),
        },
        toggleNavigationDrawer: const {
          SingleActivator(
            LogicalKeyboardKey.period,
            control: true,
            meta: true,
          ),
        },
      ),
    ),
    footer: const FlutterDeckFooterConfiguration(
      showSlideNumbers: true,
      widget: FlutterLogo(),
    ),
    header: const FlutterDeckHeaderConfiguration(
      showHeader: false,
    ),
    marker: const FlutterDeckMarkerConfiguration(
      color: Colors.cyan,
      strokeWidth: 8.0,
    ),
    progressIndicator: const FlutterDeckProgressIndicator.gradient(
      gradient: LinearGradient(
        begin: Alignment.topLeft,
        end: Alignment.bottomRight,
        colors: [Colors.pink, Colors.purple],
      ),
      backgroundColor: Colors.black,
    ),
    slideSize: FlutterDeckSlideSize.fromAspectRatio(
      aspectRatio: const FlutterDeckAspectRatio.ratio16x10(),
      resolution: const FlutterDeckResolution.fromWidth(1440),
    ),
    transition: const FlutterDeckTransition.fade(),
  ),
  <...>
);

Use any colors you like:

FlutterDeckApp(
  lightTheme: FlutterDeckThemeData.light(),
  darkTheme: FlutterDeckThemeData.dark(),
  themeMode: ThemeMode.system,
  <...>
);

And do not forget to introduce yourself!

FlutterDeckApp(
  speakerInfo: const FlutterDeckSpeakerInfo(
    name: 'John Doe',
    description: 'CEO of flutter_deck',
    socialHandle: '@john_doe',
    imagePath: 'assets/me.png',
  ),
  <...>
);

๐Ÿค– Agent Skills

This repository ships Agent Skills so AI coding agents (Claude Code, Cursor, Codex, OpenCode, Windsurf, and many other compatible agents) can help you build flutter_deck presentations accurately. Each skill captures the framework's conventions for a specific area:

SkillDescription
flutter-deck-presentation-setupScaffold a new presentation from an empty Flutter project โ€” FlutterDeckApp, themes, slides, plugins.
flutter-deck-configurationConfigure a deck globally and per-slide โ€” slide size, transitions, backgrounds, headers, footers.
flutter-deck-slidesCreate slides using the eight built-in factories and three idiomatic patterns.
flutter-deck-themingStyle with FlutterDeckThemeData, light/dark modes, per-slide overrides, and component themes.
flutter-deck-pluginsBuild, register, and use FlutterDeckPlugins โ€” autoplay, exporters, presenter view, custom controls.

Skills are managed via the skills CLI.

Install all skills

npx skills add mkobuolys/flutter_deck --all

Install a specific skill

npx skills add mkobuolys/flutter_deck --skill flutter-deck-slides

To target a specific agent or install globally:

npx skills add mkobuolys/flutter_deck --skill flutter-deck-slides -a claude-code -g -y

List available skills without installing

npx skills add mkobuolys/flutter_deck --list

Other commands

npx skills list                           # List installed skills
npx skills remove flutter-deck-slides     # Remove an installed skill

๐Ÿง‘โ€๐Ÿ’ป Maintainers