Flutter设备安全功能插件security_device的使用

Flutter设备安全功能插件security_device的使用

Utility to check the Device is Security or not.

isSecurityDevice

Quickly confirm that the device is security, just use isSecurityDevice.

isJailbreakOrRoot

Android

检查是否已root,使用 RootBeer

iOS

检查是否已被越狱(JB),使用 IOSSecuritySuite

isDeveloperMode

Android

ADB over USB 是否已启用。

iOS

是否在模拟器中运行。

Getting Started

在你的flutter项目中的 pubspec.yaml 文件中,添加以下依赖:

dependencies:
  ...
  security_device: ^1.2.0

导入它:

import 'package:security_device/security_device.dart';

Using it

Future<void> getSecurityDeviceInfo() async {
  try {
    isSecurityDevice = await SecurityDevice.isSecurityDevice;
    isJailbreakOrRoot = await SecurityDevice.isJailbreakOrRoot;
    isDeveloperMode = await SecurityDevice.isDeveloperMode;
  } catch (error) {
    debugPrint('SecurityDevice catch error:${error.toString()}');
  }
}

示例代码

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

import 'package:security_device/security_device.dart';

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

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

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

class _MyAppState extends State<MyApp> {
  bool? isSecurityDevice;
  bool? isJailbreakOrRoot;
  bool? isDeveloperMode;

  @override
  void initState() {
    super.initState();
    getSecurityDeviceInfo();
  }

  Future<void> getSecurityDeviceInfo() async {
    try {
      isSecurityDevice = await SecurityDevice.isSecurityDevice;
      isJailbreakOrRoot = await SecurityDevice.isJailbreakOrRoot;
      isDeveloperMode = await SecurityDevice.isDeveloperMode;
    } catch (error) {
      debugPrint('SecurityDevice catch error:${error.toString()}');
    }

    if (!mounted) return;
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Security Device Info'),
        ),
        body: Center(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              Text(
                'isSecurityDevice: $isSecurityDevice',
                style: TextStyle(
                  fontSize: 20,
                  fontWeight: FontWeight.w600,
                  color: isSecurityDevice == false ? Colors.red : Colors.black,
                ),
              ),
              const SizedBox(height: 50),
              Text(
                'isJailbreakOrRoot: $isJailbreakOrRoot',
                style: TextStyle(
                  fontSize: 20,
                  color: isJailbreakOrRoot == true ? Colors.red : Colors.black,
                ),
              ),
              const SizedBox(height: 10),
              Text(
                'isDeveloperMode: $isDeveloperMode',
                style: TextStyle(
                  fontSize: 20,
                  color: isDeveloperMode == true ? Colors.red : Colors.black,
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter设备安全功能插件security_device的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter设备安全功能插件security_device的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用security_device插件的示例代码。security_device插件允许你访问设备的硬件安全功能,比如生物识别认证(指纹、面部识别)等。需要注意的是,这个插件可能不包含所有设备安全功能的实现,具体功能取决于插件的版本和设备支持情况。

首先,你需要在pubspec.yaml文件中添加security_device依赖:

dependencies:
  flutter:
    sdk: flutter
  security_device: ^最新版本号  # 请替换为实际可用的最新版本号

然后运行flutter pub get来获取依赖。

接下来,在你的Flutter项目中,你可以使用以下代码来演示如何使用security_device插件进行生物识别认证:

import 'package:flutter/material.dart';
import 'package:security_device/security_device.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Security Device Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _authResult = '未认证';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Security Device Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              '认证结果: $_authResult',
              style: TextStyle(fontSize: 20),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _authenticate,
              child: Text('生物识别认证'),
            ),
          ],
        ),
      ),
    );
  }

  Future<void> _authenticate() async {
    try {
      // 检查设备是否支持生物识别
      bool canAuthenticate = await SecurityDevice.hasBiometric;
      if (!canAuthenticate) {
        setState(() {
          _authResult = '设备不支持生物识别';
        });
        return;
      }

      // 请求生物识别认证
      bool authenticated = await SecurityDevice.authenticate(
        localizedReason: '请通过生物识别进行认证',
        stickyAuth: false,
      );

      setState(() {
        _authResult = authenticated ? '认证成功' : '认证失败';
      });
    } catch (e) {
      // 处理异常,例如用户取消认证
      setState(() {
        _authResult = '认证出错: ${e.message}';
      });
    }
  }
}

在这个示例中,我们做了以下几件事:

  1. pubspec.yaml中添加security_device依赖。
  2. 创建一个简单的Flutter应用,包含一个按钮用于触发生物识别认证。
  3. 使用SecurityDevice.hasBiometric检查设备是否支持生物识别。
  4. 使用SecurityDevice.authenticate方法请求生物识别认证,并处理认证结果。

请注意,实际使用中你可能需要处理更多的边缘情况和异常,比如用户取消认证、多次认证失败等。此外,根据插件的更新和设备的变化,API的使用可能会有所不同,请参考最新的security_device插件文档获取更多信息。

回到顶部