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 shapesFigmaComponent.text: For text elementsFigmaComponent.button: For interactive buttonsFigmaComponent.column: For vertical auto-layoutFigmaComponent.row: For horizontal auto-layoutFigmaComponent.appBar: For top navigation barsFigmaComponent.bottomBar: For bottom navigation barsFigmaComponent.list: For scrollable listsFigmaComponent.textField: For input fieldsFigmaComponent.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_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_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_input_decoration_x
- extensions/morphr_list_tile_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