Skip to content

[Linux] accessibility of widgets with text content #103191

Closed
@jpnurmi

Description

@jpnurmi

The AtkText interface is missing implementation.

Steps to Reproduce

  1. Execute flutter run on the code sample
  2. Start Accerciser
  3. Inspect the "Text" accessibility interface of labels and fields

Expected results:
Flutter widgets report text content through the Text accessibility interface.

Actual results:
Flutter reports that the Text accessibility interface is implemented, but all values are missing.

Flutter sample
import 'package:flutter/material.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        inputDecorationTheme: const InputDecorationTheme(
          border: OutlineInputBorder(),
        ),
      ),
      home: Scaffold(
        body: Padding(
          padding: const EdgeInsets.all(20),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              const Text('Text', semanticsLabel: 'Text'),
              const SizedBox(height: 20),
              const SelectableText(
                'SelectableText',
                semanticsLabel: 'SelectableText',
              ),
              const SizedBox(height: 20),
              TextField(
                controller: TextEditingController(text: 'TextField'),
              ),
              const SizedBox(height: 20),
              TextField(
                readOnly: true,
                controller:
                    TextEditingController(text: 'TextField (read-only)'),
              ),
              const SizedBox(height: 20),
              TextField(
                obscureText: true,
                controller: TextEditingController(text: 'password'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
GTK sample
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface>
  <requires lib="gtk+" version="3.24"/>
  <object class="GtkWindow">
    <property name="can-focus">False</property>
    <child>
      <object class="GtkBox">
        <property name="visible">True</property>
        <property name="can-focus">False</property>
        <property name="margin-start">20</property>
        <property name="margin-end">20</property>
        <property name="margin-top">20</property>
        <property name="margin-bottom">20</property>
        <property name="orientation">vertical</property>
        <property name="spacing">20</property>
        <child>
          <object class="GtkLabel">
            <property name="visible">True</property>
            <property name="can-focus">False</property>
            <property name="label" translatable="yes">GtkLabel</property>
            <property name="xalign">0</property>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">0</property>
          </packing>
        </child>
        <child>
          <object class="GtkLabel">
            <property name="visible">True</property>
            <property name="can-focus">False</property>
            <property name="label" translatable="yes">GtkLabel (selectable)</property>
            <property name="selectable">True</property>
            <property name="xalign">0</property>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">1</property>
          </packing>
        </child>
        <child>
          <object class="GtkEntry">
            <property name="visible">True</property>
            <property name="can-focus">True</property>
            <property name="text" translatable="yes">GtkEntry</property>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">2</property>
          </packing>
        </child>
        <child>
          <object class="GtkEntry">
            <property name="visible">True</property>
            <property name="can-focus">True</property>
            <property name="editable">False</property>
            <property name="text" translatable="yes">GtkEntry (read-only)</property>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">3</property>
          </packing>
        </child>
        <child>
          <object class="GtkEntry">
            <property name="visible">True</property>
            <property name="can-focus">True</property>
            <property name="visibility">False</property>
            <property name="text" translatable="yes">password</property>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">4</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
  <object class="GtkTextBuffer" id="textbuffer1">
    <property name="text" translatable="yes">GtkTextView</property>
  </object>
  <object class="GtkTextBuffer" id="textbuffer2">
    <property name="text" translatable="yes">GtkTextView (read-only)</property>
  </object>
</interface>
Flutter GTK
image image
image image
Flutter doctor
[✓] Flutter (Channel master, 2.13.0-0.0.pre.940, on Ubuntu 22.04 LTS 5.15.0-27-generic, locale en_US.UTF-8)
    • Flutter version 2.13.0-0.0.pre.940 at /home/jpnurmi/Flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 8094263cb7 (3 hours ago), 2022-05-06 04:59:06 -0400
    • Engine revision eb4f476fa6
    • Dart version 2.18.0 (build 2.18.0-91.0.dev)
    • DevTools version 2.13.0

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /home/jpnurmi/Android/Sdk
    • Platform android-31, build-tools 31.0.0
    • ANDROID_SDK_ROOT = /home/jpnurmi/Android/Sdk
    • Java binary at: /home/jpnurmi/Android/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)
    • All Android licenses accepted.

[✓] Linux toolchain - develop for Linux desktop
    • Ubuntu clang version 14.0.0-1ubuntu1
    • cmake version 3.22.1
    • ninja version 1.10.1
    • pkg-config version 0.29.2

[✓] Android Studio (version 2020.3)
    • Android Studio at /home/jpnurmi/Android/android-studio
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)

[✓] VS Code
    • VS Code at /snap/code/current
    • Flutter extension version 3.40.0

[✓] Connected device (1 available)
    • Linux (desktop) • linux • linux-x64 • Ubuntu 22.04 LTS 5.15.0-27-generic

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

Metadata

Metadata

Assignees

Labels

P2Important issues not at the top of the work lista: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)a: desktopRunning on desktopa: typographyText rendering, possibly libtxtfound in release: 2.10Found to occur in 2.10found in release: 2.13Found to occur in 2.13frameworkflutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onplatform-linuxBuilding on or for Linux specificallyr: solvedIssue is closed as solved

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions