From 5f0476a105a820b8e8654cddf58f0461fc831f49 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 24 Apr 2025 14:06:28 +0700 Subject: [PATCH] TF-3678 Support accessibility for `Set as default identity` checkbox Signed-off-by: dab246 --- .../views/semantics/checkbox_semantics.dart | 25 +++++++++++++++++++ ...set_default_identity_checkbox_builder.dart | 17 +++++++++---- 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 core/lib/presentation/views/semantics/checkbox_semantics.dart diff --git a/core/lib/presentation/views/semantics/checkbox_semantics.dart b/core/lib/presentation/views/semantics/checkbox_semantics.dart new file mode 100644 index 000000000..a889766c7 --- /dev/null +++ b/core/lib/presentation/views/semantics/checkbox_semantics.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; + +class CheckboxSemantics extends StatelessWidget { + final Widget child; + final String label; + final bool value; + + const CheckboxSemantics({ + super.key, + required this.child, + required this.label, + required this.value, + }); + + @override + Widget build(BuildContext context) { + return Semantics( + label: label, + container: true, + checked: true, + value: '$value', + child: child, + ); + } +} diff --git a/lib/features/identity_creator/presentation/widgets/set_default_identity_checkbox_builder.dart b/lib/features/identity_creator/presentation/widgets/set_default_identity_checkbox_builder.dart index fa4e530c9..79dfd9f6a 100644 --- a/lib/features/identity_creator/presentation/widgets/set_default_identity_checkbox_builder.dart +++ b/lib/features/identity_creator/presentation/widgets/set_default_identity_checkbox_builder.dart @@ -1,5 +1,6 @@ import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; +import 'package:core/presentation/views/semantics/checkbox_semantics.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; @@ -23,10 +24,14 @@ class SetDefaultIdentityCheckboxBuilder extends StatelessWidget { return Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ - Material( - child: InkWell( - onTap: onCheckboxChanged, - child: Container( + CheckboxSemantics( + label: 'Set default identity checkbox', + value: isCheck, + child: Material( + type: MaterialType.transparency, + child: InkWell( + onTap: onCheckboxChanged, + child: Container( width: 20, height: 20, decoration: BoxDecoration( @@ -39,7 +44,9 @@ class SetDefaultIdentityCheckboxBuilder extends StatelessWidget { colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn), width: 18, height: 18, - )), + ), + ), + ), ), ), const SizedBox(width: 8),