插件介绍

fluttertpc_dart_packages 是由 ABOUT YOU 维护的一系列 Flutter 包集合,提供了多种实用功能,可以帮助开发者更高效地构建跨平台应用程序。该仓库已经适配了 HarmonyOS 平台,允许开发者在鸿蒙应用中轻松使用这些功能强大的插件。

目前仓库中包含以下几个主要包:

  1. sign_in_with_apple(Flutter Favorite):提供 Apple ID 登录功能,支持从用户钥匙串中检索凭据
  2. pending_operations:用于管理挂起操作的工具包
  3. state_queue:状态管理解决方案
  4. state_queue_test:state_queue 的测试工具
  5. with_bloc:BLoC 模式的辅助工具

在这些包中,sign_in_with_apple 是最成熟和广泛使用的一个,它已获得 Flutter Favorite 认证,提供了完整的 Apple ID 登录功能支持。

安装与配置

1. 添加依赖

由于这是适配 HarmonyOS 的自定义修改版本,需要通过 Git 形式引入依赖。以下是各包的引入方式:

sign_in_with_apple
dependencies:
  flutter:
    sdk: flutter
  sign_in_with_apple:
    git:
      url: https://gitcode.com/openharmony-tpc/flutter_packages.git
      path: packages/sign_in_with_apple
pending_operations
dependencies:
  flutter:
    sdk: flutter
  pending_operations:
    git:
      url: https://gitcode.com/openharmony-tpc/flutter_packages.git
      path: packages/pending_operations
state_queue
dependencies:
  flutter:
    sdk: flutter
  state_queue:
    git:
      url: https://gitcode.com/openharmony-tpc/flutter_packages.git
      path: packages/state_queue

然后执行以下命令获取依赖:

flutter pub get

2. 配置权限(以 sign_in_with_apple 为例)

在 HarmonyOS 平台上使用 Apple 登录功能,需要进行一些额外配置:

2.1 Apple 开发者账号配置

在使用 sign_in_with_apple 包之前,您需要拥有一个付费的 Apple Developer Program 会员账号,并完成以下配置:

  1. 注册一个 App ID 并启用 “Sign in with Apple” 功能
  2. 创建一个 Service ID(用于 Web 和 Android 集成)
  3. 创建一个认证密钥用于与 Apple 服务器通信

详细的配置步骤请参考 Apple 开发者文档。

2.2 HarmonyOS 项目配置

在 HarmonyOS 项目中,您需要在 entry/src/main/module.json5 文件中添加必要的配置:

{
  "module": {
    "abilities": [
      {
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ]
  }
}

API 使用示例

1. sign_in_with_apple 使用示例

sign_in_with_apple 包提供了简单易用的 API,用于实现 Apple ID 登录功能:

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

class AppleSignInExample extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: SignInWithAppleButton(
          onPressed: () async {
            try {
              final credential = await SignInWithApple.getAppleIDCredential(
                scopes: [
                  AppleIDAuthorizationScopes.email,
                  AppleIDAuthorizationScopes.fullName,
                ],
              );

              print('Apple ID Credential: $credential');

              // 将 credential.authorizationCode 发送到您的服务器进行验证
              // 验证成功后创建用户会话
              _sendCredentialToServer(credential);
            } catch (e) {
              print('Apple 登录失败: $e');
            }
          },
        ),
      ),
    );
  }

  void _sendCredentialToServer(AuthorizationCredentialAppleID credential) {
    // 实现将凭证发送到服务器的逻辑
    // 通常需要发送 credential.authorizationCode 进行验证
    print('发送授权码到服务器: ${credential.authorizationCode}');
  }
}

2. 处理登录流程

完整的 Apple 登录流程包括以下步骤:

  1. 用户点击 Apple 登录按钮
  2. 应用请求 Apple ID 凭证
  3. 用户在 Apple 登录界面输入凭据
  4. 应用接收 Apple ID 凭证
  5. 应用将凭证发送到服务器进行验证
  6. 服务器验证凭证并创建用户会话
  7. 服务器返回会话信息给应用
  8. 应用使用会话信息登录用户

3. pending_operations 使用示例

pending_operations 包用于管理挂起操作:

import 'package:pending_operations/pending_operations.dart';

void main() {
  // 创建一个 PendingOperations 实例
  final pendingOperations = PendingOperations();

  // 启动一个异步操作
  final operation = pendingOperations.startOperation();

  // 执行异步任务
  Future.delayed(Duration(seconds: 2), () {
    // 完成操作
    operation.complete();
    print('操作完成');
  });

  // 等待所有操作完成
  pendingOperations.waitForAll().then((_) {
    print('所有操作都已完成');
  });
}

支持的平台

这些包已经适配了多个平台,包括:

  • iOS
  • macOS
  • Android
  • Web
  • HarmonyOS(自定义适配版本)

在 HarmonyOS 平台上,sign_in_with_apple 包已经过测试,可以正常工作。

注意事项

  1. Apple 开发者账号:使用 sign_in_with_apple 包需要拥有付费的 Apple Developer Program 会员账号

  2. 服务器验证:收到 Apple ID 凭证后,必须在服务器端进行验证,不能仅在客户端验证

  3. 隐私政策:使用 Apple 登录功能时,必须在应用中提供清晰的隐私政策

  4. 用户体验:请确保 Apple 登录按钮的样式和位置符合 Apple 的设计 guidelines

总结

fluttertpc_dart_packages 提供了一系列功能强大的 Flutter 包,可以帮助开发者更高效地构建跨平台应用程序。其中的 sign_in_with_apple 包是一个成熟的 Apple 登录解决方案,已经获得 Flutter Favorite 认证。

在 HarmonyOS 平台上,这些包已经进行了专门适配,开发者可以通过 Git 依赖的方式轻松引入并使用。通过本文的介绍,开发者应该能够快速上手使用这些包,特别是 sign_in_with_apple 包,在鸿蒙应用中实现 Apple ID 登录功能。

使用这些包可以帮助开发者节省大量开发时间,同时确保应用具有良好的用户体验和安全性。如果您正在开发需要 Apple 登录功能的鸿蒙应用,sign_in_with_apple 包将是一个理想的选择。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