搜索插件、代码仓与 APP 分类

GitHub 代码仓Mamasodikov/zk_finger_10

zk_finger_10

zkfinger10 插件用于支持 ZKTECO 指纹设备的注册和验证功能。

zk_finger_10 项目封面
星标
13
复刻
10
最近推送(UTC)
2025年10月20日
项目状态
未归档

原始 README

以下为英文项目原文快照,最新内容请访问 GitHub。

Support Palestine

zkfinger10 - Modern Fingerprint Plugin for Flutter 🚀

pub package Flutter Android Stand with Palestine

📱 Sample Screenshot

screenshot

A modern, fully updated Flutter plugin for ZKTeco fingerprint scanners with Flutter v3.35.3 compatibility and Android Plugin V2 embedding. This package provides comprehensive support for ZKTeco fingerprint devices including enrollment, verification, and advanced template management.

✨ Major v1.0.0 Update - Fully Modernized!

This plugin has been completely modernized for 2024+ Flutter development:

  • 🎯 Flutter v3.35.3 Compatible
  • 🔧 Android Plugin V2 Embedding
  • 📱 Android API 34+ Support
  • 🏗️ Modern Gradle Build System
  • 💾 Enhanced Database Management
  • 🔒 Improved Security & Performance

📱 Supported Devices

Compatible with ZKTeco fingerprint scanners including:

  • SLK20R series
  • ZK9500 series
  • ZK6500 series
  • ZK8500R series
  • Other ZKTeco USB fingerprint devices

Note: This is an unofficial community-maintained package

cbdd3449eef878911f5c7b6ec75365d2-300x300 (1)

🚀 Getting Started

Requirements
  • Flutter: 3.35.0 or higher
  • Dart SDK: 3.1.0 or higher
  • Android: API 21+ (Android 5.0+)
  • Target Android: API 34 (Android 14)
Installation

Add this to your package's pubspec.yaml file:

dependencies:
  zkfinger10: ^1.0.0

Then run:

flutter pub get

⚙️ Android Configuration

1. Add Permissions

Add these permissions to your android/app/src/main/AndroidManifest.xml:

  • In the Manifest permission section add:
   <uses-permission
        android:name="android.permission.READ_EXTERNAL_STORAGE"
        android:maxSdkVersion="32" />
    <uses-permission
        android:name="android.permission.WRITE_EXTERNAL_STORAGE"
        android:maxSdkVersion="32"
        tools:ignore="ScopedStorage" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.hardware.usb.host" />
2. Configure Activity Intent Filters

Add these intent filters inside the <activity> tag in your AndroidManifest.xml:

<intent-filter>
    <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
    <action android:name="android.intent.action.BOOT_COMPLETED" />
  </intent-filter>
  <meta-data
           android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
           android:resource="@xml/device_filter" />
3. Add USB Device Filter

Create android/app/src/main/res/xml/device_filter.xml with the following content:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <usb-device vendor-id="6997" product-id="289" />
</resources>

📚 API Reference

Core Methods
import 'package:zkfinger10/zkfinger10.dart';

// Initialize connection
await ZkFinger.openConnection();

// Register a fingerprint
await ZkFinger.registerFinger(userId: "user123");

// Identify a fingerprint
await ZkFinger.identify();

// Clear all fingerprints
await ZkFinger.clearFingerDatabase();

// Close connection
await ZkFinger.closeConnection();
🆕 New Bidirectional Data Management
// Get fingerprint feature data for a specific user
String? feature = await ZkFinger.getUserFeature(userId: "user123");

// Get all users and their fingerprint data
Map<String, String>? users = await ZkFinger.getAllUsers();

// Get total count of users
int? count = await ZkFinger.getUserCount();

// Update user's fingerprint feature data
bool? success = await ZkFinger.updateUserFeature(
  userId: "user123",
  feature: "base64_encoded_fingerprint_data"
);

// Check if user exists
bool? exists = await ZkFinger.checkUserExists(userId: "user123");
Event Streams
// Listen to fingerprint status changes
ZkFinger.fingerStatusChangeStream.listen((status) {
  print('Status: ${status['message']}');
});

// Listen to fingerprint image data
ZkFinger.fingerImageStream.listen((imageBytes) {
  // Process fingerprint image
});

⚠️ Build Configuration

Release Build Settings

Add these lines to your android/app/build.gradle if you have problems on release:

    buildTypes {
        release {
           ....
            
            //Add these lines when releasing your app
            minifyEnabled false
            shrinkResources false
            // useProguard false 
            
        }
    }

🔧 Troubleshooting

Common Issues
  1. Plugin not found: Ensure you've run flutter pub get and restarted your IDE
  2. USB permission denied: Check that your device filter XML is correctly configured
  3. Build errors: Verify your Flutter and Android versions meet the requirements
  4. Runtime crashes: Ensure you're targeting Android API 34+ with proper permissions
Migration from v0.x.x

If upgrading from an older version:

  1. Update Flutter: Ensure you're using Flutter 3.35.0+
  2. Update Android: Target API 34+ in your build.gradle
  3. Check Permissions: Verify all required permissions are added
  4. Test Thoroughly: The plugin now uses V2 embedding which may affect lifecycle behavior

🤝 Contributing

Found a bug or want to contribute?

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • ZKTeco for the original SDK
  • Flutter community for continuous support
  • All contributors who helped modernize this plugin
Muhammad Aziz GitHub avatar
GitHub 作者

Muhammad Aziz ↗

I'm a qualified Mobile Developer 📱 🐦

Regional GovernmentUzbekistan
语言DartJava

分类

此仓库发布的插件

使用的依赖

依赖清单 5 项

  • flutter{"sdk":"flutter"}
  • plugin_platform_interface^2.1.8
  • uuid^4.5.1
  • flutter_test开发依赖{"sdk":"flutter"}
  • flutter_lints开发依赖^5.0.0

如何选择适合项目的代码仓?

先按使用场景筛选,再比较项目活跃情况,最后到原始仓库核对使用要求。

  1. 通过仓库名、作者或描述搜索,再按技术分类缩小范围。
  2. 结合星标、复刻与最近推送比较项目;星标反映社区关注,不代表质量保证。
  3. 使用前在 GitHub 核对 README、许可证与 Issues。

来源与维护

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