Skip to content

Links don't show up in Screenreader rotors on iOS and Android #166750

Open
@jay-k98

Description

@jay-k98

Steps to reproduce

  1. Use Semantics(link: true, child: ...) in your app
  2. Activate Screenreader (iOS: VoiceOver, Android: Talkback)
  3. Select links in the rotor (iOS: Two fingers Bottle cap "twist", Android: Swipe left/right with three fingers)
  4. Try navigating through links (iOS, Android: Swipe vertically with one finger)

Expected results

Links can be navigated using one finger while the Screenreader rotor is set to "Links"

Actual results

Android: Talkback says that that there is no link before or after (roughly translating from German Talkback)
iOS: The option "Links" isn't even shown in the rotor. (possibly because no links are detected)

Code sample

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter: Rotor "Links" demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Semantics(
              link: true,
              child: Text('https://www.example.com'), // raw
            ), // Should appear in rotor 'Links'
            const Text('This should not appear under "Links"'),
            Semantics(
              link: true,
              child: Text('My Linktext'),
            ), // Should also appear in rotor 'Links'
          ],
        ),
      ),
    );
  }
}

Screenshots or Video

N/A

Logs

N/A

Flutter Doctor output

Doctor output
[✓] Flutter (Channel stable, 3.29.0, on macOS 15.3.2 24D81 darwin-arm64, locale de-DE) [2,0s]
    • Flutter version 3.29.0 on channel stable at /Users/jonas/Development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 35c388afb5 (8 weeks ago), 2025-02-10 12:48:41 -0800
    • Engine revision f73bfc4522
    • Dart version 3.7.0
    • DevTools version 2.42.2

[✓] Android toolchain - develop for Android devices (Android SDK version 36.0.0) [1.681ms]
    • Android SDK at /Users/jonas/Library/Android/sdk
    • Platform android-36, build-tools 36.0.0
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
      This is the JDK bundled with the latest Android Studio installation on this machine.
      To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`.
    • Java version OpenJDK Runtime Environment (build 21.0.5+-13047016-b750.29)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 16.2) [1.439ms]
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 16C5032a
    • CocoaPods version 1.16.2

[✓] Chrome - develop for the web [109ms]
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2024.3) [108ms]
    • Android Studio at /Applications/Android Studio.app/Contents
    • 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 21.0.5+-13047016-b750.29)

[✓] IntelliJ IDEA Community Edition (version 2024.2) [106ms]
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 81.1.3
    • Dart plugin version 242.20629

[✓] VS Code (version 1.89.0) [11ms]
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.108.0

[✓] Connected device (6 available) [6,5s]
    • SM G991B (mobile)               • 192.168.0.64:42525        • android-arm64  • Android 14 (API 34)
    • iPhone-JGKC94G2V0 (mobile)      • 00008120-0006202C1158201E • ios            • iOS 18.4 22E240
    • jay (wireless) (mobile)         • 00008110-001A71383439401E • ios            • iOS 17.7.2 21H221
    • macOS (desktop)                 • macos                     • darwin-arm64   • macOS 15.3.2 24D81 darwin-arm64
    • Mac Designed for iPad (desktop) • mac-designed-for-ipad     • darwin         • macOS 15.3.2 24D81 darwin-arm64
    • Chrome (web)                    • chrome                    • web-javascript • Google Chrome 135.0.7049.42

[✓] Network resources [305ms]
    • All expected network resources are available.

• No issues found!

Metadata

Metadata

Assignees

No one assigned

    Labels

    a: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)found in release: 3.29Found to occur in 3.29found in release: 3.31Found to occur in 3.31frameworkflutter/packages/flutter repository. See also f: labels.fyi-androidFor the attention of Android platform teamfyi-iosFor the attention of iOS platform teamhas reproducible stepsThe issue has been confirmed reproducible and is ready to work onteam-accessibilityOwned by Framework Accessibility team (i.e. responsible for accessibility code in flutter/flutter)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions