Flutter 颤振安全存储

Flutter 颤振安全存储,flutter,Flutter,如何在FutureBuilder之外的任何其他功能中从安全存储中获取数据 Future<void> login() async { print('LOGGGGINNNNNNNNNNNN'); print(read('TOKEN')); } Future read(String storageName) async { return await _storage.read(key: storageName); }

如何在FutureBuilder之外的任何其他功能中从安全存储中获取数据

    Future<void> login() async {
      print('LOGGGGINNNNNNNNNNNN');
      print(read('TOKEN'));
    }

    Future read(String storageName) async {
      return await _storage.read(key: storageName);
    }
Future login()异步{
打印('LOGGGGINNNNNNNNNNNN');
打印(读取(‘标记’);
}
未来读取(字符串存储名称)异步{
return wait_storage.read(键:storageName);
}

打印结果:“Future”的实例

您应该改为这样做

Future login()异步{
打印('LOGGGGINNNNNNNNNNNN');
打印(等待读取(“令牌”);
}
未来读取(字符串存储名称)异步{
返回_storage.read(键:storageName);
}
由于
read
返回未来,它将打印您当前看到的内容,因此您需要等待其完成。

解决方案

Future readStorage(String storageName) async {
  return await _storage.read(key: storageName);
}

 Future getToken() async {
  final _storage = new FlutterSecureStorage();
  await Future.sync(()  async =>  _token = await _storage.read(key: 'TOKEN'));
 }

Future<void> login() async {
  getToken().then((value){
  print(_token);
  if(_token == 'Not Authenticated' || _token == null)
    {
      setState(() {
        _isAuthenticated = false;
      });
    }
  else {
    setState(() {
      _isAuthenticated = true;
    });
  }
});
}
Future readStorage(字符串storageName)异步{
return wait_storage.read(键:storageName);
}
Future getToken()异步{
最终存储=新存储();
wait Future.sync(()async=>_token=wait_storage.read(key:'token'));
}
Future login()异步{
getToken()。然后((值){
打印(_令牌);
if(_-token=='notauthenticated'| | | u-token==null)
{
设置状态(){
_isAuthenticated=false;
});
}
否则{
设置状态(){
_isAuthenticated=true;
});
}
});
}

好的,但我正在使用它登录。我如何才能等待完成?或者有任何持续时间使其花费很短的时间?您可以
等待
调用
登录()
等待未来。sync(()async=>_token=wait_storage.read(键:'token')这不好