import 'dart:collection'; import 'package:flutter/foundation.dart'; import 'package:logging/logging.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'log_service.g.dart'; const _defaultMaxItems = 1000; @Riverpod(keepAlive: true) class LogService extends _$LogService { final _maxItems = _defaultMaxItems; final _events = Queue(); @override UnmodifiableListView build() { Logger.root.onRecord.listen((event) { add(event); }); return UnmodifiableListView(_events); } void add(LogRecord event) { final logName = event.loggerName.isEmpty ? 'ROOT' : event.loggerName; final msg = '${event.level.name} - $logName @ ${event.time}: ${event.message}'; debugPrint(msg); _events.add(event); if (_events.length > _maxItems) { _events.removeFirst(); } ref.invalidateSelf(); } } //const _defaultMaxItems = 1000; // // class LogService extends ChangeNotifier { // var maxItems = _defaultMaxItems; // // final _events = Queue(); // // List get events => UnmodifiableListView(_events); // // void add(LogRecord event) { // // final logName = event.loggerName.isEmpty ? 'ROOT' : event.loggerName; // // final msg = // // '${event.level.name} - $logName @ ${event.time}: ${event.message}'; // // print(msg); // _events.add(event); // if (_events.length > maxItems) { // _events.removeFirst(); // } // notifyListeners(); // } // }