Morphr

A bridge between Figma and Flutter that transforms your Figma designs into pixel-perfect Flutter widgets with real-time updates.

Overview

Morphr eliminates the gap between design and development, allowing designers and developers to work in parallel while keeping your app's UI perfectly aligned with your design system.

Features

  • High-Fidelity Rendering: Preserves all visual details from your Figma designs
  • Zero-Config Setup: Transform designs to code without complex configuration
  • Full Control: Maintain complete control over layout and logic in your Flutter code
  • Type-Safe Overrides: Override component properties with type-checking
  • Over-the-Air Updates: Sync your app's UI without redeploying your app
  • Native Performance: Uses Flutter's layout system for optimal performance

Installation

CLI

Install the Morphr CLI:

dart pub global activate morphr

Flutter Library

Add Morphr to your pubspec.yaml:

dependencies:
  morphr: ^0.1.0

Then run:

flutter pub get

Quick Start

1. Register and Connect

Register a Morphr account and connect it to Figma:

morphr register
morphr verify
morphr figma-connect

2. Initialize Your Project

Initialize Morphr in your Flutter project:

cd your_flutter_project
morphr init

3. Sync Your Design

Whenever your Figma design changes:

morphr sync

4. Use Components in Flutter

Update your main.dart:

import 'package:flutter/material.dart';
import 'package:morphr/morphr.dart';
import 'package:your_app/morphr_options.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // Initialize Morphr with your configuration
  await MorphrService.instance.initializeCloud(options: morphrOptions);
  
  runApp(MyApp());
}

Use Figma components in your widgets:

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: FigmaComponent.appBar(
        "my_app_bar",
        context: context,
        children: [
          FigmaComponent.text("app_title", text: "My App"),
        ],
      ),
      body: FigmaComponent.container(
        "home_screen",
        child: FigmaComponent.column(
          "content_column",
          children: [
            FigmaComponent.text("welcome_text", text: "Welcome!"),
            FigmaComponent.button(
              "action_button",
              onPressed: () => print("Button pressed"),
            ),
          ],
        ),
      ),
    );
  }
}

Available Components

  • FigmaComponent.container: For frames and shapes
  • FigmaComponent.text: For text elements
  • FigmaComponent.button: For interactive buttons
  • FigmaComponent.column: For vertical auto-layout
  • FigmaComponent.row: For horizontal auto-layout
  • FigmaComponent.appBar: For top navigation bars
  • FigmaComponent.bottomBar: For bottom navigation bars
  • FigmaComponent.list: For scrollable lists
  • FigmaComponent.textField: For input fields
  • FigmaComponent.icon: For vector graphics

Documentation

For complete documentation, go here.

Examples

Check out our example app to see Morphr in action.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Libraries

adapters/figma_bar_adapter
adapters/figma_component_adapter
adapters/figma_constraints_adapter
adapters/figma_decoration_adapter
adapters/figma_layout_adapter
adapters/figma_shape_adapter
adapters/figma_text_adapter
adapters/figma_vector_adapter
cloud/morphr_cloud
cloud/morphr_cloud_client
cloud/morphr_cloud_options
cloud/morphr_file_storage
components/figma_appbar_component
components/figma_bottombar_component
components/figma_button_component
components/figma_component
components/figma_container_component
components/figma_flex_component
components/figma_icon_component
components/figma_list_component
components/figma_scaffold_component
components/figma_text_component
components/figma_text_field_component
components/figma_tree_component
extensions/morphr_app_bar_theme_x
extensions/morphr_border_radius_x
extensions/morphr_border_x
extensions/morphr_bottom_bar_theme_x
extensions/morphr_bottom_sheet_theme_x
extensions/morphr_box_decoration_x
extensions/morphr_button_style_x
extensions/morphr_card_style_x
extensions/morphr_checkbox_theme_x
extensions/morphr_chip_style_x
extensions/morphr_dialog_theme_x
extensions/morphr_divider_theme_x
extensions/morphr_drawer_theme_x
extensions/morphr_edge_insets_x
extensions/morphr_extensions
extensions/morphr_floating_action_button_x
extensions/morphr_input_decoration_x
extensions/morphr_list_tile_theme_x
extensions/morphr_navigation_rail_theme_x
extensions/morphr_popup_menu_theme_x
extensions/morphr_progress_indicator_theme_x
extensions/morphr_radio_theme_x
extensions/morphr_slider_theme_x
extensions/morphr_switch_theme_x
extensions/morphr_tab_bar_theme_x
extensions/morphr_text_selection_theme_x
extensions/morphr_text_style_x
extensions/morphr_tooltip_theme_x
mixins/cacheable_mixin
morph
morphr
morphr_service
renderers/figma_appbar_renderer
renderers/figma_bottombar_renderer
renderers/figma_flex_renderer
renderers/figma_list_renderer
renderers/figma_shape_renderer
renderers/figma_text_field_renderer
renderers/figma_text_renderer
renderers/figma_tree_renderer
renderers/figma_vector_renderer
transformers/core/node_selector
transformers/core/node_transformer
transformers/core/transform_context
transformers/core/transformer_manager
transformers/core/transformers_core
transformers/presets/gesture_transformer
transformers/presets/list_transformer
transformers/presets/text_transformer
transformers/presets/transformers_presets
transformers/presets/widget_transformer
transformers/transformers