Jonatas

improve lifecycle

1 import 'package:flutter/widgets.dart'; 1 import 'package:flutter/widgets.dart';
2 import 'package:get_instance/get_instance.dart'; 2 import 'package:get_instance/get_instance.dart';
  3 +import '../rx_flutter/rx_disposable.dart';
3 4
4 /// GetView is a great way of quickly access your Controller 5 /// GetView is a great way of quickly access your Controller
5 /// without having to call Get.find<AwesomeController>() yourself. 6 /// without having to call Get.find<AwesomeController>() yourself.
@@ -38,7 +39,8 @@ abstract class GetView<T> extends StatelessWidget { @@ -38,7 +39,8 @@ abstract class GetView<T> extends StatelessWidget {
38 Widget build(BuildContext context); 39 Widget build(BuildContext context);
39 } 40 }
40 41
41 -abstract class GetWidget<T extends GetLifeCycle> extends GetStatelessWidget { 42 +abstract class GetWidget<T extends DisposableInterface>
  43 + extends GetStatelessWidget {
42 GetWidget({Key key}) : super(key: key); 44 GetWidget({Key key}) : super(key: key);
43 45
44 final Set<T> _value = <T>{}; 46 final Set<T> _value = <T>{};
@@ -50,10 +52,6 @@ abstract class GetWidget<T extends GetLifeCycle> extends GetStatelessWidget { @@ -50,10 +52,6 @@ abstract class GetWidget<T extends GetLifeCycle> extends GetStatelessWidget {
50 return _value.first; 52 return _value.first;
51 } 53 }
52 54
53 - // void restartChilds(){  
54 -  
55 - // }  
56 -  
57 @override 55 @override
58 Widget build(BuildContext context); 56 Widget build(BuildContext context);
59 } 57 }
@@ -93,33 +91,25 @@ class GetStatelessElement extends ComponentElement { @@ -93,33 +91,25 @@ class GetStatelessElement extends ComponentElement {
93 rebuild(); 91 rebuild();
94 } 92 }
95 93
96 - void forceAppUpdate() {  
97 - void restart(Element element) {  
98 - element.markNeedsBuild();  
99 - element.rebuild();  
100 - element.visitChildren(restart);  
101 - }  
102 -  
103 - markNeedsBuild();  
104 - rebuild();  
105 -  
106 - visitChildren(restart);  
107 - }  
108 -  
109 @override 94 @override
110 void mount(Element parent, dynamic newSlot) { 95 void mount(Element parent, dynamic newSlot) {
111 - widget.controller?.onStart(); 96 + if (widget?.controller?.initialized != null &&
  97 + !widget.controller.initialized) {
  98 + widget?.controller?.onStart();
  99 + }
  100 +
112 super.mount(parent, newSlot); 101 super.mount(parent, newSlot);
113 } 102 }
114 103
115 @override 104 @override
116 void unmount() { 105 void unmount() {
117 - widget.controller?.onClose(); 106 + widget?.controller?.onClose();
118 super.unmount(); 107 super.unmount();
119 } 108 }
120 } 109 }
121 110
122 -abstract class GetStatelessWidget<T extends GetLifeCycle> extends Widget { 111 +abstract class GetStatelessWidget<T extends DisposableInterface>
  112 + extends Widget {
123 const GetStatelessWidget({Key key}) : super(key: key); 113 const GetStatelessWidget({Key key}) : super(key: key);
124 @override 114 @override
125 GetStatelessElement createElement() => GetStatelessElement(this); 115 GetStatelessElement createElement() => GetStatelessElement(this);