index.dart 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. export 'user.dart';
  2. export 'order.dart';
  3. import 'package:provider/provider.dart';
  4. import 'package:twong/providers/home.dart';
  5. import '../utils/index.dart';
  6. import '../models/index.dart';
  7. class Network {
  8. static Network _inst = new Network();
  9. static Network get inst => _inst;
  10. // get home page data
  11. Future getIndex() async {
  12. var resp = await Request.get('index');
  13. var data = Home.fromJson(resp);
  14. Provider.of<HomeModel>(Cache.context, listen: false).update(data);
  15. return data;
  16. }
  17. // user login
  18. Future<UserInfo> login({String account, String password, String code}) async {
  19. var params = {
  20. "code": code,
  21. "account": account,
  22. "password": password,
  23. };
  24. var resp = await Request.post("login", params: params);
  25. return _processToken(resp);
  26. }
  27. // auto login
  28. Future<UserInfo> autoLogin() async {
  29. if(Cache.account?.account != null && Cache.account?.password != null) {
  30. Log.i("begin auto login...");
  31. return login(account: Cache.account.account, password: Cache.account.password);
  32. }
  33. return null;
  34. }
  35. // request verify code
  36. Future verify() async {
  37. var resp = await Request.get("verify_code");
  38. var key = resp["key"];
  39. resp = await Request.post("register/verify");
  40. }
  41. // register account
  42. Future<UserInfo> register(String account, String code, String password,
  43. {String spread}) async
  44. {
  45. var params = {
  46. "account": account,
  47. "password": password,
  48. "captcha": code,
  49. "spread": spread
  50. };
  51. var resp = await Request.post("register", params: params);
  52. return _processToken(resp);
  53. }
  54. // login with sms
  55. Future smsLogin(String account, String code) async {
  56. var params = {
  57. "account": account,
  58. "captcha": code,
  59. };
  60. var resp = await Request.post("login/mobile", params: params);
  61. return _processToken(resp);
  62. }
  63. Future<UserInfo> _processToken(dynamic resp) async {
  64. if(resp == null) return null;
  65. var token = Token.fromJson(resp);
  66. Cache.updateToken(token);
  67. return getUserInfo();
  68. }
  69. // get user info
  70. Future<UserInfo> getUserInfo() async {
  71. var resp = await Request.get('userinfo');
  72. var info = UserInfo.fromJson(resp);
  73. Cache.updateUserInfo(info);
  74. return info;
  75. }
  76. // get user
  77. Future<User> getUser() async {
  78. var resp = await Request.get('user');
  79. var info = User.fromJson(resp);
  80. Cache.updateUser(info);
  81. return info;
  82. }
  83. // get product detail info
  84. Future<Details> getDetail({dynamic data}) async {
  85. return Details.fromJson(await Request.get("product/detail/" + data.toString()));
  86. }
  87. // search products with keyword
  88. Future<List<Product>> search(String keyword, {dynamic page = "1", dynamic limit = "20"}) async {
  89. var resp = await Request.get("products?page=$page&limit=$limit&keyword=$keyword");
  90. List<Product> list = List<Product>();
  91. var products = resp as List;
  92. for(var item in products) {
  93. list.add(Product.fromJson(item));
  94. }
  95. return list;
  96. }
  97. }