Flutter用户引导插件at_onboarding_flutter的使用

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

Flutter用户引导插件 at_onboarding_flutter 的使用

at_onboarding_flutter 是一个用于管理 atSign 认证的Flutter插件。它简化了用户在应用程序中的引导流程,并提供了安全的密钥管理功能。本文将详细介绍如何在Flutter项目中使用这个插件。

概述

at_onboarding_flutter 包处理 atSign 的安全密钥管理,作为用户名和密码的加密替代方案。此开源包用 Dart 编写,支持 Flutter,并遵循 atPlatform 的去中心化边缘计算模型。

主要功能

  • 简化 atSign 认证实现。
  • 生成并支持免费 atSign。
  • 支持多个 atSign 注册。
  • 提供 QRCode 或 Atkey 文件配对 atSign 的灵活性。
  • 提供重置/注销按钮。

开始使用

有几种方法可以开始使用这个包:

1. 从 GitHub 克隆

可以从 GitHub 仓库 克隆源代码。示例代码展示了 atSign 的注册流程。

git clone https://github.com/atsign-foundation/at_widgets

2. 手动添加到项目

可以在 pub.dev 上找到手动添加此包的说明。

设置

Android

AndroidManifest.xml 中添加以下权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.camera.flash" />

app/build.gradle 中设置 Android 版本支持:

compileSdkVersion 32

minSdkVersion 24
targetSdkVersion 29

iOS

info.plist 中添加以下权限字符串:

<key>NSCameraUsageDescription</key>
<string>The camera is used to scan QR code to pair your device with your atSign</string>

Podfile 中更新以下行:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    target.build_configurations.each do |config|
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
        '$(inherited)',
        'PERMISSION_EVENTS=0',
        'PERMISSION_REMINDERS=0',
        'PERMISSION_CONTACTS=0',
        'PERMISSION_MICROPHONE=0',
        'PERMISSION_SPEECH_RECOGNIZER=0',
        'PERMISSION_LOCATION=0',
        'PERMISSION_NOTIFICATIONS=0',
        'PERMISSION_SENSORS=0'
      ]
    end
  end
end

macOS

DebugProfile.entitlementsRelease.entitlements 中添加以下键:

<key>com.apple.security.files.downloads.read-write</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>

使用示例

以下是使用 at_onboarding_flutter 的完整示例代码:

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

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

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

class HomeScreen extends StatelessWidget {
  final AtClientPreference atClientPreference = AtClientPreference();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('At Onboarding Example'),
      ),
      body: Center(
        child: TextButton(
          onPressed: () async {
            final result = await AtOnboarding.onboard(
              context: context,
              config: AtOnboardingConfig(
                atClientPreference: atClientPreference,
                domain: 'root.atsign.org', // Replace with your domain if needed
                rootEnvironment: 'production', // Or 'staging' depending on your setup
                appAPIKey: 'your_api_key_here', // Replace with your actual API key
              ),
            );

            switch (result.status) {
              case AtOnboardingResultStatus.success:
                final atsign = result.atsign;
                // Handle successful onboard
                print('Successfully onboarded: $atsign');
                break;
              case AtOnboardingResultStatus.error:
                // Handle error during onboard
                print('Error during onboard');
                break;
              case AtOnboardingResultStatus.cancel:
                // Handle user cancellation
                print('User canceled onboard');
                break;
            }
          },
          child: Text('Onboard my atSign'),
        ),
      ),
    );
  }
}

参数说明

参数 描述
domain 连接到的域名,默认为 root.atsign.org
atClientPreference 继续进行注册所需的 atClient 偏好设置。
rootEnvironment 环境设置,如 productionstaging
appAPIKey 获取免费 atSign 的 API 密钥。
isSwitchingAtsign 是否切换 atSign,布尔值,默认为 false。
atsign 切换主 atSign 时使用的名称,默认为 null。

语言本地化

at_onboarding_flutter 包已经支持英语和法语两种语言。可以通过设置 MaterialApp 类中的 locale 属性来提供自定义的语言值。

示例应用

GitHub 上可以找到完整的示例应用,展示关键功能。

通过这些步骤,您应该能够成功集成 at_onboarding_flutter 插件到您的 Flutter 应用中,并为用户提供无缝的引导体验。


更多关于Flutter用户引导插件at_onboarding_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter用户引导插件at_onboarding_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用at_onboarding_flutter插件的示例代码。这个插件通常用于在应用启动时展示用户引导页面。

首先,确保你已经在pubspec.yaml文件中添加了at_onboarding_flutter依赖:

dependencies:
  flutter:
    sdk: flutter
  at_onboarding_flutter: ^最新版本号  # 请替换为最新的版本号

然后运行flutter pub get来安装依赖。

接下来,你可以在你的Flutter应用中按照以下步骤使用at_onboarding_flutter插件。

示例代码

  1. 导入必要的包
import 'package:flutter/material.dart';
import 'package:at_onboarding_flutter/at_onboarding_flutter.dart';
  1. 定义引导页面内容
List<OnboardingPage> onboardingPages = [
  OnboardingPage(
    title: "欢迎",
    description: "欢迎使用我们的应用!",
    imageAssetPath: "assets/images/welcome.png",  // 替换为你的图片路径
  ),
  OnboardingPage(
    title: "功能介绍",
    description: "这里可以展示你的应用主要功能。",
    imageAssetPath: "assets/images/features.png",  // 替换为你的图片路径
  ),
  OnboardingPage(
    title: "开始使用",
    description: "点击下面的按钮开始使用吧!",
    imageAssetPath: "assets/images/start.png",  // 替换为你的图片路径
    bottomWidget: ElevatedButton(
      onPressed: () {
        // 用户点击按钮后的操作,比如导航到主页面
        Navigator.pushReplacementNamed(context, '/');
      },
      child: Text("开始"),
    ),
  ),
];
  1. 在应用的根部或合适的位置使用OnboardingScreen
void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: OnboardingScreen(
          onboardingPagesList: onboardingPages,
          showSkipButton: true,
          skipText: "跳过",
          nextText: "下一步",
          doneText: "完成",
          onSkipPress: () {
            // 用户点击跳过按钮后的操作,比如导航到主页面
            Navigator.pushReplacementNamed(context, '/');
          },
          onDonePress: () {
            // 用户完成所有引导页面后的操作,比如导航到主页面
            Navigator.pushReplacementNamed(context, '/');
          },
        ),
      ),
      routes: {
        '/': (context) => HomeScreen(),  // 定义你的主页面路由
      },
    );
  }
}

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text("欢迎来到主页面!"),
    );
  }
}

注意事项

  • 确保你在assets文件夹中有相应的图片资源,并在pubspec.yaml中正确声明这些资源。
  • 根据你的应用需求,调整引导页面的内容和布局。
  • OnboardingScreen的参数可以根据你的需求进行自定义,比如是否显示跳过按钮、按钮文本等。

通过上述代码,你就可以在Flutter应用中集成并使用at_onboarding_flutter插件来展示用户引导页面了。

回到顶部