android - SecureStorage 在颤动中读取 null
问题描述
这是我创建的 SecureStorage 的单独类。
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
class SecureStorage {
final _storage = FlutterSecureStorage();
Future writeSecureData(String key, String value) async {
var writeData = await _storage.write(key: key, value: value);
return writeData;
}
Future readSecureData(String key) async {
var readData = await _storage.read(key: key);
return readData;
}
Future deleteSecureData(String key) async {
var deleteData = await _storage.delete(key: key);
return deleteData;
}
}
因此,从登录页面,我将数据写入安全存储,如下面的屏幕截图所示。当我在这个阶段打印用户名和密码时,它们符合预期。
但是,在启动屏幕上从安全存储中读取数据时,它始终显示为空。下面是启动画面的代码:
class SplashScreen extends StatelessWidget {
final SecureStorage secureStorage = SecureStorage();
//Fetching data from secureStorage
SplashScreen() {
secureStorage.readSecureData("email").then((value) => finalEmail = value);
secureStorage.readSecureData("name").then((value) => finalName = value);
print(finalEmail);
print(finalName);
} ...remaining code
每次我热重载应用程序时,数据都会丢失。我什至不知道数据是否首先写入。我该如何解决这个问题?
解决方案
我想到了。
SplashScreen() {
secureStorage.readSecureData("email").then((value) => finalEmail = value);
secureStorage.readSecureData("name").then((value) => finalName = value);
print(finalEmail);
print(finalName);
}
由于程序是异步的,因此在值更改之前呈现的小部件。我将主要小部件包装在未来的构建器中,效果很好。
推荐阅读
- aws-cdk - AWS CDK - Lambda - Dynamo - Step Functions
- ansible - ansible playbook and hostvar connection
- excel - Excel VBA Append Cell to a different sheet Based on a column in same row saying "Yes"
- python - 在 Python 中将两个日期列合并为一个
- angular - Angular route animation between lazy loaded modules, :leave component disappears instantly
- javascript - How can I make this button have two click events?
- c# - 为什么 IdentityServer4 生成的访问令牌总是无效?
- python - 打印和删除部分字符串
- python - Python Selenium - 无法定位元素
- python - 如何访问它们列表中的对象?