class User {
String token;
User({this.token});
}
class AuthService {
final String url = 'https://reqres.in/api/login';
final controller = StreamController<User>();
Future<User> signIn(String email, String password) async {
final response =
await post(url, body: {'email': email, 'password': password});
final data = jsonDecode(response.body);
final user = _userFromDatabaseUser(data);
// print(user.token);
controller.add(user);
return user;
}
//create user obj based on the database user
User _userFromDatabaseUser(Map user) {
return user != null ? User(token: user['token']) : null;
}
//user stream for provider
Stream<User> get user {
return controller.stream;
}
}
//in Sign in page
onPressed: () async {
if (_formKey.currentState.validate()) {
dynamic result = await _auth.signIn(email, password);
print(result); // Instance of 'User'
}
}
我是个初来乍到的人,我想制作一款只对用户进行身份验证的应用程序。我正在尝试从流中读取用户令牌数据。如果我得到了令牌,请检查令牌是否为空,然后转到主页,否则它将显示错误我如何打印或存储令牌值?
您可以在登录后获得用户:
User result = await _auth.signIn(email, password);
然后看看你能做的数据是
print(result.token);
它将为您提供令牌,然后您可以使用共享的prefrences来存储您的令牌并访问它。查看it的文档:https://pub.dev/packages/shared_preferences
您可以使用override
Object.toString方法。
您可以在User
类中添加此方法来打印令牌,而不是Instance of 'User'
。
@override
String toString() {
// TODO: change the below return to your desired string
return "token: $token";
}
您可以使用打印
print(userModel.toString());