【问题标题】:Flutter: How to change biometric authentication messages in another language?Flutter:如何用另一种语言更改生物特征认证消息?
【发布时间】:2019-10-14 06:47:57
【问题描述】:

如何更改生物特征验证失败的消息。我使用了颤振local_auth 包。
我想将下面的消息翻译成另一种语言。我认为这些消息来自系统并使用系统语言。它必须是英语,即使系统语言是另一种语言。就我而言,标题的文本是英文的,正文的文本是法文的。它必须使用相同的语言。
- 不匹配。
- 将手指放在传感器上稍长一点。
- 确保您的手指覆盖整个传感器。
...

Click here to see image of biometric auth dialog.

final LocalAuthentication auth = LocalAuthentication();
bool authenticated = false;

try {
  authenticated = await auth.authenticateWithBiometrics(
    localizedReason: 'biometric auth for login',
    useErrorDialogs: true,
    stickyAuth: true,
    androidAuthStrings: AndroidAuthMessages(
      signInTitle: 'Fingerprint login',
      ...
    ),
    iOSAuthStrings: IOSAuthMessages(
      lockOut: 'test',
      ...
    ),
  );
} on PlatformException catch (e) {
  if (e.code == auth_error.notAvailable) {
    print(e);
  }
}

【问题讨论】:

    标签: flutter


    【解决方案1】:

    从未使用过颤振,只是阅读文档:

    如果您不想使用默认对话框,请使用“useErrorDialogs = false”调用此 API。在这种情况下,它会抛出错误消息,你需要在你的 dart 代码中处理它们:

    bool didAuthenticate =
        await localAuth.authenticateWithBiometrics(
            localizedReason: 'Please authenticate to show account balance',
            useErrorDialogs: false);
    

    您可以使用我们默认的对话框消息,也可以通过传入 IOSAuthMessages 和 AndroidAuthMessages 来使用自己的消息:

    import 'package:local_auth/auth_strings.dart';
    
    const iosStrings = const IOSAuthMessages(
        cancelButton: 'cancel',
        goToSettingsButton: 'settings',
        goToSettingsDescription: 'Please set up your Touch ID.',
        lockOut: 'Please reenable your Touch ID');
    await localAuth.authenticateWithBiometrics(
        localizedReason: 'Please authenticate to show account balance',
        useErrorDialogs: false,
        iOSAuthStrings: iosStrings);
    

    例外情况

    有 6 种异常类型:PasscodeNotSet、NotEnrolled、NotAvailable、OtherOperatingSystem、LockedOut 和 PermanentlyLockedOut。它们被包装在 LocalAuthenticationError 类中。您可以捕获异常并按不同类型处理它们。例如:

    import 'package:flutter/services.dart';
    import 'package:local_auth/error_codes.dart' as auth_error;
    
    try {
      bool didAuthenticate = await local_auth.authenticateWithBiometrics(
          localizedReason: 'Please authenticate to show account balance');
    } on PlatformException catch (e) {
      if (e.code == auth_error.notAvailable) {
        // Handle this exception here.
      }
    }
    

    【讨论】:

    • 感谢回复,但 useErrorDialogs 显示不同的对话框。我想更改主底部工作表对话框的消息。
    • 我想更改诸如“不匹配”、“将您的手指放在传感器上稍长一点。”、“确保您的手指覆盖整个传感器”等消息。
    • 我禁用了 useErrorDialogs,但 PlatformException 没有捕捉到错误。有几个错误代码。
    • 这些消息,如你所说,我相信来自系统。如果这是真的,就没有办法改变它们。
    • 您可以尝试使用 Intl 包之类的东西来本地化您的字符串消息,然后将它们作为“localizedReason”的值传入。 pub.dev/packages/intl
    猜你喜欢
    • 1970-01-01
    • 2020-04-19
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    相关资源
    最近更新 更多