You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自定义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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 10:54:47