Slide 1

Slide 1 text

Advanced and Engaging UI in Flutter software engineering principles for creating a standard UI in your application By Ali Yazdi yazdi.dev linkedin.com/in/aliyazdi75

Slide 2

Slide 2 text

Interrupt me if you have any questions, thanks!

Slide 3

Slide 3 text

References

Slide 4

Slide 4 text

“ There are essentially two basic approaches to design: the artistic ideal of expressing yourself and the engineering ideal of solving a problem for a customer. — Jakob Nielsen

Slide 5

Slide 5 text

Place the user in control Reduce the user’s memory load Make the interface consistent THE GOLDEN RULES + + +

Slide 6

Slide 6 text

A system that reads my mind. It knows what I want to do before I need to do it and makes it very easy for me to get it done. That’s all, just that. Place the user in control

Slide 7

Slide 7 text

● Define interaction modes in a way that does not force a user into unnecessary or undesired actions. An interaction mode is the current state of the interface. Place the user in control

Slide 8

Slide 8 text

● Provide for flexible interaction. Because different users have different interaction preferences, choices should be provided. For example, software might allow a user to interact via keyboard commands, mouse movement, a digitizer pen For example using Tab to go to the next FocusNode Place the user in control

Slide 9

Slide 9 text

Place the user in control

Slide 10

Slide 10 text

● Allow user interaction to be interruptible and undoable. Even when involved in a sequence of actions, the user should be able to interrupt the sequence to do something else Place the user in control

Slide 11

Slide 11 text

● Streamline interaction as skill levels advance and allow the interaction to be customized. Users often find that they perform the same sequence of interactions repeatedly. It is worthwhile to design a “macro” mechanism that enables an advanced user to customize the interface to facilitate interaction. Place the user in control

Slide 12

Slide 12 text

A well-designed user interface does not tax a user’s memory because the more a user has to remember, the more error-prone the interaction will be. Reduce the User’s Memory Load

Slide 13

Slide 13 text

● Reduce demand on short-term memory. The interface should be designed to reduce the requirement to remember past actions, inputs, and results. Reduce the User’s Memory Load

Slide 14

Slide 14 text

● Establish meaningful defaults. The initial set of defaults should make sense for the average user, but a user should be able to specify individual preferences. Reduce the User’s Memory Load

Slide 15

Slide 15 text

● The visual layout of the interface should be based on a real-world metaphor. For example, a bill payment app uses void check for auto deposit, we need a picture of void check explaining the information’s numbers to guide users through the process. This enables the user to rely on well-understood visual cues, rather than memorizing an arcane interaction sequence. Reduce the User’s Memory Load

Slide 16

Slide 16 text

Consistency in interface design helps users understand and navigate the interface more effectively, reduces cognitive load, and creates a more intuitive and familiar user experience. Make the Interface Consistent

Slide 17

Slide 17 text

Make the Interface Consistent

Slide 18

Slide 18 text

Make the Interface Consistent

Slide 19

Slide 19 text

User interface (UI) design patterns provide standardized solutions to common design problems, ensuring a consistent and user-friendly experience. User Interface Design Patterns Common Design Issues: ● Response Time. Length (too long) and Variability (a consistent 1-second response time is preferable to a response that varies from 0.1 to 2.5 seconds) ● User Help Facilities. Interactive systems should provide online help facilities to enable users to resolve issues without leaving the interface. ● Error Handling. Describe the problem in understandable terms and Provide constructive advice for recovery.

Slide 20

Slide 20 text

User Interface Design Patterns Application Accessibility (a[11]y) Accessibility requirements and goals are documented across component pages and guidelines. Understanding your product’s accessibility can enhance usability for all users, including those with low vision, blindness, hearing impairments, cognitive impairments, motor impairments, or situational disabilities (such as a broken arm). Guidelines for accessibility include: ● Following accessibility standards (e.g., W3C guidelines). ● Ensuring high contrast for readability (Will discuss later for Material)

Slide 21

Slide 21 text

User Interface Design Patterns Application Accessibility ● Providing scalable fonts and screen reader support.

Slide 22

Slide 22 text

User Interface Design Patterns Application Accessibility ● Providing scalable fonts and screen reader support.

Slide 23

Slide 23 text

User Interface Design Patterns Internationalization (i[18]n) and Localization (l[10]n) Creating user interfaces for different locales and languages involves more than just translation. It requires designing “globalized” software with localization features for specific markets. Techniques used include: ● Extracting text strings from the code into resource files. ● Designing layouts that can accommodate different text lengths and directions. ● Translating text strings into the target language. ● Adapting date, time, and number formats to the target locale. ● Adjusting graphical elements to be culturally appropriate. Don’t use Padding to have a consistent ltf and rtl!

Slide 24

Slide 24 text

A comprehensive design system that provides guidelines for creating user interfaces that are visually appealing, consistent, and accessible. The core principles include: ● User-Centered Design: Focus on user needs and preferences. ● Consistency: Maintain uniformity in design elements and interactions across the app. ● Responsive and adaptable layouts: Adapt layouts to compact, medium, expanded, large, and extra-large window size classes that be responsive to any device such as desktop, foldable, mobile Material Design

Slide 25

Slide 25 text

Material Design Accessibility and Assistive Technology ● Screen Reader Support ● Color Contrast ● Scalable Fonts

Slide 26

Slide 26 text

Material Design Do’s and Don’ts: ● Use Labels, Semantics, and Focus Nodes ● Use SeedColor ● Consider dynamic color from user chosen color ● In case of custom colors, use tools to make sure contrast ratio is ok ● Use flexible components for Magnifiers that change size to fit their content ● Don’t hard code anything, text, color, size, style, instead first make sure your custom UIs respect the rules and then use theming and reusable components

Slide 27

Slide 27 text

Material Design Motion Makes a UI expressive and easy to use, It’s not only about beauty, third rule (Reduce the User’s Memory Load: The visual layout of the interface should be based on a real-world metaphor): ● Purposeful Motion: Enhances user interactions by providing feedback and maintaining continuity. ● Natural and Responsive: Motion should feel natural and responsive, mimicking real-world physics. ● Expressive and Efficient: Motion should be expressive but not distract from functionality. Don’t use motions without any purpose or to make your application more complicated!

Slide 28

Slide 28 text

Material Design Transition A quick animation that connects two discrete states in a UI. When implemented well, they help users understand how an app works by showing the relationship between the UI elements.

Slide 29

Slide 29 text

Material Design Transition Use animation package: Codelabs: https://codelabs.developers.google.com/codelabs/material-motion-flutter

Slide 30

Slide 30 text

Keep in mind that your users are differents Consider Golden Rules when you create UI + Use responsive and adaptive components in mind if you develop for multi-platforms Don’t hard code any texts and style Summary + + +

Slide 31

Slide 31 text

m3.material.io medium.yazdi.dev Want to learn more

Slide 32

Slide 32 text

THANK YOU! v