accessibility_scanner 1.0.0 copy "accessibility_scanner: ^1.0.0" to clipboard
accessibility_scanner: ^1.0.0 copied to clipboard

PlatformAndroid

The auxiliary function of scanning code gun based on AccessibilityService

example/lib/main.dart

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:accessibility_scanner/accessibility_scanner.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'accessibility_scanner_demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: const Text('无障碍服务扫码测试'),
        ),
        body: const TestScannerWidget(),
      ),
    );
  }
}

class TestScannerWidget extends StatefulWidget {
  const TestScannerWidget({super.key});

  @override
  State<TestScannerWidget> createState() => _TestScannerWidgetState();
}

class _TestScannerWidgetState extends State<TestScannerWidget> {
  String? scanData;

  @override
  void initState() {
    super.initState();
    // 检查扫码无障碍服务是否开启
    WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
      checkAccessibilityScanner();
    });
    // 开始监听扫码服务
    AccessibilityScannerProvider.listenScannerData(
      (data) {
        // 获取到扫码结果
        setState(() {
          scanData = data;
        });
      },
      (error) {
        // 暂无处理
      },
    );
  }

  // 检查扫码无障碍服务是否开启
  Future<void> checkAccessibilityScanner() async {
    bool isAccessibilityScannerEnabled = await AccessibilityScannerProvider.isAccessibilitySettingsOn();
    if (!isAccessibilityScannerEnabled) {
      // 未开启无障碍服务,引导用户去设置中打开
      openAccessibilitySettings();
    }
  }

  // 弹窗开启扫码无障碍服务
  void openAccessibilitySettings() {
    showDialog(
      context: context,
      builder: (context) {
        return AlertDialog(
          content: const Text('本应用支持扫码服务,如需开启请点击“去设置”并找到您的应用,设置状态为启用,并依次点击返回,回到应用'),
          actions: [
            TextButton(
              onPressed: () async {
                AccessibilityScannerProvider.openAccessibilitySetting();
                Navigator.pop(context);
              },
              child: const Text('去设置'),
            ),
          ],
        );
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('扫码结果:${scanData ?? ''}'),
    );
  }
}
0
likes
135
points
29
downloads

Publisher

unverified uploader

Weekly Downloads

The auxiliary function of scanning code gun based on AccessibilityService

Repository (GitHub)

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on accessibility_scanner