Flutter身份验证与数据存储插件flutter_robusta_hive_auth的使用

Flutter身份验证与数据存储插件flutter_robusta_hive_auth的使用

插件简介

flutter_robusta_hive_auth 是一个用于在 Flutter 应用中实现身份验证并安全持久化存储认证凭据的插件。它结合了 flutter_robusta_hiveflutter_robusta_auth 的功能,利用 Hive 数据库来存储认证信息。


安装

要使用该插件,首先需要通过以下命令将其添加到项目的依赖中:

flutter pub add flutter_robusta_hive_auth

使用方法

以下是完整的使用示例,展示了如何配置和使用 flutter_robusta_hive_auth 插件。

示例代码

import 'package:flutter_robusta/flutter_robusta.dart';
import 'package:flutter_robusta_auth/flutter_robusta_auth.dart';
import 'package:flutter_robusta_hive/flutter_robusta_hive.dart';
import 'package:flutter_robusta_hive_auth/flutter_robusta_hive_auth.dart';

// 创建 Runner 实例并配置插件扩展
final runner = Runner(
  extensions: [
    // 添加 Hive 扩展
    FlutterHiveExtension(),
    // 添加 Hive Auth 扩展
    FlutterHiveAuthExtension(),
    // 添加身份验证扩展
    FlutterAuthExtension(
      // 提供身份验证逻辑(此处仅抛出未实现错误)
      identityProvider: (credentials, provider) => throw UnimplementedError(),
      // 配置凭据存储工厂
      credentialsStorageFactory: (c) => c.read(credentialsHiveStorageProvider),
    ),
  ],
);

// 启动应用
Future<void> main() => runner.run();

详细说明

  1. 导入必要的包

    • flutter_robusta:主框架。
    • flutter_robusta_auth:用于身份验证的核心模块。
    • flutter_robusta_hive:将 Hive 数据库集成到框架中。
    • flutter_robusta_hive_auth:提供 Hive 数据库存储身份验证凭据的功能。
  2. Runner 配置

    • FlutterHiveExtension():初始化 Hive 数据库。
    • FlutterHiveAuthExtension():启用 Hive 数据库存储认证功能。
    • FlutterAuthExtension
      • identityProvider:定义身份验证逻辑,此处仅抛出未实现错误,实际项目中需要实现具体逻辑。
      • credentialsStorageFactory:指定凭据存储方式,这里使用 Hive 存储。
  3. 启动应用

    • 调用 runner.run() 启动应用。

示例代码完整 Demo

以下是完整的示例代码,包含运行环境设置和基本身份验证流程。

示例代码文件:main.dart

import 'package:flutter/material.dart';
import 'package:flutter_robusta/flutter_robusta.dart';
import 'package:flutter_robusta_auth/flutter_robusta_auth.dart';
import 'package:flutter_robusta_hive/flutter_robusta_hive.dart';
import 'package:flutter_robusta_hive_auth/flutter_robusta_hive_auth.dart';

// 创建 Runner 实例并配置插件扩展
final runner = Runner(
  extensions: [
    // 初始化 Hive 数据库
    FlutterHiveExtension(),
    // 启用 Hive Auth 功能
    FlutterHiveAuthExtension(),
    // 配置身份验证扩展
    FlutterAuthExtension(
      // 模拟身份验证逻辑(未实现)
      identityProvider: (credentials, provider) => throw UnimplementedError(),
      // 使用 Hive 存储凭据
      credentialsStorageFactory: (c) => c.read(credentialsHiveStorageProvider),
    ),
  ],
);

// 主函数
Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 启动 Runner
  await runner.run();

  // 运行应用
  runApp(MyApp());
}

// 应用界面
class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Flutter Robusta Hive Auth 示例')),
        body: Center(child: Text('身份验证与数据存储示例')),
      ),
    );
  }
}

