mirror of
https://gitlab.com/mysocialportal/relatica
synced 2024-10-18 11:13:31 +00:00
Add initial FocusModeProvider
This commit is contained in:
parent
764c89425d
commit
84b933f208
2 changed files with 61 additions and 0 deletions
36
lib/riverpod_controllers/focus_mode.dart
Normal file
36
lib/riverpod_controllers/focus_mode.dart
Normal file
|
@ -0,0 +1,36 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
|
||||
part 'focus_mode.g.dart';
|
||||
|
||||
class FocusModeData {
|
||||
final DateTime? disableTime;
|
||||
final bool enabled;
|
||||
|
||||
const FocusModeData(this.enabled, {this.disableTime});
|
||||
}
|
||||
|
||||
@riverpod
|
||||
class FocusMode extends _$FocusMode {
|
||||
Timer? _disableTimer;
|
||||
|
||||
void setMode(FocusModeData newMode) {
|
||||
_disableTimer?.cancel();
|
||||
if (newMode.enabled && newMode.disableTime != null) {
|
||||
_disableTimer =
|
||||
Timer(newMode.disableTime!.difference(DateTime.now()), () {
|
||||
print('disabling mode');
|
||||
state = const FocusModeData(false);
|
||||
});
|
||||
}
|
||||
print('New focus mode: $newMode');
|
||||
state = newMode;
|
||||
}
|
||||
|
||||
@override
|
||||
FocusModeData build() {
|
||||
state = const FocusModeData(false);
|
||||
return state;
|
||||
}
|
||||
}
|
25
lib/riverpod_controllers/focus_mode.g.dart
Normal file
25
lib/riverpod_controllers/focus_mode.g.dart
Normal file
|
@ -0,0 +1,25 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'focus_mode.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$focusModeHash() => r'7ef6b8dec35f671619459b4af61123f90665e4b0';
|
||||
|
||||
/// See also [FocusMode].
|
||||
@ProviderFor(FocusMode)
|
||||
final focusModeProvider =
|
||||
AutoDisposeNotifierProvider<FocusMode, FocusModeData>.internal(
|
||||
FocusMode.new,
|
||||
name: r'focusModeProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product') ? null : _$focusModeHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$FocusMode = AutoDisposeNotifier<FocusModeData>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
Loading…
Reference in a new issue