import 'dart:async'; import 'package:rxdart/rxdart.dart'; import 'package:star_lock/debug/log.dart'; class DebugConsoleController { final List logs; final _streamController = BehaviorSubject>(); DebugConsoleController({ List? logs }) : logs = logs ?? []; Stream> get stream => _streamController.stream; void close() => _streamController.close(); void notifyUpdate() => _streamController.add(logs); void log( Object? message, { DebugConsoleLevel level = DebugConsoleLevel.normal, DateTime? timestamp, StackTrace? stackTrace, }) { logs.add( DebugConsoleLog( message: message, level: level, timestamp: timestamp, stackTrace: stackTrace, ) ); notifyUpdate(); } List getLogsByLevel(DebugConsoleLevel level) { return logs.where((log) => log.level == level).toList(); } void clear() { logs.clear(); notifyUpdate(); } }