更多关于Flutter身份验证与数据存储插件flutter_robusta_hive_auth的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter身份验证与数据存储插件flutter_robusta_hive_auth的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_robusta_hive_auth 是一个 Flutter 插件,用于结合 Robusta 路由管理和 Hive 本地存储来实现身份验证和数据存储的功能。它提供了一种简单的方式来管理用户的身份验证状态,并将用户数据存储在本地。

以下是如何使用 flutter_robusta_hive_auth 插件的基本步骤:

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 flutter_robusta_hive_auth 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  robusta: ^latest_version
  hive: ^latest_version
  hive_flutter: ^latest_version
  flutter_robusta_hive_auth: ^latest_version

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

2. 初始化 Hive

在使用 Hive 之前,你需要初始化它。通常,你可以在 main.dart 文件中进行初始化:

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

void main() async {
  await Hive.initFlutter();
  runApp(MyApp());
}

3. 配置 Robusta 和 Hive Auth

接下来,你需要配置 Robustaflutter_robusta_hive_auth 插件。你可以在 main.dart 文件中进行配置:

import 'package:flutter/material.dart';
import 'package:robusta/robusta.dart';
import 'package:flutter_robusta_hive_auth/flutter_robusta_hive_auth.dart';
import 'package:hive_flutter/hive_flutter.dart';

void main() async {
  await Hive.initFlutter();
  
  final authBox = await Hive.openBox('auth_box');
  
  final authExtension = HiveAuthExtension(authBox);
  
  final router = Router(
    extensions: [
      authExtension,
    ],
  );

  runApp(MyApp(router: router));
}

class MyApp extends StatelessWidget {
  final Router router;

  const MyApp({Key? key, required this.router}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp.router(
      routeInformationParser: router.routeInformationParser,
      routerDelegate: router.routerDelegate,
    );
  }
}

4. 使用 HiveAuthExtension 进行身份验证

HiveAuthExtension 提供了用于管理用户身份验证状态的方法。你可以在应用程序中使用这些方法来处理登录、注销等操作。

例如,处理用户登录:

import 'package:flutter/material.dart';
import 'package:robusta/robusta.dart';
import 'package:flutter_robusta_hive_auth/flutter_robusta_hive_auth.dart';

class LoginPage extends StatelessWidget {
  final HiveAuthExtension authExtension;

  const LoginPage({Key? key, required this.authExtension}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Login'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            // 模拟用户登录
            await authExtension.login('user_token');
            // 导航到主页
            context.go('/home');
          },
          child: Text('Login'),
        ),
      ),
    );
  }
}

处理用户注销:

import 'package:flutter/material.dart';
import 'package:robusta/robusta.dart';
import 'package:flutter_robusta_hive_auth/flutter_robusta_hive_auth.dart';

class HomePage extends StatelessWidget {
  final HiveAuthExtension authExtension;

  const HomePage({Key? key, required this.authExtension}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            // 用户注销
            await authExtension.logout();
            // 导航到登录页
            context.go('/login');
          },
          child: Text('Logout'),
        ),
      ),
    );
  }
}

5. 保护路由

你可以使用 HiveAuthExtension 来保护某些路由,只有在用户登录后才能访问。例如:

import 'package:robusta/robusta.dart';
import 'package:flutter_robusta_hive_auth/flutter_robusta_hive_auth.dart';

final router = Router(
  extensions: [
    HiveAuthExtension(authBox),
  ],
  routes: [
    Route(
      path: '/home',
      builder: (context) => HomePage(authExtension: context.read<HiveAuthExtension>()),
      guards: [
        AuthGuard(),
      ],
    ),
  ],
);

6. 读取用户数据

你可以从 Hive 中读取用户的身份验证数据:

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

class ProfilePage extends StatelessWidget {
  final HiveAuthExtension authExtension;

  const ProfilePage({Key? key, required this.authExtension}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    final userToken = authExtension.getToken();

    return Scaffold(
      appBar: AppBar(
        title: Text('Profile'),
      ),
      body: Center(
        child: Text('User Token: $userToken'),
      ),
    );
  }
}
回到顶部