import 'package:flutter/widgets.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:weblibre/utils/sampled_value_notifier.dart'; /// A custom hook that creates a sampled ValueNotifier from another ValueNotifier ValueNotifier useSampledValueNotifier({ required ValueNotifier source, required Duration sampleDuration, }) { return use( _SampledValueNotifierHook( source: source, sampleDuration: sampleDuration, ), ); } /// Hook implementation for sampled ValueNotifier class _SampledValueNotifierHook extends Hook> { final ValueNotifier source; final Duration sampleDuration; const _SampledValueNotifierHook({ required this.source, required this.sampleDuration, }); @override _SampledValueNotifierHookState createState() => _SampledValueNotifierHookState(); } class _SampledValueNotifierHookState extends HookState, _SampledValueNotifierHook> { late SampledValueNotifier _sampledNotifier; @override void initHook() { super.initHook(); _sampledNotifier = SampledValueNotifier( source: hook.source, sampleDuration: hook.sampleDuration, ); } @override ValueNotifier build(BuildContext context) { return _sampledNotifier; } @override void dispose() { _sampledNotifier.dispose(); super.dispose(); } @override String get debugLabel => 'useSampledValueNotifier<$T>'; }