Flutter未知功能插件onyx_plugin的使用(由于介绍为undefined,故功能需实际探索或查阅官方文档)

发布于 1周前 作者 eggper 来自 Flutter

Flutter未知功能插件onyx_plugin的使用(由于介绍为undefined,故功能需实际探索或查阅官方文档)

Onyx Flutter Package

这不是免费软件。该插件使用了Onyx的Android和iOS软件开发工具包(SDK)。它需要与以下公司签订许可协议: Diamond Fortress Technologies, Inc.


包需求

示例项目

在运行示例项目之前,请确保您的local.properties文件包含正确的flutter.sdk路径和sdk.dir指向正确的Flutter和Android SDK位置。

sdk.dir=/Users/davidbuggay/Library/Android/sdk
flutter.sdk=/Users/davidbuggay/Workspace/flutter
onyx_plugin.dir=../../android

示例项目还使用了一个.env文件来保存许可证密钥,而不是硬编码。 如果您还没有许可证密钥,可以从Telos获得。

如果您是第一次运行flutter项目,可能需要执行flutter pub get

要运行示例项目,请运行Example/lib/main.dart。样本应用程序将加载一个屏幕,显示所有Onyx相机设置,并提供根据初始屏幕上的任何设置启动Onyx相机的功能。

Onyx 控制

OnyxCamera类的选项包含所有Onyx相机选项,包括许可证密钥。有关配置选项的完整列表,请参阅文档

一旦设置了这些设置,只需调用OnyxCamera.configureOnyx()即可设置Onyx配置。

监听OnyxCamera状态的变化以确定Onyx包何时已配置(state=configured),何时返回结果(state=success),或者是否出现错误(state=error)。 可以分别配置和启动Onyx,但此示例项目将在Onyx配置后立即启动。

这里是一个基本实现,用于开始使用:

OnyxCamera.state.addListener(() {
   if (OnyxCamera.state.status == OnyxStatuses.configured) {
       // 在配置后启动Onyx
       OnyxCamera.startOnyx();
   }
   if (OnyxCamera.state.isError) {
       // 处理任何Onyx相关的错误。错误消息存储在OnyxCamera.state.resultMessage变量中。
   }
   if (OnyxCamera.state.status == OnyxStatuses.success) {
       // 当Onyx相机返回结果时执行某些操作。OnyxCamera.Results 持有Onyx结果。
   }
});

// 设置许可证密钥
OnyxCamera.options.licenseKey = "xxxx";
// 启动Onyx相机。
OnyxCamera.configureOnyx();

Android 设置

支持的最低Android版本为24。有关安装插件的更多详细信息,请访问pub.dev

在您的应用的android/app/build.gradle文件中添加Onyx原生包的仓库和依赖项引用。

android {
    lintOptions {
        disable 'InvalidPackage'
    }
}
repositories {
  maven {
    url 'https://gitlab.com/api/v4/projects/29462567/packages/maven'
  }
}
dependencies {
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    implementation 'com.google.android.gms:play-services-base:17.6.0'
    implementation 'com.dft.android:onyx-camera:8.3.6'
}

该插件还需要写入外部存储的权限,因此在应用的AndroidManifest.xml文件中,确保添加以下行:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>

iOS 设置

Onyx必须在设备上运行,不能在模拟器上运行!

添加OnyxCamera规格库到CocoaPods安装

pod repo add gitlab-telosid-plugins https://gitlab.com/telosid/plugins/specs.git
pod install --repo-udpate

将Gitlab源规格库添加到Podfile

source 'https://gitlab.com/telosid/plugins/specs.git'
source 'https://cdn.cocoapods.org'

设置iOS版本为11

platform :ios, '11.0'

调整iOS项目属性从Xcode

禁用Bitcode

  1. 选择根目录并转到Build Settings
  2. 搜索bitcode
  3. Enable Bitcode设置为No

调整其他链接器标志

在Xcode项目的构建设置中的其他链接器标志中添加以下标志:

-Xlinker
-ld_classic

调整应用权限

打开项目的Info.plist文件,在<dict>元素底部粘贴以下行:

<key>NSCameraUsageDescription</key>
<string>Capture fingerprint image</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Save Onyx Image Results</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Save Pictures</string>

在iOS/Runner/AppDelegate文件中添加导航控制器

