简介
Flutter_BoilerPlate_With_Auth
带有通用身份验证机制、BLoC 状态管理、文件夹结构、多风格配置、API 客户端、示例登录页面的可重用应用程序架构。该样板文件还包含应用程序身份验证反应器、应用程序生命周期观察器。使用此存储库,可以轻松获得用于开发大型 Flutter 应用程序的样板文件。涵盖两种身份验证:
- 外部登录
- 基于凭据的登录
示例登录页面仅用于演示目的,专为基于 Web 的应用程序设计。
用法
在 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;
}
}
入门
- 安装 Flutter SDK: https://flutterdart.cn/docs/get-started/install/windows
- 安装缺少的软件包: flutter packages get / Flutter pub get
- 切换通道到 DEV: flutter channel dev
- 升级 Flutter: flutter upgrade
启动应用程序
- 测试 – flutter run -t lib/main_test.dart
- 开发 – flutter run -t lib/main_dev.dart
- 生产 – flutter run -t lib/main_prod.dart
常用命令
- 启动 Build Runner 以生成 .g 文件: flutter packages pub run build_runner build –delete-conflicting-outputs
- 生成翻译文件: flutter gen-l10n