Flutter认证UI界面插件auth_ui_flutter的使用

Flutter认证UI界面插件auth_ui_flutter的使用

auth_ui_flutter 是一个用于 Android 和 iOS 平台的原生认证核心库的 Flutter 插件。本文将详细介绍如何在 Flutter 应用中使用该插件。

安装

首先,在 pubspec.yaml 文件中添加 auth_ui_flutter 作为依赖项。

dependencies:
  auth_ui_flutter: ^版本号

Android

在项目的 local.properties 文件中添加 TekoGoogleRegistryToken(联系 trung.cs@teko.vn 获取):

// android/local.properties

TekoGoogleRegistry.password=你的token

在项目 build.gradle 中添加以下代码:

allprojects {
  repositories {
    ...

    Properties properties = new Properties()
    properties.load(project.rootProject.file('local.properties').newDataInputStream())

    maven {
      setUrl("https://asia-southeast1-maven.pkg.dev/teko-development/teko-mobile-sdks")

      authentication {
        basic(BasicAuthentication)
      }

      credentials {
        username = "_json_key_base64"
        password = properties.getProperty('TekoGoogleRegistry.password')
      }
    }
  }
}

iOS

设置 GitHub 访问令牌以访问 Teko iOS 框架(联系 trung.cs@teko.vn 获取令牌):

  1. 打开终端:touch /.bash_profile; open /.bash_profile(将打开一个文本编辑器)
  2. 添加一行:export GITHUB_USER_TOKEN="你的token"
  3. 保存文件并返回终端:source ~/.bash_profile

使用库

获取 terraAuthUI 实例

调用静态方法 TerraAuthUI.getInstance(_appName) 来获取 terraAuthUI 实例,并确保在初始化应用时调用它。

static const _appName = "Test";
late TerraAuthUI _terraAuthUI;

Future<void> initPlatformState() async {
  _terraAuthUI = await TerraAuthUI.getInstance(_appName);
}

打开登录表单

使用 startLogin 方法来打开登录表单,可以指定一些选项。

await _terraAuthUI.startLogin(config);

设置显示语言

使用 setLanguageCode 方法来设置显示的语言。

_terraAuthUI.setLanguageCode("fr");

使用 LoginUIConfigBuilder 构建 LoginUIConfig 结构

LoginUIConfigBuilder 提供了一些方法来构建登录配置。

var config = LoginUIConfigBuilder()
  .withLocalAssetFilename("assets/bitcoin.png") // 设置logo
  .withAuthenticationCancellable(true) // 允许用户取消登录
  // .withAccount("thanh.bm@teko.vn") // 设置默认账户
  .build();

示例代码

下面是一个完整的示例代码,展示了如何在 Flutter 应用中使用 auth_ui_flutter 插件。

import 'dart:async';

