You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
940 B
37 lines
940 B
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<bool>.broadcast();
|
|
Stream<bool> get isSignedInStream => _isSignedInController.stream;
|
|
|
|
final _userEventController = StreamController<UserEvent>.broadcast();
|
|
Sink<UserEvent> get userEventSink => _userEventController.sink;
|
|
|
|
UserBloc() {
|
|
_userEventController.stream.listen(_handleEvent);
|
|
}
|
|
|
|
void _handleEvent(UserEvent event) {
|
|
_isSignedIn = event.isSignedIn;
|
|
_isSignedInController.add(event.isSignedIn);
|
|
}
|
|
|
|
@override
|
|
Future<void> dispose() async {
|
|
await _isSignedInController.close();
|
|
await _userEventController.close();
|
|
}
|
|
}
|
|
|