repository.dart 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import 'dart:convert';
  2. import 'package:rxdart/rxdart.dart';
  3. import '../helper/constants.dart';
  4. import '../helper/net_utils.dart';
  5. import '../helper/shared_preferences.dart';
  6. /// 网络层
  7. ///
  8. /// 提供网络层接口
  9. class GithubService {
  10. /// 登录
  11. Observable login() => get("user");
  12. }
  13. /// 仓库层
  14. ///
  15. /// 当请求开始时:处理ViewModel层传递过来的参数
  16. /// 当返回数据时:将网络和本地的数据组装成ViewModel层需要的数据类型
  17. class GithubRepo {
  18. final GithubService _remote;
  19. /// sharedPreference
  20. ///
  21. /// 也应该算在Model层,在这里面处理数据的读取
  22. final SpUtil _sp;
  23. GithubRepo(this._remote, this._sp);
  24. /// 登录
  25. ///
  26. /// - 将ViewModel层 传递过来的[username] 和 [password] 处理为 token 并用[SharedPreferences]进行缓存
  27. /// - 调用 [_remote] 的 [login] 方法进行网络访问
  28. /// - 返回 [Observable] 给ViewModel层
  29. Observable login(String username, String password) {
  30. _sp.putString(KEY_TOKEN, "basic " + base64Encode(utf8.encode('$username:$password')));
  31. return _remote.login();
  32. }
  33. }