SecureStorage 在 flutter 中读取 null

SecureStorage reads null in flutter

这是我为 SecureStorage 创建的单独 class。

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);
  }

由于程序是异步的,因此在更改值之前呈现小部件。我将主要小部件包装在未来的构建器中并且效果很好。

这可以作为参考: