Flutter注册或入学管理插件enroll_plugin的使用

Flutter注册或入学管理插件enroll_plugin的使用

我们的内部开发的eNROLL平台是一个技术合规解决方案。该方案在全球人口众多且身份伪造、签名欺诈和网络钓鱼现象普遍的国家得到广泛应用。

软件利用了一套基于AI的技术,如光学字符识别(OCR),以减少人为错误和识别所需的时间。

应用截图 应用截图 应用截图

要求

  • 最低 Flutter 版本 3.3.4
  • Android minSdkVersion 24
  • Kotlin 版本 1.9.0

安装

  1. 运行以下命令:
$ flutter pub add enroll_plugin

这将在你的包的 pubspec.yaml 文件中添加如下内容(并运行隐式的 flutter pub get):

dependencies:
  enroll_plugin: ^latest_version

2.1. Android

  • Build.gradle 文件中添加以下行:
maven { url 'https://jitpack.io' }
maven { url = uri("https://maven.innovatrics.com/releases") }
  • minSdkVersion 升级到 24,在 app/build.gradle 中。

  • settings.gradle 文件中添加以下行:

buildscript {
    repositories {
        mavenCentral()
        maven {
            url = uri("https://storage.googleapis.com/r8-releases/raw")
        }
    }
    dependencies {
        classpath("com.android.tools:r8:8.2.24")
    }
}

2.2. iOS

  • 在项目 info.plist 文件中添加以下内容:
<key>NSCameraUsageDescription</key>
<string>"您的用户消息"</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>"您的用户消息"</string>
<key>NSAppTransportSecurity</key>
  <dict>
      <key>NSAllowsArbitraryLoads</key>
      <true/>
  </dict>
  • 在 iOS 项目的 Podfile 中添加以下两个源:
source 'https://github.com/innovatrics/innovatrics-podspecs'
source 'https://github.com/CocoaPods/Specs.git'

2.3. 添加许可证文件到项目

  • 对于 Android:
应用截图
  • 对于 iOS:
应用截图

ℹ️ 确保你的 iOS 项目包含许可证文件,或者:

  • 打开 iOS 项目
  • 拖放许可证文件到项目的根目录
  • 确保选中“复制项目中所需的项”复选框
  • 然后完成

2.4. 运行命令行

flutter pub get

导入

import 'package:enroll_plugin/enroll_plugin.dart';

使用

创建一个 widget 并在构建函数中返回 EnrollPlugin 小部件:

return EnrollPlugin(
  mainScreenContext: context,
  tenantId: 'TENANT_ID',
  tenantSecret: 'TENANT_SECRET',
  enrollMode: EnrollMode.auth,
  enrollEnvironment: EnrollEnvironment.staging,
  localizationCode: EnrollLocalizations.en,
  onSuccess: (applicantId) {
    // 延迟状态更改直到构建完成
    WidgetsBinding.instance.addPostFrameCallback((_) {
      debugPrint("success: $applicantId");
    });
  },
  onError: (error) {
    // 延迟状态更改直到构建完成
    WidgetsBinding.instance.addPostFrameCallback((_) {
      debugPrint("Error: ${error.toString()}");
    });
  },
  onGettingRequestId: (requestId) {
    // 延迟状态更改直到构建完成
    WidgetsBinding.instance.addPostFrameCallback((_) {
      debugPrint("requestId:: $requestId");
    });
  },
  applicationId: 'APPLICATION_ID',
  skipTutorial: false,
  levelOfTrust: 'LEVEL_OF_TRUST_TOKEN',
  googleApiKey: 'GOOGLE_API_KEY',
  correlationId: 'correlationId',
);

参数描述

tenantId 必填。输入组织租户ID
tenantSecret 必填。输入组织租户密钥
enrollMode 必填。SDK模式
environment 必填。选择环境:EnrollEnvironment.STAGING 用于测试,EnrollEnvironment.PRODUCTION 用于生产
enrollCallback 必填。接收成功和错误响应的回调函数
localizationCode 必填。选择语言代码:LocalizationCode.EN 英文,LocalizationCode.AR 阿拉伯语。默认值为英文
googleApiKey 可选。Google API密钥,用于查看用户当前位置
applicantId 可选。输入申请ID
levelOfTrust 可选。输入组织信任级别
skipTutorial 可选。是否跳过教程
appColors 可选。覆盖应用颜色集合,如(主色 - 辅助色 - 背景色 - 成功色 - 警告色 - 错误色 - 文本色)
correlationId 可选。关联ID,用于将用户ID与请求ID连接

完整示例代码

