1 of 53

The definitive guide to implementing a Design System in Flutter apps

Tampa, Florida

2 of 53

Gabriel Araujo

Software Engineer @ Revelo

Open source contributor:

  • Injectable
  • Dio
  • Flutter FormX
  • ThemeXpert

Dev since 2021

2 production apps - Revelo Go and Revelo Jobs

3 of 53

  • What is a design system?
  • Design Tokens: What are they?
  • Components in Design Systems
  • How Flutter handles Design Systems with Material?
  • Introducing ThemeXpert
  • Live coding

Tampa, Florida

4 of 53

  • What is a design system?
  • Design Tokens: What are they?
  • Components in Design Systems
  • How Flutter handles Design Systems with Material?
  • Introducing ThemeXpert
  • Live coding

Tampa, Florida

5 of 53

A design system is a comprehensive collection of design principles, guidelines, and reusable components that form the foundation of your application's user interface.

6 of 53

Material Design

Source: https://flutter.github.io/samples/material_3.html

7 of 53

A real life example: Revelo's Everest

8 of 53

Why, though?

9 of 53

Material and other Design Systems allow developers to focus on the most important problem they should be solving: generating value for their businesses as fast as possible.

10 of 53

  • What is a design system?
  • Design Tokens: What are they?
  • Components in Design Systems
  • How Flutter handles Design Systems with Material?
  • Introducing ThemeXpert
  • Live coding

Tampa, Florida

11 of 53

Design tokens are the building blocks of a design system, its atomic units.

12 of 53

Color

tokens

13 of 53

Color

tokens

14 of 53

Typography

tokens

15 of 53

Typography

tokens

16 of 53

  • What is a design system?
  • Design Tokens: What are they?
  • Components in Design Systems
  • How Flutter handles Design Systems with Material?
  • Introducing ThemeXpert
  • Live coding

Tampa, Florida

17 of 53

Components are the reusable building blocks that make up your app's interface like widgets, buttons, cards, and other UI elements that users interact with.

18 of 53

Components

19 of 53

Components

Source: https://flutter.github.io/samples/material_3.html

20 of 53

Real life example

21 of 53

  • Design consistency

  • Faster development

22 of 53

  • What is a design system?
  • Design Tokens: What are they?
  • Components in Design Systems
  • How Flutter handles Design Systems with Material?
  • Introducing ThemeXpert
  • Live coding

Tampa, Florida

23 of 53

Flutter uses Material

by default

24 of 53

Can you customize Material?

25 of 53

50%

Use more than

of this large number slide

26 of 53

50%

Use more than

of this large number slide

27 of 53

50%

28 of 53

Material is excellent if you follow it by the book.

However, it is also complex.

29 of 53

If Material is so powerful, when does it stop being the best solution?

30 of 53

of this large number slide

31 of 53

How would you solve this problem of using both primary and secondary colors in your app?

32 of 53

x2

33 of 53

We thought that this would not be ideal, so we came up with our own way to do theming.

34 of 53

Meet ThemeXpert

Tampa, Florida

35 of 53

ThemeXpert was built to be fully customizable and flexible to fit your needs

36 of 53

APP THEME

SECONDARY THEME

37 of 53

It makes changing look & feel as easy as pie

38 of 53

It does not depend on any components

39 of 53

You can set it up in 4 simple steps

40 of 53

  1. Create an AppTheme

41 of 53

AppTheme

42 of 53

2. Add ThemeXConfiguration to the top of your widget tree

43 of 53

ThemeXConfiguration

44 of 53

3. Wrap your app or widgets with ThemeXWrapper

45 of 53

ThemeXWrapper

46 of 53

4. Apply theme tokens in your UI

47 of 53

Apply tokens in the UI

48 of 53

Let's see how it works, together!

49 of 53

What we'll do:�1- Implement themes with ThemeXpert

2- Implement dark mode

3- (Bonus) Rebrand an app

50 of 53

Our app for today

51 of 53

Github repository

52 of 53

Thank you!

Tampa, Florida

53 of 53

Q&A

Tampa, Florida