如何自定义FlutterFire UI Auth认证页面的所有文本组件
FlutterFire UI Auth 全量文本自定义方法
你已经通过重写本地化基类的getter实现了邮箱、密码输入框标签的自定义,其余所有认证页面的文本组件,都可以用完全相同的方式重写实现自定义,不需要额外引入其他依赖或者做特殊配置。
具体实现步骤
- 所有可自定义的文本,都定义在你当前自定义本地化类继承的基类(通常是
DefaultLocalizations)中,你可以直接在IDE中跳转进入基类源码,查看所有暴露的可重写字符串getter,这些属性覆盖了认证流程全场景的文本:包括页面标题、按钮文案、错误提示、第三方登录按钮文本、邮箱/手机号验证提示、表单辅助文案等。 - 你只需要在自己的自定义本地化类中,按需重写对应getter返回自定义文本即可,不需要重写全部属性,未重写的内容会自动使用默认文案。
完整示例代码
1. 编写自定义本地化类
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart'; class CustomAuthLocalizations extends DefaultLocalizations { const CustomAuthLocalizations(); // 你已实现的输入框标签自定义 @override String get emailInputLabel => 'Enter your email'; @override String get passwordInputLabel => 'Enter your password'; // 其余常见文本自定义示例,按需选用即可 @override String get signInActionText => '登录'; @override String get registerActionText => '注册'; @override String get forgotPasswordButtonLabel => '忘记密码?'; @override String get forgotPasswordViewTitle => '重置密码'; @override String get resetPasswordButtonLabel => '发送重置邮件'; @override String get confirmPasswordInputLabel => '确认密码'; @override String get signInText => '已有账号?立即登录'; @override String get registerText => '还没有账号?立即注册'; @override String get signOutButtonText => '退出登录'; @override String get googleSignInButtonText => '使用Google账号登录'; @override String get appleSignInButtonText => '使用Apple账号登录'; @override String get emailIsNotVerifiedText => '当前邮箱未完成验证'; @override String get sendVerificationEmailLabel => '发送验证邮件'; }
2. 注册自定义本地化配置
确保你已经将自定义的本地化类传入localizationsDelegates,否则自定义文本不会生效,参考配置如下:
MaterialApp( // 其他应用配置... localizationsDelegates: [ FlutterFireUILocalizations.withDefaultOverrides(const CustomAuthLocalizations()), GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: const [ Locale('en', 'US'), Locale('zh', 'CN'), ], )
提示:如果你需要适配多语言,只需要在不同语言对应的本地化类中重写对应getter即可,和普通的Flutter多语言适配逻辑完全一致。
内容的提问来源于stack exchange,提问作者Mamoudou Kane
相关产品推荐
相关产品推荐

