mirror of
				https://github.com/immich-app/immich.git
				synced 2025-10-30 18:22:37 -04:00 
			
		
		
		
	* chore: bump dart sdk to 3.8 * chore: make build * make pigeon * chore: format files --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
		
			
				
	
	
		
			37 lines
		
	
	
		
			940 B
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			940 B
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:async/async.dart';
 | |
| import 'package:flutter/material.dart';
 | |
| import 'package:flutter_hooks/flutter_hooks.dart';
 | |
| 
 | |
| RestartableTimer useTimer(Duration duration, void Function() callback) {
 | |
|   return use(_TimerHook(duration: duration, callback: callback));
 | |
| }
 | |
| 
 | |
| class _TimerHook extends Hook<RestartableTimer> {
 | |
|   final Duration duration;
 | |
|   final void Function() callback;
 | |
| 
 | |
|   const _TimerHook({required this.duration, required this.callback});
 | |
|   @override
 | |
|   HookState<RestartableTimer, Hook<RestartableTimer>> createState() => _TimerHookState();
 | |
| }
 | |
| 
 | |
| class _TimerHookState extends HookState<RestartableTimer, _TimerHook> {
 | |
|   late RestartableTimer timer;
 | |
|   @override
 | |
|   void initHook() {
 | |
|     super.initHook();
 | |
|     timer = RestartableTimer(hook.duration, hook.callback);
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   RestartableTimer build(BuildContext context) {
 | |
|     return timer;
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   void dispose() {
 | |
|     timer.cancel();
 | |
|     super.dispose();
 | |
|   }
 | |
| }
 |