Flutter功能扩展插件finpong_plus的使用

Flutter功能扩展插件finpong_plus的使用

1. 事前准备

1.1 在pubspec.yaml中添加

确保在项目的pubspec.yaml文件中添加finpong_plus插件。

dependencies:
  finpong_plus: ^x.y.z

或者通过终端命令安装:

$ flutter pub add finpong_plus

1.2 注册应用Schema

为了在认证完成后返回到您的应用,需要在不同的操作系统上注册应用的Schema。

Android - 在AndroidManifest.xml中设置

MainActivity<activity>标签内添加以下内容:

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:scheme="your-app-scheme"/>
</intent-filter>

iOS - 在info.plist中设置

CFBundleURLTypes中添加您的应用Schema,并在LSApplicationQueriesSchemes中添加认证应用的Schema:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>com.finpong.finpongPlusExample</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>your-app-scheme</string>
        </array>
    </dict>
</array>

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>naversearchthirdlogin</string>
    <string>supertoss</string>
    <string>finpongapp</string>
    <string>tauthlink</string>
    <string>ktauthexternalcall</string>
    <string>upluscorporation</string>
    <string>kakaotalk</string>
</array>

2. 运行FinpongPlus

2.1 在应用中添加FinpongPlusWidget

首先,确保您已经获得了有效的token。然后,在应用中添加FinpongPlusWidget

import 'package:finpong_plus/finpong_plus.dart';

FinpongPlusWidget(
  token: 'eyJ0e...QINWU',
  finpongPlusController: finpongPlusController,
  entry: '1',
  serverMode: ServerMode.staging,
  backgorundColor: Colors.white,
  onUriScheme: (type, scheme) {
    /**
     * 该函数用于处理应用Schema调用。
     * 如果应用已安装,则启动应用Schema。
     * 如果未安装,则引导用户到应用商店下载。
     */
    canLaunchUrl(Uri.parse(scheme)).then((bool result) {
      setState(() async {
        if (result) {
          if (!await launchUrl(Uri.parse(scheme), mode: LaunchMode.externalApplication)) {
            throw Exception('Could not launch $scheme');
          }
        } else {
          !await launchUrl(
            Uri.parse('type별 스토어 url'),
            mode: LaunchMode.externalApplication,
          );
        }
      });
    });
  },
  onCustomAction: (pageId, params) {
    // 处理预定义的FinpongPlus动作
    switch(pageId){
      case 'ACT1000':
        // 处理ACT1000动作
        break;
      case 'ACT2000':
        // 处理ACT2000动作
        break;
      ...
    }
  },
  onCloseAction: () {
    // 当FinpongPlus关闭时触发
    Navigator.pop(context);
  },
  onPageLoadStarted: () {
    // 页面加载开始时触发
  },
  onPageLoadFinished: () {
    // 页面加载完成时触发
    isLoading.value = false;
  },
)

2.2 entry参数说明

entry参数用于指定初始页面。具体值及其对应的页面如下:

entry 进入页面 示例
“0” 默认页面 保险主页
“1” 自定义页面 数据连接管理页

2.3 serverMode参数说明

serverMode参数用于指定服务器模式。可选值包括stagingrelease

模式 含义 URL
staging 开发环境 tapi.finpong.com
release 生产环境 api.finpong.com

3. 调用私钥证书

根据不同的平台和认证机构,需要传递相应的类型和包名或应用ID。

3.1 添加onUriScheme处理

onUriScheme中编写代码以处理私钥证书的调用。

onUriScheme: (type, scheme) {
  /**
   * 该函数用于处理应用Schema调用。
   * 如果应用已安装,则启动应用Schema。
   * 如果未安装,则引导用户到应用商店下载。
   */
  canLaunchUrl(Uri.parse(scheme)).then((bool result) {
    setState(() async {
      if (result) {
        if (!await launchUrl(Uri.parse(scheme), mode: LaunchMode.externalApplication)) {
          throw Exception('Could not launch $scheme');
        }
      } else {
        !await launchUrl(
          Uri.parse('type별 스토어 url'),
          mode: LaunchMode.externalApplication,
        );
      }
    });
  });
}

