flutter-improving-accessibility — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited flutter-improving-accessibility (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Design layouts to accommodate dynamic scaling and high visibility. Flutter automatically calculates font sizes based on OS-level accessibility settings.
Utilize Flutter's catalog of accessibility widgets to manipulate the semantics tree exposed to assistive technologies (like TalkBack or VoiceOver).
SemanticsRole enum (e.g., button, link, heading) when building custom components.Flutter web renders UI on a single canvas, requiring a specialized DOM layer to expose structure to browsers.
aria-label="Enable accessibility").TabBar, MenuAnchor, Table) for automatic ARIA role mapping. For custom components, explicitly assign SemanticsRole values to ensure screen readers interpret the elements correctly.Differentiate between adaptive and responsive paradigms to build universal applications.
Copy this checklist to track accessibility compliance during UI development:
Semantics and assign the appropriate SemanticsRole.MergeSemantics to prevent screen reader fatigue.ExcludeSemantics.Run this loop when finalizing a view or component:
Semantics, adjust constraints, or modify colors. Repeat until the screen reader provides a clear, logical traversal of the UI.If targeting web and requiring accessibility by default, initialize the semantics binding before running the app.
import 'package:flutter/material.dart';
import 'package:flutter/semantics.dart';
import 'package:flutter/foundation.dart';
void main() {
if (kIsWeb) {
SemanticsBinding.instance.ensureSemantics();
}
runApp(const MyApp());
}If building a custom widget that acts as a list item, explicitly define its semantic role so assistive technologies and web ARIA mappings interpret it correctly.
import 'package:flutter/material.dart';
import 'package:flutter/semantics.dart';
class CustomListItem extends StatelessWidget {
final String text;
const CustomListItem({super.key, required this.text});
@override
Widget build(BuildContext context) {
return Semantics(
role: SemanticsRole.listItem,
label: text,
child: Padding(
padding: const EdgeInsets.all(12.0), // Ensures > 48px tap target if interactive
child: Text(
text,
style: const TextStyle(fontSize: 16), // Ensure contrast ratio > 4.5:1
),
),
);
}
}~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.