31 lines
		
	
	
		
			814 B
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			814 B
		
	
	
	
		
			Dart
		
	
	
	
	
	
import "dart:async";
 | 
						|
import "package:flutter/material.dart";
 | 
						|
import "package:hooks_riverpod/hooks_riverpod.dart";
 | 
						|
 | 
						|
final appLifecycleStateProvider = StreamProvider<AppLifecycleState>((ref) {
 | 
						|
  final controller = StreamController<AppLifecycleState>();
 | 
						|
 | 
						|
  final observer = _AppLifecycleObserver((state) {
 | 
						|
    if (controller.isClosed) return;
 | 
						|
    controller.add(state);
 | 
						|
  });
 | 
						|
  WidgetsBinding.instance.addObserver(observer);
 | 
						|
 | 
						|
  ref.onDispose(() {
 | 
						|
    WidgetsBinding.instance.removeObserver(observer);
 | 
						|
    controller.close();
 | 
						|
  });
 | 
						|
 | 
						|
  return controller.stream;
 | 
						|
});
 | 
						|
 | 
						|
class _AppLifecycleObserver extends WidgetsBindingObserver {
 | 
						|
  final ValueChanged<AppLifecycleState> onChange;
 | 
						|
  _AppLifecycleObserver(this.onChange);
 | 
						|
 | 
						|
  @override
 | 
						|
  void didChangeAppLifecycleState(AppLifecycleState state) {
 | 
						|
    onChange(state);
 | 
						|
  }
 | 
						|
}
 |