TF-3678 Support accessibility for loading icon in the mail list area

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-04-24 14:08:26 +07:00
committed by Dat H. Pham
parent 5f0476a105
commit d3ddea3bd5
3 changed files with 35 additions and 2 deletions
@@ -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 {
@@ -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,
);
}
}
@@ -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();
}