privacy_compliance.dart 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import 'mmkv_util.dart';
  2. class PrivacyCompliance {
  3. PrivacyCompliance._();
  4. static const String isPolicyGranted = 'isPolicyGranted';
  5. static final List<EnsurePolicyGrant> _pendingTasks = [];
  6. static bool _isPolicyGranted = false;
  7. static Future<void> ensurePolicyGranted(EnsurePolicyGrant ensure) async {
  8. if (isAgreePrivacyPolicy()) {
  9. await ensure.onPolicyGrant();
  10. } else {
  11. _pendingTasks.add(ensure);
  12. }
  13. }
  14. static Future<void> setPrivacyPolicy(bool isAgree) async {
  15. final bool oldValue = isAgreePrivacyPolicy();
  16. print("同意隐私政策$isAgree");
  17. if (isAgree == oldValue) return;
  18. KVUtil.putBool(isPolicyGranted, isAgree);
  19. _isPolicyGranted = isAgree;
  20. if (isAgree) {
  21. for (final task in _pendingTasks) {
  22. await task.onPolicyGrant();
  23. }
  24. _pendingTasks.clear();
  25. }
  26. }
  27. static bool isAgreePrivacyPolicy() {
  28. return _isPolicyGranted || KVUtil.getBool(isPolicyGranted, false);
  29. }
  30. }
  31. abstract class EnsurePolicyGrant {
  32. Future<void> onPolicyGrant();
  33. }