Skip to main content

Hey guys,

I am designing an app and I suggested to my client to use Material Design, mentioning that they could use any design system they want, or even create it from scratch, since what I will create has a custom look.


My problem is, and it’s the first time I hear about it in 17 years, my client’s developer is asking me to name the colors exactly like they do in the Material Design system. Is he insane, or am I insane? 😛


He’s using Flutter, and he says that if the colors are named exactly the same, they will simply be assigned to the right element inside each component. But I am not using the colors in the same way, so if they would automatically get assigned, it would be a total mess.


Anyone had this request before? Am I missing something?

Thank you 🙂

I believe the developer is talking about Material Design’s color systems. This involves not only creating generic color names (blue-40, blue-50, …), but going an extra step to assign colors to where and how they will be used.


Here’s the page: Color system – Material Design 3

Here, you’ll notice that the colors have “roles” that go beyond just primary or accent. Each color concept has “groups” which are basically combinations of colors that will always appear together. For example, text on top of the primary color will always be the on-primary color.


This system can be taken another level deeper, where the colors are defined on the component level. I found this article to be super helpful to grasp the different levels of color naming: The Practical Guide to Naming Design Tokens | UX Collective


So it depends—is the developer expecting you to just change the colors on the global color like blue-50 level? Because in that case, you’re right—it will be a total mess. Or is he talking about the component level like button-primary-background?


I would suggest that you ask the developer to provide you with the list of colors he is referring to, so you can see at which level he wants you to name these colors.


Hi @Jenny_Seong

Thank you so much for taking the time for such a great answer.

Yeah, the developer is probably referring to naming the colors exactly as they are named in the Material Design system. He’s using Flutter, and from my understanding, there’s a plugin or builder that basically assigns all the colors in the right place, based on the color names.


The problem is, I didn’t assign the colors in the same way Material Design did, I assigned them based on the app I am designing, so even if I was to name some colors in the same way, if they don’t get hard coded per component and instead assigned automatically, that’ll be a total mess.


I’m trying to find out if this ever happened to someone else, or am I the first one meeting this problem 😛


Going through it rn 😂


I think this Material Design’s approach to color definition is a great thing. It is not about forcing you to use the same color for some components. It is more about naming conventions and dependencies between colors, which makes it much easier to maintain themes inside of the application easly.


Example:


Primary - color for the background, onPrimary - color on the background (for example text color), PrimaryContainer - not sure, probably card / some other box color, onPrimaryContainer - color on the background (text color) of PrimaryContainer


It is a set of colors which work together very well. Developer doesn’t care what value Primary, OnPrimary is. He just needs to know that this particular component has to use Primary and OnPrimary. Designer can change the definition of Primary and OnPrimary - the application will change the colors in every place where this definition was used. It is the main advantage. The other advantage is you have to create color sets instead of using different colors on all components. For developers it is a management chaos if every screen has different sets of colors.


Material Design also is not limiting your number of color sets. You can create new ones, beside using the standard ones. It is just “forcing” you to declare the colors exactly the same as developers are recommended to declare them. It makes the definitions well structured and you can then easly change the colors used accross the app much easier, as developers will not have to go to edit values on screens, but will instead edit the theme of the application. Believe me, it will be a real time saver if you need to change the colors in the application.


The same goes for typography - you delcare textStyles and users can use that in their setup too.


Example: component in the app can have color MaterialTheme.colorScheme.background with text color MaterialTheme.colorScheme.onBackground, but also MaterialTheme.colorScheme.someNewColor with MaterialTheme.colorScheme.OnSomeNewColor


You should also declare all common UI parts, like buttons, popups and other things the same in Figma, although it is not about Material Design. It is just a good practice. Think of it as playing with legos. You give lego parts to developers and they build screens using those lego parts. You can then easly change how the defined lego parts look like and the whole application will be changed accordingly.


Found a great example on Figma: https://www.figma.com/community/file/1036262363837856233


More resources on the topic:

Android Developers

Reply