Jonny Borges
Committed by GitHub

Bump to 2.7.0

  1 +## [2.7.0]
  2 +- Added obx, a simple state interceptor.
  3 +- Improve Bindings, ListX, and fix docs typos
  4 +
1 ## [2.6.3] 5 ## [2.6.3]
2 - Flutter currently has a problem on some devices where using showModalBottomSheet() can cause TextFields to be hidden behind the keyboard (https://github.com/flutter/flutter/issues/18564) this issue is closed, even users reporting that the problem still occurs. 6 - Flutter currently has a problem on some devices where using showModalBottomSheet() can cause TextFields to be hidden behind the keyboard (https://github.com/flutter/flutter/issues/18564) this issue is closed, even users reporting that the problem still occurs.
3 The problem happens casually, as well as the problem of the snackbar on the iPhone SE 2, and checking the code, I realized that a padding with MediaQuery.of(context).viewInsets.bottom is missing inside the bottomSheet to make it work correctly, since it does not have any constraint with the keyboard. 7 The problem happens casually, as well as the problem of the snackbar on the iPhone SE 2, and checking the code, I realized that a padding with MediaQuery.of(context).viewInsets.bottom is missing inside the bottomSheet to make it work correctly, since it does not have any constraint with the keyboard.
@@ -905,13 +905,13 @@ You can create Global settings for Get. Just add Get.config to your code before @@ -905,13 +905,13 @@ You can create Global settings for Get. Just add Get.config to your code before
905 905
906 ```dart 906 ```dart
907 907
908 -GetMaterialApp(  
909 - enableLog: true,  
910 - defaultTransition: Transitions.fade,  
911 - defaultOpaqueRoute: Get.isOpaqueRouteDefault,  
912 - defaultPopGesture: Get.isPopGestureEnable,  
913 - defaultDurationTransition: Get.defaultDurationTransition,  
914 - defaultGlobalState: Get.defaultGlobalState, 908 +GetMaterialApp(
  909 + enableLog: true,
  910 + defaultTransition: Transition.fade,
  911 + opaqueRoute: Get.isOpaqueRouteDefault,
  912 + popGesture: Get.isPopGestureEnable,
  913 + transitionDuration: Get.defaultDurationTransition,
  914 + defaultGlobalState: Get.defaultGlobalState,
915 ); 915 );
916 916
917 Get.config( 917 Get.config(

38.6 KB | W: | H:

40.4 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
@@ -9,6 +9,7 @@ export 'src/state/get_state.dart'; @@ -9,6 +9,7 @@ export 'src/state/get_state.dart';
9 export 'src/rx/rx_interface.dart'; 9 export 'src/rx/rx_interface.dart';
10 export 'src/rx/rx_impl.dart'; 10 export 'src/rx/rx_impl.dart';
11 export 'src/rx/rx_event.dart'; 11 export 'src/rx/rx_event.dart';
  12 +export 'src/rx/rx_obx.dart';
12 export 'src/rx/rx_getbuilder.dart'; 13 export 'src/rx/rx_getbuilder.dart';
13 export 'src/root/root_widget.dart'; 14 export 'src/root/root_widget.dart';
14 export 'src/routes/default_route.dart'; 15 export 'src/routes/default_route.dart';
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 import 'package:flutter/scheduler.dart'; 2 import 'package:flutter/scheduler.dart';
  3 +import 'package:get/get.dart';
3 import 'package:get/src/routes/bindings_interface.dart'; 4 import 'package:get/src/routes/bindings_interface.dart';
4 import 'bottomsheet/bottomsheet.dart'; 5 import 'bottomsheet/bottomsheet.dart';
5 import 'platform/platform.dart'; 6 import 'platform/platform.dart';
@@ -721,6 +722,12 @@ class Get { @@ -721,6 +722,12 @@ class Get {
721 static void remove<S>({String name}) { 722 static void remove<S>({String name}) {
722 String key = _getKey(S, name); 723 String key = _getKey(S, name);
723 _FcBuilder builder = Get()._singl[key]; 724 _FcBuilder builder = Get()._singl[key];
  725 + final i = builder.dependency;
  726 +
  727 + if (i is DisposableInterface || i is GetController) {
  728 + i.onClose();
  729 + if (isLogEnable) print('[GET] onClose of $key called');
  730 + }
724 if (builder != null) builder.dependency = null; 731 if (builder != null) builder.dependency = null;
725 if (Get()._singl.containsKey(key)) { 732 if (Get()._singl.containsKey(key)) {
726 print('error on remove $key'); 733 print('error on remove $key');
@@ -739,13 +746,22 @@ class Get { @@ -739,13 +746,22 @@ class Get {
739 } 746 }
740 747
741 /// Delete class instance on [S] and clean memory 748 /// Delete class instance on [S] and clean memory
742 - static bool delete<S>({String name}) { 749 + static Future<bool> delete<S>({String name}) async {
743 String key = _getKey(S, name); 750 String key = _getKey(S, name);
744 751
745 if (!Get()._singl.containsKey(key)) { 752 if (!Get()._singl.containsKey(key)) {
746 print('Instance $key not found'); 753 print('Instance $key not found');
747 return false; 754 return false;
748 } 755 }
  756 +
  757 + _FcBuilder builder = Get()._singl[key];
  758 + final i = builder.dependency;
  759 +
  760 + if (i is DisposableInterface || i is GetController) {
  761 + await i.onClose();
  762 + if (isLogEnable) print('[GET] onClose of $key called');
  763 + }
  764 +
749 Get()._singl.removeWhere((oldkey, value) => (oldkey == key)); 765 Get()._singl.removeWhere((oldkey, value) => (oldkey == key));
750 if (Get()._singl.containsKey(key)) { 766 if (Get()._singl.containsKey(key)) {
751 print('error on remove object $key'); 767 print('error on remove object $key');
@@ -766,7 +782,7 @@ class Get { @@ -766,7 +782,7 @@ class Get {
766 782
767 static RouteSettings get routeSettings => Get()._settings; 783 static RouteSettings get routeSettings => Get()._settings;
768 784
769 - Routing _routing; 785 + Routing _routing = Routing();
770 786
771 Map<String, String> _parameters = {}; 787 Map<String, String> _parameters = {};
772 788
@@ -860,6 +876,9 @@ class Get { @@ -860,6 +876,9 @@ class Get {
860 /// give access to Theme.of(context).iconTheme.color 876 /// give access to Theme.of(context).iconTheme.color
861 static Color get iconColor => Theme.of(context).iconTheme.color; 877 static Color get iconColor => Theme.of(context).iconTheme.color;
862 878
  879 + /// give access to Focus.of(context).iconTheme.color
  880 + static FocusScopeNode get focusScope => FocusScope.of(context);
  881 +
863 /// give access to MediaQuery.of(context).size.height 882 /// give access to MediaQuery.of(context).size.height
864 static double get height => MediaQuery.of(context).size.height; 883 static double get height => MediaQuery.of(context).size.height;
865 884
@@ -75,11 +75,11 @@ class _GetXState<T extends RxController> extends State<GetX<T>> { @@ -75,11 +75,11 @@ class _GetXState<T extends RxController> extends State<GetX<T>> {
75 75
76 if (isCreator) { 76 if (isCreator) {
77 if (widget.autoRemove && Get.isRegistred<T>()) { 77 if (widget.autoRemove && Get.isRegistred<T>()) {
78 - controller.onClose(); 78 + // controller.onClose();
79 Get.delete<T>(); 79 Get.delete<T>();
80 } 80 }
81 - } else {  
82 - controller.onClose(); 81 + // } else {
  82 + // controller.onClose();
83 } 83 }
84 // controller.onClose(); 84 // controller.onClose();
85 _observer.close(); 85 _observer.close();
@@ -245,6 +245,13 @@ class ListX<E> extends DelegatingList<E> implements List<E>, RxInterface<E> { @@ -245,6 +245,13 @@ class ListX<E> extends DelegatingList<E> implements List<E>, RxInterface<E> {
245 }); 245 });
246 } 246 }
247 247
  248 + // @override
  249 + // int get length => list.length;
  250 +
  251 + // List<E> get list => value as List<E>;
  252 +
  253 + // set list(List<E> v) => assignAll(v);
  254 +
248 @override 255 @override
249 get value { 256 get value {
250 if (Get.obs != null) { 257 if (Get.obs != null) {
@@ -375,12 +382,12 @@ extension MapExtension on Map { @@ -375,12 +382,12 @@ extension MapExtension on Map {
375 } 382 }
376 } 383 }
377 384
378 -extension ListExtension on List {  
379 - ListX get obs { 385 +extension ListExtension<E> on List<E> {
  386 + ListX<E> get obs {
380 if (this != null) 387 if (this != null)
381 - return ListX()..assignAll(this); 388 + return ListX<E>()..assignAll(this);
382 else 389 else
383 - return ListX(null); 390 + return ListX<E>(null);
384 } 391 }
385 } 392 }
386 393
  1 +import 'dart:async';
  2 +import 'package:flutter/widgets.dart';
  3 +import 'package:get/src/rx/rx_interface.dart';
  4 +import '../get_main.dart';
  5 +import 'rx_impl.dart';
  6 +
  7 +Widget obx(Widget Function() builder) {
  8 + final b = builder;
  9 + return Obx(
  10 + builder: b,
  11 + );
  12 +}
  13 +
  14 +class Obx extends StatefulWidget {
  15 + final Widget Function() builder;
  16 +
  17 + const Obx({
  18 + this.builder,
  19 + });
  20 + _ObxState createState() => _ObxState();
  21 +}
  22 +
  23 +class _ObxState extends State<Obx> {
  24 + RxInterface _observer;
  25 + StreamSubscription _listenSubscription;
  26 + bool isCreator = false;
  27 +
  28 + _ObxState() {
  29 + _observer = ListX();
  30 + }
  31 +
  32 + @override
  33 + void initState() {
  34 + _listenSubscription = _observer.subject.stream.listen((data) {
  35 + setState(() {});
  36 + });
  37 + super.initState();
  38 + }
  39 +
  40 + @override
  41 + void dispose() {
  42 + _observer.close();
  43 + _listenSubscription?.cancel();
  44 + super.dispose();
  45 + }
  46 +
  47 + @override
  48 + Widget build(BuildContext context) {
  49 + final observer = Get.obs;
  50 + Get.obs = this._observer;
  51 + final result = widget.builder();
  52 + Get.obs = observer;
  53 + return result;
  54 + }
  55 +}
@@ -34,8 +34,8 @@ class GetController extends State { @@ -34,8 +34,8 @@ class GetController extends State {
34 } 34 }
35 } 35 }
36 36
37 - void onClose() {}  
38 - void onInit() {} 37 + void onClose() async {}
  38 + void onInit() async {}
39 39
40 @override 40 @override
41 Widget build(_) => throw ("build method can't be called"); 41 Widget build(_) => throw ("build method can't be called");
@@ -107,7 +107,7 @@ class _GetBuilderState<T extends GetController> extends State<GetBuilder<T>> { @@ -107,7 +107,7 @@ class _GetBuilderState<T extends GetController> extends State<GetBuilder<T>> {
107 try { 107 try {
108 controller?.onInit(); 108 controller?.onInit();
109 } catch (e) { 109 } catch (e) {
110 - if (Get.isLogEnable) print("Controller is not attach"); 110 + if (Get.isLogEnable) print("[GET] error: $e");
111 } 111 }
112 } 112 }
113 } 113 }
@@ -120,7 +120,7 @@ class _GetBuilderState<T extends GetController> extends State<GetBuilder<T>> { @@ -120,7 +120,7 @@ class _GetBuilderState<T extends GetController> extends State<GetBuilder<T>> {
120 120
121 if (isCreator) { 121 if (isCreator) {
122 if (widget.autoRemove && Get.isRegistred<T>()) { 122 if (widget.autoRemove && Get.isRegistred<T>()) {
123 - controller.onClose(); 123 + // controller.onClose();
124 controller._allStates.remove(real); 124 controller._allStates.remove(real);
125 Get.delete<T>(); 125 Get.delete<T>();
126 } 126 }
1 name: get 1 name: get
2 description: Open screens/snackbars/dialogs/bottomSheets without context, manage states and inject dependencies easily with Get. 2 description: Open screens/snackbars/dialogs/bottomSheets without context, manage states and inject dependencies easily with Get.
3 -version: 2.6.3 3 +version: 2.7.0
4 homepage: https://github.com/jonataslaw/get 4 homepage: https://github.com/jonataslaw/get
5 5
6 environment: 6 environment: