Flutter 在定义 CognitoSignUpOptions 时不断抛出错误

Tim*_*amm 1 authentication flutter aws-amplify

 Error: The argument type 'Map<String, String>' can't be assigned to the parameter type 'Map<CognitoUserAttributeKey, String>'.
Run Code Online (Sandbox Code Playgroud)

当我查找错误时,没有任何相关信息。

在 AWS 文档中,他们推荐了此代码,这会导致错误:

Map<String, String> userAttributes = {
   'email': 'email@domain.com',
   'phone_number': '+15559101234',
   // additional attributes as needed
};

SignUpResult res = await Amplify.Auth.signUp(
   username: 'myusername',
   password: 'mysupersecurepassword',
   options: CognitoSignUpOptions(
     userAttributes: userAttributes
   )
 );
Run Code Online (Sandbox Code Playgroud)

Tim*_*amm 9

解决方案非常简单。

您必须更改 Map 的构造函数:

Map<CognitoUserAttributeKey, String> userAttributes = {
CognitoUserAttributeKey.email: 'email@email.com',
CognitoUserAttributeKey.phoneNumber: '+15559101234',
};

void registerAccount() async {
  await Amplify.Auth.signUp(
    username: 'myusername',
    password: 'mysupersecurepassword',
    options: CognitoSignUpOptions(
     userAttributes: userAttributes)
  );
}
Run Code Online (Sandbox Code Playgroud)

这解决了问题。