简体   繁体   English

如何在 dart flutter 中返回两个字符串值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM