SuperAPI AI 工具集

flutter-accessibility-validator

测试与质量

查看项目

更新于 10-16 05:05

技能介绍

用途:在创建或修改 Flutter UI 组件、页面或 Widget 时,或用户询问无障碍、屏幕阅读器支持、VoiceOver、TalkBack 等话题时使用,用于检查并改进 Flutter 应用的无障碍实现。

主要能力:

  1. 语义标签:为图标与按钮添加 Semantics(label: 'Settings', button: true, child: Icon(Icons.settings));为图片添加 Semantics(label: 'Profile picture', image: true, child: Image.network(url)),装饰性图片可用 ExcludeSemantics;交互元素优先使用 InkWell 而非 GestureDetector,并配合 Semantics(button: true, label: 'Open', child: InkWell(...))。
  2. 动态播报:使用 import 'package:flutter/semantics.dart'; 与 SemanticsService.announce('Button unlocked!', TextDirection.ltr); 播报状态变化。
  3. 触控目标与表单:触控目标最小 48x48 dp,如 IconButton(iconSize: 48, ...);表单需带标签与错误提示,如 TextField(decoration: InputDecoration(labelText: 'Email', errorText: isValid ? null : 'Invalid'))。
  4. 颜色对比度:使用 ColorPalette(符合 WCAG),如 TextStyle(color: ColorPalette.coloursBasicText.platformBrightnessColor(context))。
  5. 焦点管理:使用 FocusTraversalGroup 配合 OrderedTraversalPolicy 与 FocusTraversalOrder(order: NumericFocusOrder(1), ...) 控制逻辑焦点顺序。
  6. 测试:自动化检查 await expectLater(tester, meetsGuideline(textContrastGuideline)); 与 await expectLater(tester, meetsGuideline(androidTapTargetGuideline));。

检查清单:交互元素具备语义标签;触控目标 ≥ 48x48 dp;对比度文本 ≥ 4.5:1、UI ≥ 3:1;表单有标签与错误提示;动态变化有播报;焦点顺序合理;已用 VoiceOver 与 TalkBack 测试。

限制:资料未提供安装命令、版本要求、平台支持范围及收费信息,暂未提供。