[英]How can I return two string values in dart flutter
I am working on my flutter project where I want to use sharedpreferences.我正在处理我的 flutter 项目,我想在其中使用共享首选项。 Look at the code below:
看下面的代码:
Future<String?> getCredentials() async {
final localStorage = await SharedPreferences.getInstance();
final email = localStorage.getString('email');
final password = localStorage.getString('password');
return email, password;
}
This is my getCredentials funtion I want this function to return email and password as different parameters but dart doesn't allow me can you please help me How can I do it?这是我的 getCredentials 函数我希望这个 function 返回 email 和密码作为不同的参数但是 dart 不允许我可以请你帮我我该怎么做?
Whole SharedPreference Code:整个 SharedPreference 代码:
import 'package:shared_preferences/shared_preferences.dart';
class sharedPreference {
Future<String?> saveCredentials({
required String email,
required String password,
}) async {
final localStorage = await SharedPreferences.getInstance();
await localStorage.setString('email', email);
await localStorage.setString('password', password);
}
Future<String?> getCredentials() async {
final localStorage = await SharedPreferences.getInstance();
final email = localStorage.getString('email');
final password = localStorage.getString('password');
return email, password;
}
}
Just create class. You can even add methods to Credentials later.只需创建 class。您甚至可以稍后向 Credentials 添加方法。 Like secure compare to compare passwordHash with constant time.
就像安全比较一样,将 passwordHash 与常数时间进行比较。
class Credentials {
Credentials(this.email, this.passwordHash);
final String email;
final String passwordHash;
}
Future<Credentials> getCredentials() async {
final localStorage = await SharedPreferences.getInstance();
final email = localStorage.getString('email');
final passwordHash = localStorage.getString('passwordHash');
return Credentials(email, passwordHash));
}
Edit use crypto to get hash of password:编辑使用加密获取密码 hash:
import 'dart:convert';
import 'package:crypto/crypto.dart';
String getHash(String plainPassword) {
return sha256.convert(utf8.encode(plainPassword)).toString();
}
change return type String to Map<String,dynamic>将返回类型 String 更改为 Map<String,dynamic>
Future<Map<String,dynamic>> getCredentials() async {
final localStorage = await SharedPreferences.getInstance();
final email = localStorage.getString('email');
final password = localStorage.getString('password');
return {
'email':email,
'password':password
};
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.