#import "AppDelegate.h"
#import "GeneratedPluginRegistrant.h"
#import "OnyxPlugin.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [GeneratedPluginRegistrant registerWithRegistry:self];
    // 新代码
    FlutterViewController *flutterViewController =(FlutterViewController*)self.window.rootViewController;
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:flutterViewController];
    [navigationController setNavigationBarHidden:YES];    
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.rootViewController = navigationController;
    [self.window makeKeyAndVisible];
    OnyxPlugin.flutterViewController=flutterViewController;
    
  // 自定义点,应用程序启动后
  return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
@end

发布onyx_plugin

确保在pubspec.yaml文件、ios/onyx_plugin.podspec文件以及必要的iOS和Android ONYX SDK版本中更新版本号。

首先执行发布预演:

flutter pub publish --dry-run

如果预演成功,则可以发布插件:

flutter pub publish

更多关于Flutter未知功能插件onyx_plugin的使用(由于介绍为undefined,故功能需实际探索或查阅官方文档)的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter未知功能插件onyx_plugin的使用(由于介绍为undefined,故功能需实际探索或查阅官方文档)的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在探索一个未明确定义的Flutter插件(如onyx_plugin)时,最好的做法是直接查阅官方文档(如果可用)或者查看插件的源代码来理解其功能和使用方法。由于我们无法直接访问实际的官方文档或源代码,我将提供一个通用的方法,展示如何在Flutter项目中集成和使用一个插件,并尝试调用其基本功能。

以下是一个基本的步骤和代码示例,用于集成和使用一个假设的onyx_plugin插件:

  1. pubspec.yaml中添加依赖

    首先,你需要在pubspec.yaml文件中添加onyx_plugin作为依赖。请注意,由于我们不知道实际的插件版本,这里使用了一个占位符版本号^x.x.x。你应该替换为实际的版本号。

    dependencies:
      flutter:
        sdk: flutter
      onyx_plugin: ^x.x.x  # 替换为实际版本号
    
  2. 运行flutter pub get

    保存pubspec.yaml文件后,在终端中运行flutter pub get来安装依赖。

  3. 导入插件并在代码中使用

    在你的Dart文件中导入onyx_plugin,并尝试调用其可能的方法。由于我们不知道具体的API,这里将提供一个假设性的示例。

    import 'package:flutter/material.dart';
    import 'package:onyx_plugin/onyx_plugin.dart'; // 假设的导入路径
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Text('Onyx Plugin Example'),
            ),
            body: Center(
              child: OnyxPluginExample(),
            ),
          ),
        );
      }
    }
    
    class OnyxPluginExample extends StatefulWidget {
      @override
      _OnyxPluginExampleState createState() => _OnyxPluginExampleState();
    }
    
    class _OnyxPluginExampleState extends State<OnyxPluginExample> {
      String pluginResponse = '';
    
      @override
      void initState() {
        super.initState();
        // 假设有一个初始化或调用插件功能的方法
        _initializeOnyxPlugin();
      }
    
      Future<void> _initializeOnyxPlugin() async {
        try {
          // 假设插件有一个名为initialize的方法
          bool isInitialized = await OnyxPlugin.initialize(); // 替换为实际方法名
          setState(() {
            pluginResponse = isInitialized ? 'Plugin initialized successfully!' : 'Failed to initialize plugin.';
          });
        } catch (e) {
          setState(() {
            pluginResponse = 'Error initializing plugin: $e';
          });
        }
      }
    
      @override
      Widget build(BuildContext context) {
        return Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Onyx Plugin Response:'),
            Text(pluginResponse),
          ],
        );
      }
    }
    

    在上面的代码中,我们创建了一个简单的Flutter应用,其中包含一个OnyxPluginExample小部件,该小部件在初始化时尝试调用OnyxPlugin.initialize()方法(这只是一个假设的方法名)。根据插件的实际功能,你可能需要替换或添加其他方法调用。

  4. 查阅官方文档或源代码

    由于我们不知道onyx_plugin的具体功能,强烈建议查阅官方文档或源代码来了解其API和用法。通常,插件的GitHub仓库或pub.dev页面会有详细的文档和示例代码。

  5. 调试和测试

    在集成插件后,使用Flutter的开发工具(如调试器、日志输出等)来测试和调试插件的功能。

请注意,由于onyx_plugin的具体功能和API未知,上述代码仅提供了一个假设性的集成和使用示例。在实际应用中,你需要根据插件的官方文档或源代码来调整代码。

回到顶部