...

/

Accessibility in Flutter

Accessibility in Flutter

Learn to make your Flutter application more accessible.

Accessibility refers to the practice of making our applications usable by as many people as possible. We traditionally think of accessibility as being about people with disabilities. However, the practice of making applications accessible also benefits other groups, such as people who speak different languages, read from right to left, have slow network connections, or have minor impairments.

We probably don’t want to exclude people of certain abilities, circumstances, or cultures from accessing or effectively using our application.

In this lesson, we will learn to make our application more accessible to different user groups, regardless of their abilities or circumstances.

we’ll achieve this by:

  1. Learning the different forms of disability
  2. Scanning our application to discover accessibility issues
  3. Labeling our application’s semantics
  4. Making our application neurodiversity accessible

Forms of disabilities

People with disabilities are just as diverse as people without disabilities, and so are their abilities. There are four major categories of disabilities, namely:

  • Motor disability, which affects motion
  • Vision disability, which affects seeing
  • Neurodiversity disability, which affects perception and concentration
  • Hearing disability

The table below shows the different types of disabilities, the challenges people might face while using our application, and how we can help them by making our applications more accessible.

Disability

Challenges

How to Help

Motor

Require large click/touch targets

Require special hardware

Require voice-activated software

Have different difficulty levels in games

Enable keyboard navigation

Enable voice navigation

Use adaptive UI components

Enable text autocompletion

Vision

Blindness

Severe visual impairment

Moderate visual impairment

Mild vision impairment

Colorblindness

Use large font sizes

Screen readers

High contrast content

Use both color and icons to convey messages

Add options to change colors in your application

Neurodiversity

Focussing problems

Learning difficulties

Autism

Dyslexia

ADHD

Use minimal design

Voice narrations and subtitles

Enable spell-checking, autocorrection, and sentence capitalization

Offer the ability to remember settings and passwords

Guide the user with hints (without overwhelming them)

Hearing

High hearing threshold by air or bone conduction

Failure to repeat words in a word recognition test

Closed captioning

Including visual signals in games

Vibration on notifications

Run the application below to test the implementation of available accessibility features.

import 'package:flutter/material.dart';

import 'home_page.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Accessibility Demo',
      theme: ThemeData(primarySwatch: Colors.blue, useMaterial3: false),
      home: const HomePage(),
      debugShowCheckedModeBanner: false,
    );
  }
}
Accessibility starter code

Scanning our application with Accessibility Scanner

To discover accessibility issues in our application, run the application in an Android emulator or physical device and use the Accessibility Scanner ...