import 'package:auth_ui_flutter/terra_auth_ui.dart';
import 'package:auth_ui_flutter/builder/login_ui_config_builder.dart';
import 'package:flutter/material.dart';

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

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  static const _appName = "Test";
  late TerraAuthUI _terraAuthUI;

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 平台消息是异步的,因此我们在这里进行初始化
  Future<void> initPlatformState() async {
    _terraAuthUI = await TerraAuthUI.getInstance(_appName);
  }

  [@override](/user/override)
  void dispose() {
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: SingleChildScrollView(
          child: Column(
            children: [
              ElevatedButton(
                onPressed: () async {
                  try {
                    var config = LoginUIConfigBuilder()
                        .withLocalAssetFilename("assets/bitcoin.png") // 设置logo
                        .withAuthenticationCancellable(true) // 允许用户取消登录
                        .build();
                    _terraAuthUI.setLanguageCode("fr"); // 设置语言
                    await _terraAuthUI.startLogin(config); // 打开登录表单
                    print("[flutter] success");
                  } catch (e) {
                    print("[flutter] exception" + e.toString());
                  }
                },
                child: const Text("启动登录界面"),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter认证UI界面插件auth_ui_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter认证UI界面插件auth_ui_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


auth_ui_flutter 是一个用于快速构建认证界面的 Flutter 插件。它提供了预构建的 UI 组件,方便开发者快速集成登录、注册、忘记密码等常见的认证流程。以下是 auth_ui_flutter 的基本使用方法:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 auth_ui_flutter 依赖:

dependencies:
  flutter:
    sdk: flutter
  auth_ui_flutter: ^1.0.0  # 请使用最新版本

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

2. 导入包

在需要使用 auth_ui_flutter 的 Dart 文件中导入包:

import 'package:auth_ui_flutter/auth_ui_flutter.dart';

3. 使用预构建的认证界面

auth_ui_flutter 提供了多种预构建的认证界面,例如登录、注册、忘记密码等。你可以直接使用这些组件。

3.1 登录界面

AuthUiFlutter.signIn(
  onSignIn: (String email, String password) {
    // 处理登录逻辑
    print('Email: $email, Password: $password');
  },
  onSignUp: () {
    // 跳转到注册界面
    Navigator.push(context, MaterialPageRoute(builder: (context) => SignUpScreen()));
  },
  onForgotPassword: () {
    // 跳转到忘记密码界面
    Navigator.push(context, MaterialPageRoute(builder: (context) => ForgotPasswordScreen()));
  },
);

3.2 注册界面

AuthUiFlutter.signUp(
  onSignUp: (String email, String password) {
    // 处理注册逻辑
    print('Email: $email, Password: $password');
  },
  onSignIn: () {
    // 跳转到登录界面
    Navigator.push(context, MaterialPageRoute(builder: (context) => SignInScreen()));
  },
);

3.3 忘记密码界面

AuthUiFlutter.forgotPassword(
  onResetPassword: (String email) {
    // 处理重置密码逻辑
    print('Email: $email');
  },
  onSignIn: () {
    // 跳转到登录界面
    Navigator.push(context, MaterialPageRoute(builder: (context) => SignInScreen()));
  },
);

4. 自定义样式

auth_ui_flutter 允许你自定义界面的样式,例如颜色、字体等。你可以通过传递 AuthUiTheme 对象来定制界面。

AuthUiFlutter.signIn(
  theme: AuthUiTheme(
    primaryColor: Colors.blue,
    accentColor: Colors.blueAccent,
    buttonTextColor: Colors.white,
    // 其他样式配置
  ),
  onSignIn: (String email, String password) {
    // 处理登录逻辑
    print('Email: $email, Password: $password');
  },
);

5. 处理认证逻辑

在实际应用中,你需要将用户输入的数据发送到后端进行验证。可以在 onSignInonSignUponResetPassword 等回调函数中处理这些逻辑。

6. 完整示例

以下是一个完整的示例,展示了如何使用 auth_ui_flutter 构建一个简单的登录界面:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Auth UI Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SignInScreen(),
    );
  }
}

class SignInScreen extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Sign In'),
      ),
      body: AuthUiFlutter.signIn(
        onSignIn: (String email, String password) {
          // 处理登录逻辑
          print('Email: $email, Password: $password');
        },
        onSignUp: () {
          // 跳转到注册界面
          Navigator.push(context, MaterialPageRoute(builder: (context) => SignUpScreen()));
        },
        onForgotPassword: () {
          // 跳转到忘记密码界面
          Navigator.push(context, MaterialPageRoute(builder: (context) => ForgotPasswordScreen()));
        },
      ),
    );
  }
}

class SignUpScreen extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Sign Up'),
      ),
      body: AuthUiFlutter.signUp(
        onSignUp: (String email, String password) {
          // 处理注册逻辑
          print('Email: $email, Password: $password');
        },
        onSignIn: () {
          // 跳转到登录界面
          Navigator.pop(context);
        },
      ),
    );
  }
}

class ForgotPasswordScreen extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Forgot Password'),
      ),
      body: AuthUiFlutter.forgotPassword(
        onResetPassword: (String email) {
          // 处理重置密码逻辑
          print('Email: $email');
        },
        onSignIn: () {
          // 跳转到登录界面
          Navigator.pop(context);
        },
      ),
    );
  }
}
回到顶部