@@ -8,6 +8,21 @@ import 'package:flutter/painting.dart';
8
8
9
9
export 'dart:ui' show TextDirection;
10
10
11
+ /// Determines the assertiveness level of the accessibility announcement.
12
+ ///
13
+ /// It is used by [AnnounceSemanticsEvent] to determine the priority with which
14
+ /// assistive technology should treat announcements.
15
+ enum Assertiveness {
16
+ /// The assistive technology will speak changes whenever the user is idle.
17
+ polite,
18
+
19
+ /// The assistive technology will interrupt any announcement that it is
20
+ /// currently making to notify the user about the change.
21
+ ///
22
+ /// It should only be used for time-sensitive/critical notifications.
23
+ assertive,
24
+ }
25
+
11
26
/// An event sent by the application to notify interested listeners that
12
27
/// something happened to the user interface (e.g. a view scrolled).
13
28
///
@@ -71,7 +86,7 @@ abstract class SemanticsEvent {
71
86
class AnnounceSemanticsEvent extends SemanticsEvent {
72
87
73
88
/// Constructs an event that triggers an announcement by the platform.
74
- const AnnounceSemanticsEvent (this .message, this .textDirection)
89
+ const AnnounceSemanticsEvent (this .message, this .textDirection, { this .assertiveness = Assertiveness .polite} )
75
90
: assert (message != null ),
76
91
assert (textDirection != null ),
77
92
super ('announce' );
@@ -86,11 +101,20 @@ class AnnounceSemanticsEvent extends SemanticsEvent {
86
101
/// This property must not be null.
87
102
final TextDirection textDirection;
88
103
104
+ /// Determines whether the announcement should interrupt any existing announcement,
105
+ /// or queue after it.
106
+ ///
107
+ /// On the web this option uses the aria-live level to set the assertiveness
108
+ /// of the announcement. On iOS, Android, Windows, Linux, macOS, and Fuchsia
109
+ /// this option currently has no effect.
110
+ final Assertiveness assertiveness;
111
+
89
112
@override
90
113
Map <String , dynamic > getDataMap () {
91
114
return < String , dynamic > {
92
115
'message' : message,
93
116
'textDirection' : textDirection.index,
117
+ 'assertiveness' : assertiveness.index,
94
118
};
95
119
}
96
120
}
0 commit comments