49 lines
1.0 KiB
Dart
49 lines
1.0 KiB
Dart
import 'package:flutter/foundation.dart';
|
|
import 'package:logger/logger.dart';
|
|
import '../logger.dart';
|
|
|
|
class BaseViewModel extends ChangeNotifier {
|
|
String _title;
|
|
bool _busy;
|
|
Logger log;
|
|
bool _isDisposed = false;
|
|
|
|
BaseViewModel({
|
|
bool busy = false,
|
|
String title,
|
|
}) : _busy = busy,
|
|
_title = title {
|
|
log = getLogger(title ?? this.runtimeType.toString());
|
|
}
|
|
|
|
bool get busy => this._busy;
|
|
bool get isDisposed => this._isDisposed;
|
|
String get title => _title ?? this.runtimeType.toString();
|
|
|
|
set busy(bool busy) {
|
|
log.i(
|
|
'busy: '
|
|
'$title is entering '
|
|
'${busy ? 'busy' : 'free'} state',
|
|
);
|
|
this._busy = busy;
|
|
notifyListeners();
|
|
}
|
|
|
|
@override
|
|
void notifyListeners() {
|
|
if (!isDisposed) {
|
|
super.notifyListeners();
|
|
} else {
|
|
log.w('notifyListeners: Notify listeners called after '
|
|
'${title ?? this.runtimeType.toString()} has been disposed');
|
|
}
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
log.i('dispose');
|
|
_isDisposed = true;
|
|
super.dispose();
|
|
}
|
|
} |