diff --git a/core/lib/presentation/views/loading/cupertino_loading_widget.dart b/core/lib/presentation/views/loading/cupertino_loading_widget.dart index 36544a955..214783ece 100644 --- a/core/lib/presentation/views/loading/cupertino_loading_widget.dart +++ b/core/lib/presentation/views/loading/cupertino_loading_widget.dart @@ -1,4 +1,5 @@ import 'package:core/presentation/views/loading/cupertino_loading_widget_styles.dart'; +import 'package:core/presentation/views/semantics/icon_semantics.dart'; import 'package:flutter/cupertino.dart'; class CupertinoLoadingWidget extends StatelessWidget { @@ -6,17 +7,19 @@ class CupertinoLoadingWidget extends StatelessWidget { final double? size; final EdgeInsetsGeometry? padding; final bool isCenter; + final String? semanticLabel; const CupertinoLoadingWidget({ super.key, this.size, this.padding, this.isCenter = true, + this.semanticLabel, }); @override Widget build(BuildContext context) { - final item = isCenter + Widget item = isCenter ? Center( child: SizedBox( width: size ?? CupertinoLoadingWidgetStyles.size, @@ -36,6 +39,11 @@ class CupertinoLoadingWidget extends StatelessWidget { ) ), ); + + if (semanticLabel != null) { + item = IconSemantics(label: semanticLabel!, child: item); + } + if (padding != null) { return Padding(padding: padding!, child: item); } else { diff --git a/core/lib/presentation/views/semantics/icon_semantics.dart b/core/lib/presentation/views/semantics/icon_semantics.dart new file mode 100644 index 000000000..d19a72ecc --- /dev/null +++ b/core/lib/presentation/views/semantics/icon_semantics.dart @@ -0,0 +1,22 @@ +import 'package:flutter/material.dart'; + +class IconSemantics extends StatelessWidget { + final Widget child; + final String label; + + const IconSemantics({ + super.key, + required this.child, + required this.label, + }); + + @override + Widget build(BuildContext context) { + return Semantics( + label: label, + container: true, + image: true, + child: child, + ); + } +} diff --git a/lib/features/thread/presentation/widgets/thread_view_loading_bar_widget.dart b/lib/features/thread/presentation/widgets/thread_view_loading_bar_widget.dart index f76eb935d..b04590fe4 100644 --- a/lib/features/thread/presentation/widgets/thread_view_loading_bar_widget.dart +++ b/lib/features/thread/presentation/widgets/thread_view_loading_bar_widget.dart @@ -26,7 +26,10 @@ class ThreadViewLoadingBarWidget extends StatelessWidget { success is CleanAndGetAllEmailLoading) { return const Padding( padding: EdgeInsetsDirectional.only(top: 16), - child: CupertinoLoadingWidget()); + child: CupertinoLoadingWidget( + semanticLabel: 'Mail list loading icon', + ), + ); } else { return const SizedBox.shrink(); }