简介

Flutter_BoilerPlate_With_Auth

带有通用身份验证机制、BLoC 状态管理、文件夹结构、多风格配置、API 客户端、示例登录页面的可重用应用程序架构。该样板文件还包含应用程序身份验证反应器、应用程序生命周期观察器。使用此存储库,可以轻松获得用于开发大型 Flutter 应用程序的样板文件。涵盖两种身份验证:

  1. 外部登录
  2. 基于凭据的登录

示例登录页面仅用于演示目的,专为基于 Web 的应用程序设计。image

用法

在 main 中提供基础 URL 和授权端点。

void main() async {
  FlavorConfig(
      flavor: Flavor.DEV,
      envColor: Colors.redAccent.shade100,
      supportedLanguages: [Language.DE, Language.EN, Language.FR, Language.IT],
      values: FlavorValues(
          baseUrl: "", //please provide baseUrl
          authenticationCredentialsConfig: AuthenticationCredentialsConfig(
              title: 'Login', authorizationEndpoint: ''), //please provide Authorization endpoint
          privacyNoticeUrl: "https://dev.to",
          contactInfoUrl: "https://dev.to",
          themeConfig: ThemeConfig(),
          logo: "assets/images/logo.png")); //logo in assets
  WidgetsFlutterBinding?.ensureInitialized();
  HydratedBloc.storage = await HydratedStorage.build(
    storageDirectory: kIsWeb ? HydratedStorage.webStorageDirectory : await getTemporaryDirectory(),
  );
  runApp(MyApp());
}

对于外部登录,请在 Flavor 值中提供 authenticationExternalConfig。

values: FlavorValues(
          baseUrl: "", //please provide baseUrl
          authenticationExternalConfig: AuthenticationExternalConfig(
              title: 'Login IDP',
              authorizationAuthorizationEndpoint: "",
              authorizationTokenEndpoint: "",
              authorizationAppIdentifier: "",
              authorizationAppSecret: "",
              authorizationRedirectUrl: "",
              logoutUrl: "")

在 User 存储库中,请提供基于凭据的登录的端点 URL。

class UserRepository {
  ApiClient _apiClient = ApiClient();

  static final UserRepository _instance = UserRepository._internal();

  factory UserRepository() => _instance;

  UserRepository._internal();

  Future<User> getUser() async {
    if (FlavorConfig.isDemo()) {
      return User(login: "test_user");
    }

    String url = 'api/myapi/user'; //endpoint for authenticating user
    var responseJson = await _apiClient.getJson(url);
    var result = User.fromJson(responseJson);

    return result;
  }
}

入门

  1. 安装 Flutter SDK: https://flutterdart.cn/docs/get-started/install/windows
  2. 安装缺少的软件包: flutter packages get / Flutter pub get
  3. 切换通道到 DEV: flutter channel dev
  4. 升级 Flutter: flutter upgrade

启动应用程序

  1. 测试 – flutter run -t lib/main_test.dart
  2. 开发 – flutter run -t lib/main_dev.dart
  3. 生产 – flutter run -t lib/main_prod.dart

常用命令

  1. 启动 Build Runner 以生成 .g 文件: flutter packages pub run build_runner build –delete-conflicting-outputs
  2. 生成翻译文件: flutter gen-l10n

GitHub

查看 Github