1
0
Fork 0
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.
 
 
 
 
 
thesis_shop/lib/bloc/user_bloc.dart

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();
}
}