4. FinpongPlus与应用通信

4.1 添加自定义操作处理

onCustomAction中处理预定义的FinpongPlus动作。

onCustomAction: (pageId, params) {
  // 处理预定义的FinpongPlus动作
  switch(pageId){
    case 'ACT1000':
      // 处理ACT1000动作
      break;
    case 'ACT2000':
      // 处理ACT2000动作
      break;
    ...
  }
},

4.2 调用FinpongPlus脚本

创建并使用FinpongPlusController来运行JavaScript。

FinpongPlusController finpongPlusController = FinpongPlusController();

var testData = {"data1": 1, "data2": true};
String jsonString = jsonEncode(testData);

finpongPlusController.runJavaScript('scriptName', jsonString);

4.3 文件下载与上传

处理文件下载和上传的过程如下:

  1. onCustomActionpageIdPA-001时,调用客户自定义的上传弹窗。
  2. 用户选择同意后,调用fileDataConnect函数传递数据。
var testData = {
  isUpload:false,     // 是否上传
  uploadRes:'',
  uploadMsg:'',
  isAgree : 'Y'       // 是否同意
};

String jsonString = jsonEncode(testData);

finpongPlusController.runJavaScript('fileDataConnect', jsonString);
  1. 下载数据后,进行上传处理并调用fileDataConnect函数传递结果。
var testData = {
  isUpload:true,     // 是否上传
  uploadRes:'success',      // 上传状态
  uploadMsg:'上传成功',  // 上传消息
  isAgree : 'Y'
};

String jsonString = jsonEncode(testData);

finpongPlusController.runJavaScript('fileDataConnect', jsonString);

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

1 回复

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


finpong_plus 是一个 Flutter 插件,主要用于扩展 Flutter 应用的功能。它可能提供了一系列工具、功能或其他增强功能,以便开发者能够更轻松地构建应用程序。具体功能取决于插件的实现和设计目的。以下是如何在 Flutter 项目中使用 finpong_plus 插件的一般步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  finpong_plus: ^1.0.0  # 使用最新版本号

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

2. 导入插件

在需要使用 finpong_plus 的 Dart 文件中,导入插件:

import 'package:finpong_plus/finpong_plus.dart';

3. 初始化插件

在某些情况下,插件可能需要初始化。你可以在应用的 main 函数或 initState 方法中进行初始化:

void main() {
  FinpongPlus.initialize();  // 假设插件有一个初始化方法
  runApp(MyApp());
}

4. 使用插件功能

根据插件的具体功能,你可以调用其提供的 API。例如,如果 finpong_plus 提供了一个工具来显示 Toast 消息,你可以这样使用:

FinpongPlus.showToast(message: "Hello, Flutter!");  // 示例用法

如果插件提供了其他功能,如网络请求、本地存储、UI 组件等,你可以根据文档或源码调用相应的方法。

5. 处理回调或事件

如果插件支持事件或回调,你需要注册监听器来处理这些事件:

FinpongPlus.onEvent.listen((event) {
  print("Received event: $event");
});

6. 配置插件

有些插件可能需要额外的配置,例如配置 API 密钥、设置参数等。你可以在 main 函数或应用启动时进行配置:

FinpongPlus.configure(apiKey: "your_api_key");

7. 处理错误

确保在使用插件时处理可能的错误或异常:

try {
  FinpongPlus.someFunction();
} catch (e) {
  print("Error occurred: $e");
}

8. 查看文档

如果 finpong_plus 有官方文档或示例项目,建议详细阅读文档以了解其所有功能和使用方法。

9. 测试和调试

在开发过程中,使用插件时应进行充分的测试,以确保其功能符合预期。如果遇到问题,可以通过日志或调试工具进行排查。

10. 更新和升级

定期检查插件的更新,获取新功能和修复的 bug:

flutter pub upgrade
回到顶部