change_birthday_controller.dart 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import 'package:injectable/injectable.dart';
  2. import 'package:keyboard/base/base_controller.dart';
  3. import 'package:get/get.dart';
  4. import 'package:keyboard/utils/age_zodiac_sign_util.dart';
  5. import 'package:intl/intl.dart';
  6. import 'package:keyboard/utils/toast_util.dart';
  7. import '../../../resource/assets.gen.dart';
  8. @injectable
  9. class ChangeBirthdayController extends BaseController {
  10. final tag = "ChangeBirthdayController";
  11. late DateTime initialDate;
  12. // 最小日期
  13. var minimumDate = DateTime.parse("1921-01-01");
  14. late String currentDate;
  15. //星座
  16. Rx<Zodiac> constellation = Zodiac(name: '', image: AssetGenImage('')).obs;
  17. var age = 0.obs;
  18. ChangeBirthdayController();
  19. @override
  20. void onInit() {
  21. super.onInit();
  22. final String? birthday = Get.arguments?["birthday"];
  23. if (birthday != null) {
  24. initialDate = DateTime.parse(birthday);
  25. currentDate = birthday;
  26. constellation.value = AgeZodiacSignUtil.getZodiacSign(initialDate);
  27. age.value = AgeZodiacSignUtil.calculateAge(initialDate);
  28. } else {
  29. initialDate = DateTime.now();
  30. currentDate = DateFormat('yyyy-MM-dd').format(initialDate);
  31. constellation.value = AgeZodiacSignUtil.getZodiacSign(initialDate);
  32. age.value = AgeZodiacSignUtil.calculateAge(initialDate);
  33. }
  34. }
  35. updateConstellation(DateTime date) {
  36. constellation.value = AgeZodiacSignUtil.getZodiacSign(date);
  37. age.value = AgeZodiacSignUtil.calculateAge(date);
  38. print("星座:${constellation.value}");
  39. print("年龄:${age.value}");
  40. print("日期:${date}");
  41. currentDate = DateFormat('yyyy-MM-dd').format(date);
  42. }
  43. void clickBack() {
  44. Get.back();
  45. }
  46. void clickSave() {
  47. if (currentDate.isEmpty) {
  48. ToastUtil.show("请选择日期");
  49. return;
  50. }
  51. Get.back(result: currentDate);
  52. }
  53. }