Flutter无障碍功能插件accessibilty的使用
Flutter无障碍功能插件accessibilty的使用
Accessibilty 插件
此Flutter插件可以从iOS和Android设备上收集无障碍数据。它可以收集屏幕阅读器(ScreenReader)、语音识别(VoiceOver)、字体大小等信息。
开始使用
要获取这些数据,只需创建一个该插件的实例并调用getAccessibilityStats()
方法。该方法将返回一个字符串,包含基于当前使用的设备和平台的无障碍数据。
响应示例
Android响应示例
{
"isTouchExplorationEnabled": "false",
"isTalkBackEnabled": "false",
"isSamsungTalkBackEnabled": "false",
"isSelectToSpeakEnabled": "false",
"isSwitchAccessEnabled": "false",
"isBrailleBackEnabled": "false",
"isVoiceAccessEnabled": "false",
"fontScale": "1.3",
"fontWeightAdjustment": "0",
"displayScale": "1.1892857142857143",
"isClosedCaptioningEnabled": "false",
"isAnimationsDisabled": "false",
"enabledAccessibilityServices": "[]",
"screenOrientation": "portrait",
"applicationId": "ExampleApp",
"defaultLanguage": "en-US",
"sdkVersion": "33",
"manufacturer": "Google",
"modelName": "sdk_gphone64_x86_64",
"isNightModeEnabled": "false",
"daytime": "day"
}
iOS响应示例
{
"Accessibility_isSpeakScreenEnabled": "false",
"Accessibility_isSpeakSelectionEnabled": "false",
"Watch_supported": "true",
"Accessibility_uses_any_accessibility_setting": "false",
"System_model_name": "Simulator",
"Screen_in_split_screen": "false",
"Accessibility_isBoldTextEnabled": "false",
"Stats_version": "iOS 2022-04-15",
"Screen_device_idiom": "phone",
"Accessibility_isGrayscaleEnabled": "false",
"Screen_zoomed": "false",
"Preference_preferred_content_size": "large",
"Screen_window_width": "393",
"Accessibility_isSwitchControlRunning": "false",
"Accessibility_isShakeToUndoEnabled": "true",
"Screen_scale": "@3x",
"Accessibility_isClosedCaptioningEnabled": "false",
"Accessibility_islnvertColorsEnabled": "false",
"Preference_daytime": "day",
"Screen_width": "393",
"Accessibility_isReduceTransparencyEnabled": "false",
"System_model_id": "x86_64",
"Stats_timestamp": "1696490514.6148028",
"App_bundle_identifier": "accessibility.plugin.com.accessibiltyExample",
"System_OS_major_version": "16",
"Accessibility_isDarkerSystemColorsEnabled": "false",
"Accessibility_isAssistiveTouchRunning_with_isGuidedAccessEnabled": "Unknown",
"System_Preferred_language": "nl-US",
"System_Dutch_region": "false",
"Preference_UI_style": "light",
"Screen_display_gamut": "P3",
"Accessibility_isMonoAudioEnabled": "false",
"Screen_orientation": "portrait",
"Accessibility_isVoiceOverRunning": "false",
"Accessibility_isGuidedAccessEnabled": "false"
}
完整示例代码
以下是使用accessibilty
插件的完整示例代码:
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:accessibilty/accessibilty.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _accessibilityStats = '未知';
final _accessibiltyPlugin = Accessibilty();
[@override](/user/override)
void initState() {
super.initState();
initAccessibilityStatsState();
}
// 平台消息是异步的,因此我们在异步方法中初始化。
Future<void> initAccessibilityStatsState() async {
String accessibilityStats;
// 平台消息可能会失败,所以我们使用try/catch来处理PlatformException。
// 我们也处理了消息可能返回null的情况。
try {
accessibilityStats = await _accessibiltyPlugin.getAccessibilityStats() ??
'未知无障碍统计信息';
} on PlatformException {
accessibilityStats = '获取无障碍统计信息失败。';
}
// 如果在异步平台消息飞行时小部件从树中被移除,则我们希望丢弃回复而不是调用setState来更新我们的非存在的外观。
if (!mounted) return;
setState(() {
_accessibilityStats = accessibilityStats;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('插件示例应用'),
),
body: Center(
child: Text('运行于: $_accessibilityStats\n'),
),
),
);
}
}
更多关于Flutter无障碍功能插件accessibilty的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复