Skip to content

Figma to Flutter

A phone design in Figma is drawn on one frame size. The app will run on a small Android handset, a tall iPhone with a notch, a folding phone and a tablet held sideways, with the system font set larger than the designer ever imagined.

We build Flutter interfaces from Figma files with that range in mind. Flutter draws every pixel itself, so the design can be followed closely on both platforms from one codebase. The work is in making it bend without breaking.

Isometric illustration of a design canvas of shapes and a phone plus tablet with the same layout, a bridge between them
Widgets

How Figma structure becomes a widget tree

Flutter layout and Figma auto layout think alike, which helps.

Auto layout to Row and Column

Direction, gap, padding and alignment map onto Row, Column, Padding and their alignment settings. Hug and fill become intrinsic size and Expanded.

Components to widget classes

Each Figma component becomes one widget with constructor parameters for its variants. Enums replace variant names.

Absolute layers to Stack

Badges and overlapping avatars use Stack with Positioned. We keep this rare, because fixed offsets do not adapt.

Lists to builders

A list drawn with five rows becomes a lazily built list that handles five thousand, plus the empty and loading cases.

Vectors and images

Icons are shipped as SVG or an icon font. Photographs are supplied at one, two and three times density.

Theme

One theme object, not colours scattered through screens

No widget names a colour or a font size directly.

  1. ColorScheme

    Figma colour variables are mapped to the roles in the colour scheme: primary, surface, error and their on-colours.

  2. TextTheme

    Text styles from the file become the named styles of the text theme, with the font files bundled in the app.

  3. Theme extensions

    Tokens with no Material equivalent, such as a spacing scale or brand gradients, live in a theme extension so they switch with the theme.

  4. Dark theme

    If the file has a dark mode, a second theme is built from it and follows the system setting.

Platform habits

Where iOS and Android users expect different things

One design can serve both, but a few behaviours should follow the platform.

Going back

iOS users swipe from the left edge. Android users use the system back gesture. Both must work on every screen, including inside modal sheets.

Safe areas

Content stays clear of the notch, the home indicator and the status bar on each device.

Scrolling feel

iOS bounces at the end of a list and Android stretches. Flutter applies each by default and we leave it that way.

Pickers and dialogs

Date pickers, alerts and share sheets can use the platform style even inside a custom design. We ask which you prefer.

Tablets

A bottom navigation bar on a phone usually becomes a side rail on a tablet, and single-column lists become list and detail side by side.

From design

What the app file should contain

App designs need more states per screen than web pages.

  • A small phone frame and a large phone frame
  • A tablet frame for key screens, if tablets are in scope
  • Every screen with keyboard open, where there is a text field
  • Empty, loading, error and offline states
  • Pressed and disabled states for buttons and rows
  • App icon, splash screen and notification icon artwork
  • Prototype links showing which transition each screen uses
  • Font files with a licence that covers app embedding
Method

How the screens get built

You hold a build on your own phone early.

  1. Theme and tokens

    Colours, type and spacing are in place before any screen.

  2. Widget catalogue

    Shared widgets are built and shown in a catalogue app where each state can be viewed alone.

  3. Screens and navigation

    Screens are assembled and connected with routes, using sample data until your API is ready.

  4. Device comparison

    Screens are compared with Figma on the agreed device sizes, with large system text switched on. Differences are listed for your decision.

  5. Golden tests

    Reference images of key widgets are stored so later changes that alter the look are caught.

Questions

Before starting an app build

Can Flutter web and desktop use the same widgets?

Mostly, yes. Pointer hover, keyboard shortcuts and wide windows need extra design, so tell us early if those targets matter.

Do you connect the screens to our back end?

Yes, as a separate item in the estimate. Interface and data layers are kept apart so either can change.

What about screen readers?

Widgets carry semantic labels and are tried with VoiceOver and TalkBack. Formal accessibility audit is done by your auditor.

Next step

Tell us which devices matter

Share the Figma file and say which phones and tablets your users have. We reply within one business day.

Share the app design

Goes straight to our team on WhatsApp and email. We reply within one business day.

Desktop Mode WhatsApp