Flutter插件clerk_flutter的使用_Clerk帮助开发者构建用户管理

发布于 1周前 作者 songsunli 最后一次编辑是 5天前 来自 Flutter

Flutter插件clerk_flutter的使用_Clerk帮助开发者构建用户管理

官方 Clerk Flutter SDK (预发布Alpha)

Pub Version Pub Points chat on Discord documentation twitter

⚠️ The Clerk Flutter SDK is in Alpha and not recommended for use in production. ⚠️

❗️ 破坏性变更可能会发生直到第一个稳定版本 (1.0.0) ❗️

Clerk帮助开发者构建用户管理。我们为您的用户提供流畅的用户体验,以便他们可以在您的Flutter代码中注册、登录和管理他们的个人资料。

要求

  • Flutter >= 3.10.0
  • Dart >= 3.0.0

开发中

  • 组织支持

示例用法

要使用此包,您需要访问您的Clerk仪表板创建一个应用并复制公共和发布API密钥到您的项目。

class ExampleApp extends StatefulWidget {
  /// 构造一个Example App实例
  const ExampleApp({
    super.key,
    required this.publishableKey,
  });

  /// 发布密钥
  final String publishableKey;

  [@override](/user/override)
  State<ExampleApp> createState() => _ExampleAppState();
}

class _ExampleAppState extends State<ExampleApp> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: ClerkAuth(
        publishableKey: widget.publishableKey,
        child: Scaffold(
          backgroundColor: ClerkColors.whiteSmoke,
          body: Padding(
            padding: horizontalPadding32,
            child: Center(
              child: ClerkAuthBuilder(
                signedInBuilder: (context, auth) => const ClerkUserButton(),
                signedOutBuilder: (context, auth) =>
                    const ClerkAuthenticationWidget(),
              ),
            ),
          ),
        ),
      ),
    );
  }
}

许可证

该SDK在LICENSE文件中以MIT许可证授权。


示例代码

import 'dart:async';
import 'dart:core';
import 'dart:io';

import 'package:clerk_flutter/clerk_flutter.dart';
import 'package:clerk_flutter/logging.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

Future<void> main() async {
  await setUpLogging(printer: const LogPrinter());

  const publishableKey = String.fromEnvironment('publishable_key');
  if (publishableKey.isEmpty) {
    if (kDebugMode) {
      print(
        '请运行示例程序并设置环境变量: '
        '--dart-define-from-file=example.env',
      );
    }
    exit(1);
  }

  runApp(
    const ExampleApp(
      publishableKey: publishableKey,
    ),
  );
}

/// 示例App
class ExampleApp extends StatelessWidget {
  /// 构造一个Example App实例
  const ExampleApp({
    super.key,
    required this.publishableKey,
  });

  /// 发布密钥
  final String publishableKey;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return ClerkAuth(
      publishableKey: publishableKey,
      child: MaterialApp(
        debugShowCheckedModeBanner: false,
        builder: (BuildContext context, Widget? child) {
          return ClerkErrorListener(child: child!);
        },
        home: Scaffold(
          backgroundColor: ClerkColors.whiteSmoke,
          body: SafeArea(
            child: Padding(
              padding: horizontalPadding32,
              child: Center(
                child: ClerkAuthBuilder(
                  signedInBuilder: (context, auth) => const ClerkUserButton(),
                  signedOutBuilder: (context, auth) {
                    return const ClerkAuthenticationWidget();
                  },
                ),
              ),
            ),
          ),
        ),
      ),
    );
  }
}

/// 日志打印机
class LogPrinter extends Printer {
  /// 构造一个[LogPrinter]实例
  const LogPrinter();

  [@override](/user/override)
  void print(String output) {
    Zone.root.print(output);
  }
}

更多关于Flutter插件clerk_flutter的使用_Clerk帮助开发者构建用户管理的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter插件clerk_flutter的使用_Clerk帮助开发者构建用户管理的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


探索并使用Flutter的未知功能插件clerk_flutter时,了解其API文档和示例代码是至关重要的。由于clerk_flutter是一个具体的插件,我无法直接访问其最新的API或示例代码(因为插件的具体实现和功能可能会随时间变化),但我可以提供一个通用的方法来探索和使用一个Flutter插件,并给出一个假设性的代码案例来展示如何使用一个类似的身份验证插件。

通用探索步骤

  1. 安装插件: 首先,你需要在pubspec.yaml文件中添加clerk_flutter插件的依赖。

    dependencies:
      flutter:
        sdk: flutter
      clerk_flutter: ^x.y.z  # 替换为实际版本号
    

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

  2. 导入插件: 在你的Dart文件中导入该插件。

    import 'package:clerk_flutter/clerk_flutter.dart';
    
  3. 初始化插件: 根据插件的文档,可能需要初始化插件。这通常涉及到配置一些参数,如API密钥、客户端ID等。

  4. 使用插件功能: 根据插件提供的API,使用其功能。这可能包括用户登录、注册、获取用户信息、验证身份等。

假设性代码案例

以下是一个假设性的代码案例,展示了如何使用一个类似身份验证的Flutter插件(这里以clerk_flutter为代称,但具体API可能会有所不同):

import 'package:flutter/material.dart';
import 'package:clerk_flutter/clerk_flutter.dart';  // 假设的导入语句

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

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

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  late ClerkClient _clerkClient;
  User? _currentUser;

  @override
  void initState() {
    super.initState();
    // 初始化ClerkClient,这里假设需要传入API密钥
    _clerkClient = ClerkClient(apiKey: 'your-api-key-here');
    
    // 检查当前用户状态
    _checkCurrentUser();
  }

  Future<void> _checkCurrentUser() async {
    try {
      // 假设的获取当前用户的方法
      _currentUser = await _clerkClient.getCurrentUser();
      if (_currentUser != null) {
        print('User is logged in: ${_currentUser!.email}');
      } else {
        print('No user logged in');
      }
    } catch (e) {
      print('Error checking current user: $e');
    }
  }

  Future<void> _loginUser(String email, String password) async {
    try {
      // 假设的登录方法
      await _clerkClient.login(email: email, password: password);
      _currentUser = await _clerkClient.getCurrentUser();
      setState(() {});  // 更新UI以反映登录状态
    } catch (e) {
      print('Login failed: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Clerk Flutter Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            if (_currentUser == null)
              ElevatedButton(
                onPressed: () async {
                  // 示例登录按钮
                  String email = 'user@example.com';
                  String password = 'password123';
                  await _loginUser(email, password);
                },
                child: Text('Login'),
              ),
            if (_currentUser != null)
              Text('Hello, ${_currentUser!.email}!'),
          ],
        ),
      ),
    );
  }
}

注意事项

  • 上述代码是一个假设性的示例,实际使用clerk_flutter时,你需要参考其官方文档和API指南。
  • 确保你已经正确配置了插件所需的任何依赖项和权限。
  • 插件的API和初始化方法可能会随着版本更新而变化,因此始终参考最新的官方文档。

为了获得最准确和最新的信息,请直接访问clerk_flutter插件的官方仓库或文档页面。

回到顶部