Jonatas

change value property to be protected

... ... @@ -3,7 +3,7 @@ import 'package:get/get.dart';
import '../../domain/adapters/repository_adapter.dart';
import '../../domain/entity/cases_model.dart';
class HomeController extends GetxController with StatusMixin<CasesModel> {
class HomeController extends GetxController with StateMixin<CasesModel> {
HomeController({this.homeRepository});
/// inject repo abstraction dependency
... ...
... ... @@ -29,9 +29,9 @@ class CountryView extends GetView<HomeController> {
),
body: Center(
child: ListView.builder(
itemCount: controller.value.countries.length,
itemCount: controller.state.countries.length,
itemBuilder: (context, index) {
final country = controller.value.countries[index];
final country = controller.state.countries[index];
return ListTile(
onTap: () {
Get.toNamed('/details', arguments: country);
... ...
... ... @@ -27,7 +27,7 @@ class HomeView extends GetView<HomeController> {
centerTitle: true,
),
body: Center(
child: controller(
child: controller.obx(
(state) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
... ...
... ... @@ -65,12 +65,12 @@ void main() {
await Future.delayed(Duration(milliseconds: 100));
if (controller.status.isError) {
expect(controller.value, null);
expect(controller.state, null);
}
if (controller.status.isSuccess) {
expect(controller.value.global.totalDeaths, 100);
expect(controller.value.global.totalConfirmed, 200);
expect(controller.state.global.totalDeaths, 100);
expect(controller.state.global.totalConfirmed, 200);
}
});
... ...
... ... @@ -5,7 +5,7 @@ import '../../../instance_manager.dart';
import '../../get_state_manager.dart';
import '../simple/list_notifier.dart';
mixin StatusMixin<T> on ListNotifier {
mixin StateMixin<T> on ListNotifier {
T _value;
RxStatus _status;
... ... @@ -31,11 +31,15 @@ mixin StatusMixin<T> on ListNotifier {
return _status ??= _status = RxStatus.loading();
}
T get state => value;
@protected
T get value {
notifyChildrens();
return _value;
}
@protected
set value(T newValue) {
if (_value == newValue) return;
_value = newValue;
... ... @@ -60,13 +64,33 @@ mixin StatusMixin<T> on ListNotifier {
}
class Value<T> extends ListNotifier
with StatusMixin<T>
with StateMixin<T>
implements ValueListenable<T> {
Value(T val) {
_value = val;
_fillEmptyStatus();
}
@override
T get value {
notifyChildrens();
return _value;
}
@override
set value(T newValue) {
if (_value == newValue) return;
_value = newValue;
refresh();
}
T call([T v]) {
if (v != null) {
value = v;
}
return value;
}
void update(void fn(T value)) {
fn(value);
refresh();
... ... @@ -97,8 +121,8 @@ abstract class GetNotifier<T> extends Value<T> with GetLifeCycleBase {
}
}
extension StateExt<T> on StatusMixin<T> {
Widget call(NotifierBuilder<T> widget, {Widget onError, Widget onLoading}) {
extension StateExt<T> on StateMixin<T> {
Widget obx(NotifierBuilder<T> widget, {Widget onError, Widget onLoading}) {
assert(widget != null);
return SimpleBuilder(builder: (_) {
if (status.isLoading) {
... ...