import 'dart:async'; import 'package:flutter/foundation.dart'; import 'package:thesis_shop/utils/disposable.dart'; @immutable class UserEvent { final bool isSignedIn; const UserEvent({required this.isSignedIn}); } class UserBloc implements Disposable { bool _isSignedIn = false; bool get isSignedIn => _isSignedIn; final _isSignedInController = StreamController.broadcast(); Stream get isSignedInStream => _isSignedInController.stream; final _userEventController = StreamController.broadcast(); Sink get userEventSink => _userEventController.sink; UserBloc() { _userEventController.stream.listen(_handleEvent); } void _handleEvent(UserEvent event) { _isSignedIn = event.isSignedIn; _isSignedInController.add(event.isSignedIn); } @override Future dispose() async { await _isSignedInController.close(); await _userEventController.close(); } }