import 'package:enroll_plugin/enroll_plugin.dart';
import 'package:flutter/material.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> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Builder(builder: (context) {
        return Scaffold(
          body: EnrollPlugin(
            mainScreenContext: context,
            tenantId: 'TENANT_ID',
            tenantSecret: 'TENANT_SECRET',
            enrollMode: EnrollMode.onboarding,
            enrollEnvironment: EnrollEnvironment.staging,
            onSuccess: (applicantId) {
              WidgetsBinding.instance.addPostFrameCallback((_) {
                debugPrint("success: $applicantId");
              });
            },
            onError: (error) {
              WidgetsBinding.instance.addPostFrameCallback((_) {
                debugPrint("Error: ${error.toString()}");
              });
            },
            onGettingRequestId: (requestId) {
              WidgetsBinding.instance.addPostFrameCallback((_) {
                debugPrint("requestId:: $requestId");
              });
            },
            localizationCode: EnrollLocalizations.en,
            applicationId: 'APPLICATION_ID',
            skipTutorial: false,
            levelOfTrust: 'LEVEL_OF_TRUST_TOKEN',
            googleApiKey: 'GOOGLE_API_KEY',
            correlationId: 'correlationIdTest',
          ),
        );
      }),
    );
  }
}

更多关于Flutter注册或入学管理插件enroll_plugin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter注册或入学管理插件enroll_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中集成和使用enroll_plugin(假设这是一个假想的插件,用于注册或入学管理)的示例代码。请注意,由于enroll_plugin是一个假想的插件,具体的方法和类名需要根据你的实际插件文档进行调整。

1. 添加插件依赖

首先,在你的pubspec.yaml文件中添加enroll_plugin依赖:

dependencies:
  flutter:
    sdk: flutter
  enroll_plugin: ^1.0.0  # 假设插件的版本是1.0.0

然后运行flutter pub get来安装插件。

2. 导入插件

在你的Dart文件中导入插件:

import 'package:enroll_plugin/enroll_plugin.dart';

3. 初始化插件

通常在应用启动时初始化插件,比如在MainActivity.kt(Android)或AppDelegate.swift(iOS)中进行配置(这取决于插件是否需要原生代码初始化)。但大多数情况下,Flutter插件会自动处理这些步骤。你可以在Flutter代码中进行基本的初始化。

4. 使用插件功能

以下是一个示例,展示如何使用enroll_plugin进行注册或入学管理。假设插件提供了registerStudentenrollStudent方法。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Enrollment Management',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: EnrollmentScreen(),
    );
  }
}

class EnrollmentScreen extends StatefulWidget {
  @override
  _EnrollmentScreenState createState() => _EnrollmentScreenState();
}

class _EnrollmentScreenState extends State<EnrollmentScreen> {
  final EnrollPlugin _enrollPlugin = EnrollPlugin();

  String _result = '';

  void _registerStudent() async {
    String studentId = 'S12345';
    String name = 'John Doe';
    String email = 'john.doe@example.com';

    try {
      bool success = await _enrollPlugin.registerStudent(studentId, name, email);
      if (success) {
        setState(() {
          _result = 'Student registered successfully!';
        });
      } else {
        setState(() {
          _result = 'Failed to register student.';
        });
      }
    } catch (e) {
      setState(() {
        _result = 'Error: ${e.message}';
      });
    }
  }

  void _enrollStudent() async {
    String studentId = 'S12345';
    String courseId = 'C67890';

    try {
      bool success = await _enrollPlugin.enrollStudent(studentId, courseId);
      if (success) {
        setState(() {
          _result = 'Student enrolled successfully!';
        });
      } else {
        setState(() {
          _result = 'Failed to enroll student.';
        });
      }
    } catch (e) {
      setState(() {
        _result = 'Error: ${e.message}';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Enrollment Management'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: <Widget>[
            Button(
              child: Text('Register Student'),
              onPressed: _registerStudent,
            ),
            SizedBox(height: 20),
            Button(
              child: Text('Enroll Student'),
              onPressed: _enrollStudent,
            ),
            SizedBox(height: 20),
            Text(_result),
          ],
        ),
      ),
    );
  }
}

// Note: The Button widget is a custom widget here. You can use ElevatedButton from Material library.
class Button extends StatelessWidget {
  final String text;
  final VoidCallback onPressed;

  Button({required this.text, required this.onPressed});

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: onPressed,
      child: Text(text),
    );
  }
}

注意事项

  1. 插件方法:确保EnrollPlugin类中的registerStudentenrollStudent方法存在,并且参数类型正确。
  2. 错误处理:在实际应用中,你可能需要更详细的错误处理逻辑。
  3. UI调整:根据实际需求调整UI组件和布局。

以上代码只是一个示例,实际使用时需要根据enroll_plugin的API文档进行调整。

回到顶部