Amazon web services 为什么在暂停执行时无法访问似乎在范围内的对象?
我正在学习飞镖和颤振,我发现这是一次非常愉快的经历。我正在制作一个我想与亚马逊AWS资源交流的应用程序。然而,我遇到了一个我已经有一段时间没能解决的问题 我正在制作一个函数,用于获取向AWS的API发出经过身份验证的请求所需的密钥和令牌。我正在使用AWS Amplify中的库函数来获取AuthSession对象。如果在检索AuthSession对象之后将断点设置为,则该对象似乎包含名为AuthSession.credentials的对象。这又包含awsAccessKey、awsSecretKey和sessionToken,它们是我需要的令牌和密钥。当执行暂停时,我可以在调试控制台中访问它们Amazon web services 为什么在暂停执行时无法访问似乎在范围内的对象?,amazon-web-services,flutter,dart,Amazon Web Services,Flutter,Dart,我正在学习飞镖和颤振,我发现这是一次非常愉快的经历。我正在制作一个我想与亚马逊AWS资源交流的应用程序。然而,我遇到了一个我已经有一段时间没能解决的问题 我正在制作一个函数,用于获取向AWS的API发出经过身份验证的请求所需的密钥和令牌。我正在使用AWS Amplify中的库函数来获取AuthSession对象。如果在检索AuthSession对象之后将断点设置为,则该对象似乎包含名为AuthSession.credentials的对象。这又包含awsAccessKey、awsSecretKey
Future<AWSCredentials> getAWSCredentials() async {
final AuthSession authSession = await Amplify.Auth.fetchAuthSession(
options: CognitoSessionOptions(getAWSCredentials: true));
final a = 1; // I set a breakpoint on this line
//final AWSCredentials awsCredentials = authSession.credentials;
//return awsCredentials;
}
未来
但是,如果我试图让函数返回这个AuthSession(通过取消对上述函数最后两行的注释),或者直接返回其中一个标记,那么它将不再编译,并且会收到错误消息
未为类型“AuthSession”定义获取程序“凭据”。
尝试导入定义“凭据”的库,将名称更正为现有getter的名称,或定义名为“凭据”的getter或字段。省道(未定义的获取器)
我试图深入研究定义类AuthSession的代码,但它似乎不包含对credentials对象的任何引用。然而,它显然在运行时就在那里。为什么我不能访问它?类AuthSession
不包含任何名为凭据的成员,因此当将fetchAuthSession()
的结果强制转换到AuthSession
时,无法访问该成员。但是,子类CognitoAuthSession
确实包含凭证
成员,因此将结果强制转换为该类型允许访问authSession.credentials
因此对fetchAuthSession()
的调用应该是
final CognitoAuthSession authSession = await Amplify.Auth.fetchAuthSession(
options: CognitoSessionOptions(getAWSCredentials: true));
然而,我还没有弄明白,fetchAuthSession
如何返回CognitoAuthSession
而不是AuthSession
——当我右键单击VS代码中的函数并单击Go to Definition时,它看起来是这样的:Future