flutter_accessibility_helper 0.0.2
flutter_accessibility_helper: ^0.0.2 copied to clipboard
Screen reader optimization, focus management, and accessibility testing tools for Flutter applications.
Flutter Accessibility Helper #
A comprehensive Flutter package providing screen reader optimization, focus management, and accessibility testing tools to help developers create more accessible Flutter applications.
Features #
- Screen Reader Optimization: Tools to optimize content for screen readers
- Focus Management: Comprehensive focus management utilities for keyboard navigation
- Accessibility Testing: Built-in testing tools for accessibility compliance
- Widget Extensions: Pre-built accessible widgets and extensions
- Semantic Support: ARIA-like semantics for Flutter widgets
- Testing Utilities: Comprehensive testing framework for accessibility features
- Cross-Platform Support: Works on iOS, Android, Web, Windows, macOS, and Linux
- WASM Compatible: Full support for WebAssembly runtime
Getting Started #
Installation #
Add this to your package's pubspec.yaml
file:
dependencies:
flutter_accessibility_helper: ^0.0.2
Usage #
import 'package:flutter_accessibility_helper/flutter_accessibility_helper.dart';
// Announce to screen reader
AccessibilityHelper.announceToScreenReader('Form submitted successfully');
// Create accessible button
AccessibilityWidgets.accessibleButton(
label: 'Submit Form',
onPressed: () => submitForm(),
hint: 'Double tap to submit the form',
);
// Manage focus
final focusNode = FocusManager.createFocusNode();
FocusManager.requestFocus(context, focusNode);
Core Components #
AccessibilityHelper #
The main utility class providing core accessibility functions:
// Announce messages to screen readers
AccessibilityHelper.announceToScreenReader('New content loaded');
// Check accessibility status
if (AccessibilityHelper.isAccessibilityEnabled) {
// Provide enhanced features
}
// Validate accessibility compliance
final issues = AccessibilityHelper.validateAccessibility(context);
FocusManager #
Comprehensive focus management utilities:
// Create and manage focus nodes
final focusNode = FocusManager.createFocusNode();
// Navigate focus
FocusManager.nextFocus(context);
FocusManager.previousFocus(context);
// Check focus status
if (FocusManager.hasFocus(focusNode)) {
// Handle focused state
}
ScreenReaderOptimizer #
Optimize content for screen readers:
// Optimize text for speech
final optimizedText = ScreenReaderOptimizer.optimizeForScreenReader(
'Hello, World!'
);
// Create semantic labels
final label = ScreenReaderOptimizer.createSemanticLabel('Press', 'button');
AccessibilityWidgets #
Pre-built accessible widgets:
// Accessible button with proper semantics
AccessibilityWidgets.accessibleButton(
label: 'Save',
onPressed: saveData,
hint: 'Double tap to save your changes',
);
// Accessible text with semantic labels
AccessibilityWidgets.accessibleText(
'Submit',
semanticsLabel: 'Submit button for the contact form',
);
Testing #
The package includes comprehensive testing utilities:
// Test accessibility compliance
final issues = AccessibilityTesting.validateAccessibility(context);
// Test semantics
final isValid = SemanticsTester.testSemantics('Label', 'Hint');
// Test focus order
final focusValid = AccessibilityTesting.validateFocusOrder(widgets);
Accessibility Best Practices #
This package helps implement several accessibility best practices:
- Semantic Labels: Provide meaningful labels for all interactive elements
- Focus Management: Ensure logical tab order and proper focus indicators
- Screen Reader Support: Optimize content for screen reader announcements
- Testing: Comprehensive testing for accessibility compliance
- Documentation: Clear documentation and examples for all features
Contributing #
We welcome contributions! Please see our Contributing Guide for details.
License #
This project is licensed under the MIT License - see the LICENSE file for details.
Support #
If you encounter any issues or have questions, please:
- Check the documentation
- Search existing issues
- Create a new issue
Version History #
See CHANGELOG.md for a complete version history.
Note: This package is designed to achieve a full Pana score of 160/160 and follows Flutter and Dart best practices for accessibility.