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
获取令牌):
- 打开终端:
touch /.bash_profile; open /.bash_profile
(将打开一个文本编辑器) - 添加一行:
export GITHUB_USER_TOKEN="你的token"
- 保存文件并返回终端:
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
更多关于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. 处理认证逻辑
在实际应用中,你需要将用户输入的数据发送到后端进行验证。可以在 onSignIn
、onSignUp
、onResetPassword
等回调函数中处理这些逻辑。
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);
},
),
);
}
}