Jonny Borges
Committed by GitHub

Merge pull request #2912 from jonataslaw/back-legacy

feat: add Get.backLegacy()
  1 +## [5.0.0-release-candidate-5]
  2 +
  3 +-Fix nested route issues, fixed issues in the latest flutter version
  4 +
1 ## [5.0.0-release-candidate-4] 5 ## [5.0.0-release-candidate-4]
  6 +
2 -Fix changeThemeMode and RxList 7 -Fix changeThemeMode and RxList
3 8
4 ## [5.0.0-release-candidate-3] 9 ## [5.0.0-release-candidate-3]
  10 +
5 -Fix changeTheme 11 -Fix changeTheme
6 12
7 ## [5.0.0-release-candidate-2] 13 ## [5.0.0-release-candidate-2]
  14 +
8 This version adds built-in support for animation in Flutter in an easy, clear way, and without having to create a StatefulWidget with controllers and animations. All you need to do is call the name of the animation. 15 This version adds built-in support for animation in Flutter in an easy, clear way, and without having to create a StatefulWidget with controllers and animations. All you need to do is call the name of the animation.
9 16
10 If you want to add a "fadeIn" effect to any widget, simply add .fadeIn() to the end of it. 17 If you want to add a "fadeIn" effect to any widget, simply add .fadeIn() to the end of it.
@@ -17,7 +24,6 @@ If you want to add a "fadeIn" effect to any widget, simply add .fadeIn() to the @@ -17,7 +24,6 @@ If you want to add a "fadeIn" effect to any widget, simply add .fadeIn() to the
17 ).fadeIn(), 24 ).fadeIn(),
18 ``` 25 ```
19 26
20 -  
21 https://user-images.githubusercontent.com/35742643/221383556-075a0b71-1617-4a31-a3c7-1acc68732f59.mp4 27 https://user-images.githubusercontent.com/35742643/221383556-075a0b71-1617-4a31-a3c7-1acc68732f59.mp4
22 28
23 Maybe you want to merge two or more animations, just concatenate them at the end of the widget. 29 Maybe you want to merge two or more animations, just concatenate them at the end of the widget.
@@ -32,7 +38,6 @@ Maybe you want to merge two or more animations, just concatenate them at the end @@ -32,7 +38,6 @@ Maybe you want to merge two or more animations, just concatenate them at the end
32 38
33 https://user-images.githubusercontent.com/35742643/221383613-9044c92f-7c6b-48c4-aa79-0a0c20d4068a.mp4 39 https://user-images.githubusercontent.com/35742643/221383613-9044c92f-7c6b-48c4-aa79-0a0c20d4068a.mp4
34 40
35 -  
36 Creating animation sequences in Flutter is one of the most painful things to do with the framework. You need to create tons of AnimationControllers. Well, using GetX 5 you just need to tell your animation that it is sequential. Just like that. 41 Creating animation sequences in Flutter is one of the most painful things to do with the framework. You need to create tons of AnimationControllers. Well, using GetX 5 you just need to tell your animation that it is sequential. Just like that.
37 42
38 ```dart 43 ```dart
@@ -47,22 +52,23 @@ Creating animation sequences in Flutter is one of the most painful things to do @@ -47,22 +52,23 @@ Creating animation sequences in Flutter is one of the most painful things to do
47 52
48 Result: 53 Result:
49 54
50 -  
51 https://user-images.githubusercontent.com/35742643/221393968-20cb2411-516b-44a7-8b85-45090bece532.mp4 55 https://user-images.githubusercontent.com/35742643/221393968-20cb2411-516b-44a7-8b85-45090bece532.mp4
52 56
53 -  
54 ## [5.0.0-release-candidate] 57 ## [5.0.0-release-candidate]
  58 +
55 Refactor StateManager, RouteManager and InstanceManager from scratch 59 Refactor StateManager, RouteManager and InstanceManager from scratch
56 -Fixed Bugs  
57 -Added a Scopped DI  
58 -Api now uses Navigator 2 60 +Fixed Bugs
  61 +Added a Scopped DI
  62 +Api now uses Navigator 2
59 Added new RouteOutlet 63 Added new RouteOutlet
60 -Added a new futurize method to StateMixin, that tracks updates, errors, and states programatically, 64 +Added a new futurize method to StateMixin, that tracks updates, errors, and states programatically,
61 65
62 ## [4.6.1] 66 ## [4.6.1]
  67 +
63 Fix GetConnect on Flutter web 68 Fix GetConnect on Flutter web
64 69
65 ## [4.6.0] 70 ## [4.6.0]
  71 +
66 Add useInheritedMediaQuery to GetMaterialApp and GetCupertinoApp (@davidhole) 72 Add useInheritedMediaQuery to GetMaterialApp and GetCupertinoApp (@davidhole)
67 Add Circular reveal Transition (@parmarravi) 73 Add Circular reveal Transition (@parmarravi)
68 Add request to failed response (@heftekharm) 74 Add request to failed response (@heftekharm)
@@ -74,11 +80,12 @@ Add proxy setting support to GetConnect (@jtans) @@ -74,11 +80,12 @@ Add proxy setting support to GetConnect (@jtans)
74 Fix markAsDirty used on permanent controllers (@zenalex) 80 Fix markAsDirty used on permanent controllers (@zenalex)
75 Update Korean readme (@dumbokim) 81 Update Korean readme (@dumbokim)
76 82
77 -  
78 ## [4.5.1] 83 ## [4.5.1]
  84 +
79 Fix Snackbar when it have action and icon the same time 85 Fix Snackbar when it have action and icon the same time
80 86
81 ## [4.5.0] - Big Update 87 ## [4.5.0] - Big Update
  88 +
82 To have a page-agnostic snackbar, we used OverlayRoute to display a partial route. 89 To have a page-agnostic snackbar, we used OverlayRoute to display a partial route.
83 However this had several problems: 90 However this had several problems:
84 91
@@ -128,23 +135,23 @@ Breaking and Depreciation: @@ -128,23 +135,23 @@ Breaking and Depreciation:
128 GetBar is now deprecated, use GetSnackbar instead. 135 GetBar is now deprecated, use GetSnackbar instead.
129 dismissDirection now gets a DismissDirection, making the Snackbar more customizable. 136 dismissDirection now gets a DismissDirection, making the Snackbar more customizable.
130 137
  138 +## [4.3.8]
131 139
132 -  
133 -  
134 -  
135 -## [4.3.8]  
136 - Fix nav2 toNamed remove the route 140 - Fix nav2 toNamed remove the route
137 141
138 -## [4.3.7] 142 +## [4.3.7]
  143 +
139 - Fix wrong currentRoute when a route is removed 144 - Fix wrong currentRoute when a route is removed
140 - Remove take that limits the router outlet depth (@steven-spiel) 145 - Remove take that limits the router outlet depth (@steven-spiel)
141 146
142 -## [4.3.6] 147 +## [4.3.6]
  148 +
143 - Fix error with autodispose of additional dependencies beyond GetxController 149 - Fix error with autodispose of additional dependencies beyond GetxController
144 - Added ability to add your own delegate to RouterOutlet (@steven-spiel) 150 - Added ability to add your own delegate to RouterOutlet (@steven-spiel)
145 - Added listenAndPump to Rx to give Rx the same behavior as BehaviorSubject (@steven-spiel) 151 - Added listenAndPump to Rx to give Rx the same behavior as BehaviorSubject (@steven-spiel)
146 152
147 -## [4.3.5] 153 +## [4.3.5]
  154 +
148 - Fix GetConnect timeout (@jasonlaw) 155 - Fix GetConnect timeout (@jasonlaw)
149 - Improve Vietnamese docs (@hp1909) 156 - Improve Vietnamese docs (@hp1909)
150 - Refactor placeholder name route to unnamed routes (@roipeker). 157 - Refactor placeholder name route to unnamed routes (@roipeker).
@@ -152,42 +159,51 @@ dismissDirection now gets a DismissDirection, making the Snackbar more customiza @@ -152,42 +159,51 @@ dismissDirection now gets a DismissDirection, making the Snackbar more customiza
152 - Fix: Wrong nameRoute after a route is removed 159 - Fix: Wrong nameRoute after a route is removed
153 - Added assert to prevent the user from starting a route name without slash. 160 - Added assert to prevent the user from starting a route name without slash.
154 161
155 -## [4.3.4] 162 +## [4.3.4]
  163 +
156 - Improve docs 164 - Improve docs
157 165
158 -## [4.3.3] 166 +## [4.3.3]
  167 +
159 - Fix Get.reset 168 - Fix Get.reset
160 169
161 -## [4.3.2] 170 +## [4.3.2]
  171 +
162 - Fix nullable on internacionalization (@jmguillens) 172 - Fix nullable on internacionalization (@jmguillens)
163 - Fix nullable on Rx.stream (@steven-spiel) 173 - Fix nullable on Rx.stream (@steven-spiel)
164 174
165 -## [4.3.1] 175 +## [4.3.1]
  176 +
166 - Fix controller is not removed when keyboard is open. 177 - Fix controller is not removed when keyboard is open.
167 - Improved: Safe removal and insertion of controllers. 178 - Improved: Safe removal and insertion of controllers.
168 179
169 -## [4.3.0] 180 +## [4.3.0]
  181 +
170 - Added GetResponsiveWidget (@ahmednfwela) 182 - Added GetResponsiveWidget (@ahmednfwela)
171 - Added `Get.replace()` (@jwelmac) 183 - Added `Get.replace()` (@jwelmac)
172 - Added Improve korean doc (@sejun2) 184 - Added Improve korean doc (@sejun2)
173 - Fix multiple middlewares redirect (@liasica) 185 - Fix multiple middlewares redirect (@liasica)
174 - Added gestureWidth and showCupertinoParallax to GetPage to customize cupertino transitions 186 - Added gestureWidth and showCupertinoParallax to GetPage to customize cupertino transitions
175 187
176 -## [4.2.5] 188 +## [4.2.5]
  189 +
177 - Added anchorRoute and filterPages to GetRouterOutlet (@ahmednfwela) 190 - Added anchorRoute and filterPages to GetRouterOutlet (@ahmednfwela)
178 - Added scrollBehavior and scaffoldMessengerKey to GetMaterialapp(@ejabu and @alionour) 191 - Added scrollBehavior and scaffoldMessengerKey to GetMaterialapp(@ejabu and @alionour)
179 - Fix error when child on MaterialApp is null (@ahmednfwela) 192 - Fix error when child on MaterialApp is null (@ahmednfwela)
180 - Fix Korean docs (@rws08) 193 - Fix Korean docs (@rws08)
181 - Fix error with onClose called before routeTransition on Get.offNamed 194 - Fix error with onClose called before routeTransition on Get.offNamed
182 195
183 -## [4.2.4] 196 +## [4.2.4]
  197 +
184 - Fix Get.offAll removing GetxServices from memory 198 - Fix Get.offAll removing GetxServices from memory
185 199
186 -## [4.2.3] 200 +## [4.2.3]
  201 +
187 - Fix back button on navigator 2 202 - Fix back button on navigator 2
188 -- Added parameters and arguments to Get.rootDelegate 203 +- Added parameters and arguments to Get.rootDelegate
  204 +
  205 +## [4.2.1]
189 206
190 -## [4.2.1]  
191 - Remove [] from docs to try fix pub score 207 - Remove [] from docs to try fix pub score
192 208
193 ## [4.2.0] - Big update 209 ## [4.2.0] - Big update
@@ -198,101 +214,102 @@ Changes in this version: @@ -198,101 +214,102 @@ Changes in this version:
198 214
199 - Fix: Navigating to the same page with Get.offNamed does not delete the controller from that page using Get.lazyPut. 215 - Fix: Navigating to the same page with Get.offNamed does not delete the controller from that page using Get.lazyPut.
200 216
201 -- Fix Readme GetMiddleware typos  
202 -by @nivisi 217 +- Fix Readme GetMiddleware typos
  218 + by @nivisi
203 219
204 - Fix url replace error 220 - Fix url replace error
205 -by @KevinZhang19870314 221 + by @KevinZhang19870314
206 222
207 -- Changed response default encoding from latin1 to utf8  
208 -by @heftekharm 223 +- Changed response default encoding from latin1 to utf8
  224 + by @heftekharm
209 225
210 - Add Duration in ExtensionBottomSheet 226 - Add Duration in ExtensionBottomSheet
211 -by @chanonpingpong 227 + by @chanonpingpong
212 228
213 - Added compatibility with dart-lang/mockito 229 - Added compatibility with dart-lang/mockito
214 -by @lifez 230 + by @lifez
215 231
216 -- Added extensions methods to convert value in percent value  
217 -by @kauemurakami 232 +- Added extensions methods to convert value in percent value
  233 + by @kauemurakami
218 234
219 -- Set darkTheme equal theme when darkTheme is null  
220 -by @eduardoFlorence 235 +- Set darkTheme equal theme when darkTheme is null
  236 + by @eduardoFlorence
221 237
222 -- Add padding to 'defaultDialog'  
223 -by @KevinZhang19870314 238 +- Add padding to 'defaultDialog'
  239 + by @KevinZhang19870314
224 240
225 -- GraphQLResponse inherit Response info  
226 -by @jasonlaw 241 +- GraphQLResponse inherit Response info
  242 + by @jasonlaw
227 243
228 -- Fix Redundant concatenating base url  
229 -by @jasonlaw 244 +- Fix Redundant concatenating base url
  245 + by @jasonlaw
230 246
231 - Add content type and length into the headers when the content type is 'application/x-www-form-urlencoded' 247 - Add content type and length into the headers when the content type is 'application/x-www-form-urlencoded'
232 -by @calvingit 248 + by @calvingit
233 249
234 -- Make withCredentials configurable  
235 -by @jasonlaw 250 +- Make withCredentials configurable
  251 + by @jasonlaw
236 252
237 - Fix flutter 2.0 error 253 - Fix flutter 2.0 error
238 -by @yunchiri 254 + by @yunchiri
239 255
240 - Allow deleting all registered instances 256 - Allow deleting all registered instances
241 -by @lemps 257 + by @lemps
242 258
243 -- Refactor/rx interface notify children  
244 -@by kranfix 259 +- Refactor/rx interface notify children
  260 + @by kranfix
245 261
246 -- Fixed parameter parsing and middleware sorting  
247 -by @ahmednfwela 262 +- Fixed parameter parsing and middleware sorting
  263 + by @ahmednfwela
248 264
249 -- Improvements to router outlet  
250 -by @ahmednfwela 265 +- Improvements to router outlet
  266 + by @ahmednfwela
251 267
252 -- Minor improvements and bug fixes  
253 -by @ahmednfwela 268 +- Minor improvements and bug fixes
  269 + by @ahmednfwela
254 270
255 -- Adding route guards and improving navigation  
256 -by @ahmednfwela 271 +- Adding route guards and improving navigation
  272 + by @ahmednfwela
257 273
258 - Fix RxInterface.proxy losing its previous value on exception 274 - Fix RxInterface.proxy losing its previous value on exception
259 -by @WillowWisp 275 + by @WillowWisp
260 276
261 - Added dispose() for bottomSheet. 277 - Added dispose() for bottomSheet.
262 -by @furkankurt 278 + by @furkankurt
263 279
264 -- Added Pull request template  
265 -by @unacorbatanegra 280 +- Added Pull request template
  281 + by @unacorbatanegra
266 282
267 - Fix and update documentation: 283 - Fix and update documentation:
268 -@Farid566,  
269 -@galaxykhh,  
270 -@arslee07,  
271 -@GoStaRoff,  
272 -@BondarenkoArtur,  
273 -@denisrudnei,  
274 -@Charly6596,  
275 -@nateshmbhat,  
276 -@hrithikrtiwari,  
277 -@Undeadlol1,  
278 -@rws08,  
279 -@inuyashaaa,  
280 -@broccolism,  
281 -@aadarshadhakalg,  
282 -@ZeroMinJeon  
283 -  
284 -  
285 -## [4.1.4] 284 + @Farid566,
  285 + @galaxykhh,
  286 + @arslee07,
  287 + @GoStaRoff,
  288 + @BondarenkoArtur,
  289 + @denisrudnei,
  290 + @Charly6596,
  291 + @nateshmbhat,
  292 + @hrithikrtiwari,
  293 + @Undeadlol1,
  294 + @rws08,
  295 + @inuyashaaa,
  296 + @broccolism,
  297 + @aadarshadhakalg,
  298 + @ZeroMinJeon
  299 +
  300 +## [4.1.4]
  301 +
286 - Adjust operator + and - to RxInt (@eduardoflorence) 302 - Adjust operator + and - to RxInt (@eduardoflorence)
287 - Fix dark theme (@eduardoflorence) 303 - Fix dark theme (@eduardoflorence)
288 - Fix form-urlencoded on GetConnect (@aramayyes) 304 - Fix form-urlencoded on GetConnect (@aramayyes)
289 305
  306 +## [4.1.3]
290 307
291 -## [4.1.3]  
292 - Fix "Error: A value of type 'Locale?' can't be returned from a function"on flutter web (@nickwri) 308 - Fix "Error: A value of type 'Locale?' can't be returned from a function"on flutter web (@nickwri)
293 - Fix plural translations to expressions >1 (@WolfVic) 309 - Fix plural translations to expressions >1 (@WolfVic)
294 310
295 -## [4.1.2] 311 +## [4.1.2]
  312 +
296 - Fix warning ˜can add data to a closed stream˜ when GetBuilder and Obx are nested 313 - Fix warning ˜can add data to a closed stream˜ when GetBuilder and Obx are nested
297 - Fix get_connect decoder can not be null (@Goddchen) 314 - Fix get_connect decoder can not be null (@Goddchen)
298 - Migrate example code (@3lB4rt0) 315 - Migrate example code (@3lB4rt0)
@@ -303,25 +320,30 @@ by @unacorbatanegra @@ -303,25 +320,30 @@ by @unacorbatanegra
303 - Fix controller is removed when navigate to same page (@eduardoflorence) 320 - Fix controller is removed when navigate to same page (@eduardoflorence)
304 - Fix missing reload() and reloadAll() to Get extensions (@lkloon123) 321 - Fix missing reload() and reloadAll() to Get extensions (@lkloon123)
305 322
  323 +## [4.1.1]
306 324
307 -## [4.1.1]  
308 - Remove mandatory initialValue to nullables types 325 - Remove mandatory initialValue to nullables types
309 326
310 -## [4.1.0] 327 +## [4.1.0]
  328 +
311 - Added Rxn to non nullables reactives types 329 - Added Rxn to non nullables reactives types
312 330
313 -## [4.0.3] 331 +## [4.0.3]
  332 +
314 - Added new linter rules to improve score 333 - Added new linter rules to improve score
315 334
316 -## [4.0.2] 335 +## [4.0.2]
  336 +
317 - Removed "!" of if else conditions until the null-safety of the dart is consistent for using it. 337 - Removed "!" of if else conditions until the null-safety of the dart is consistent for using it.
318 338
319 -## [4.0.1] 339 +## [4.0.1]
  340 +
320 - Fix changelog 341 - Fix changelog
321 342
322 -## [4.0.0] 343 +## [4.0.0]
  344 +
323 - Added append function to StateMixin. Now is possible track loading, success and error handle of your application with ONE LINE OF CODE. Ex: append(()=> api.getUser); 345 - Added append function to StateMixin. Now is possible track loading, success and error handle of your application with ONE LINE OF CODE. Ex: append(()=> api.getUser);
324 -- Migrate to null-safety 346 +- Migrate to null-safety
325 - Added ScrollMixin to controllers 347 - Added ScrollMixin to controllers
326 - Added loadingMore status to RxStatus 348 - Added loadingMore status to RxStatus
327 - Fix content-type qual null (@katekko) 349 - Fix content-type qual null (@katekko)
@@ -339,7 +361,8 @@ You can also use custom Rxn types with null-safety: @@ -339,7 +361,8 @@ You can also use custom Rxn types with null-safety:
339 `RxInt` == not nullable 361 `RxInt` == not nullable
340 `RxnInt` == nullable. 362 `RxnInt` == nullable.
341 363
342 -## [3.25.6] 364 +## [3.25.6]
  365 +
343 - Added documentation in French (@kamazoun) 366 - Added documentation in French (@kamazoun)
344 - Fix logs messages (@damphat) 367 - Fix logs messages (@damphat)
345 - Fix plural to zero on internacionalization (@RafaRuiz) 368 - Fix plural to zero on internacionalization (@RafaRuiz)
@@ -347,33 +370,39 @@ You can also use custom Rxn types with null-safety: @@ -347,33 +370,39 @@ You can also use custom Rxn types with null-safety:
347 - Fix typos on readme (@bashleigh) 370 - Fix typos on readme (@bashleigh)
348 - Fix group updates to GetBuilder 371 - Fix group updates to GetBuilder
349 372
350 -## [3.25.5] 373 +## [3.25.5]
  374 +
351 - Fix Get.isDialogOpen when two or more open dialogs are closed 375 - Fix Get.isDialogOpen when two or more open dialogs are closed
352 376
353 -## [3.25.4] 377 +## [3.25.4]
  378 +
354 - Added logs and tests to unknownRoute 379 - Added logs and tests to unknownRoute
355 380
356 -## [3.25.3] 381 +## [3.25.3]
  382 +
357 - Fix bindStream error 'Object.noSuchMethod'. 383 - Fix bindStream error 'Object.noSuchMethod'.
358 384
359 -## [3.25.2] 385 +## [3.25.2]
  386 +
360 - Improved Workers system to accept a list of works 387 - Improved Workers system to accept a list of works
361 388
362 -## [3.25.1] 389 +## [3.25.1]
  390 +
363 - Improved the log system to display the tag used in the controller that was created. 391 - Improved the log system to display the tag used in the controller that was created.
364 392
365 ## [3.25.0] - Big update 393 ## [3.25.0] - Big update
  394 +
366 - Added [reload] and [reloadAll] methods to reload your Controller to original values 395 - Added [reload] and [reloadAll] methods to reload your Controller to original values
367 - Added [FullLifeCycleController] - A GetxController capable of observing all the life cycles of your application. FullLifeCycleController has the life cycles: 396 - Added [FullLifeCycleController] - A GetxController capable of observing all the life cycles of your application. FullLifeCycleController has the life cycles:
368 - * onInit: called when the controller enters the application's memory  
369 - * onReady: called after onInit, when build method from widget relationed to controller is done.  
370 - * onClose: called when controller is deleted from memory.  
371 - * onPaused: called when the application is not currently visible to the user, and running in the background.  
372 - * onInactive: called when the application is in an inactive state and is not receiving user input, when the user receives a call, for example  
373 - * onResumed: The application is now visible and in the foreground  
374 - * onDetached: The application is still hosted on a flutter engine but is detached from any host views.  
375 - * didChangeMetrics: called when the window size is changed  
376 -- Added SuperController, a complete life circle controller with StateMixin 397 + - onInit: called when the controller enters the application's memory
  398 + - onReady: called after onInit, when build method from widget relationed to controller is done.
  399 + - onClose: called when controller is deleted from memory.
  400 + - onPaused: called when the application is not currently visible to the user, and running in the background.
  401 + - onInactive: called when the application is in an inactive state and is not receiving user input, when the user receives a call, for example
  402 + - onResumed: The application is now visible and in the foreground
  403 + - onDetached: The application is still hosted on a flutter engine but is detached from any host views.
  404 + - didChangeMetrics: called when the window size is changed
  405 +- Added SuperController, a complete life circle controller with StateMixin
377 - Improve Iterable Rx Api. Now, you can to use dart List, Map and Set as reactive, like: List<String> names = <String>['juan', 'pedro', 'maria'].obs; 406 - Improve Iterable Rx Api. Now, you can to use dart List, Map and Set as reactive, like: List<String> names = <String>['juan', 'pedro', 'maria'].obs;
378 - Added assign and assignAll extensions to default dart List 407 - Added assign and assignAll extensions to default dart List
379 - Added parameters options from Get.toNamed, Get.offNamed, and Get.offAllNamed (@enghitalo) 408 - Added parameters options from Get.toNamed, Get.offNamed, and Get.offAllNamed (@enghitalo)
@@ -387,7 +416,7 @@ You can also use custom Rxn types with null-safety: @@ -387,7 +416,7 @@ You can also use custom Rxn types with null-safety:
387 - Added Get.parameter access to Middleware (@eduardoflorence) 416 - Added Get.parameter access to Middleware (@eduardoflorence)
388 - Fix RxBool typo (@emanuelmutschlechner) 417 - Fix RxBool typo (@emanuelmutschlechner)
389 - Added Filter to GetBuilder 418 - Added Filter to GetBuilder
390 -- Added debouce to GetBuilder update 419 +- Added debouce to GetBuilder update
391 - Added ability to insert an Enum, class, or type of an object as a GetBuilder's Id 420 - Added ability to insert an Enum, class, or type of an object as a GetBuilder's Id
392 - Improve upload time from GetConnect 421 - Improve upload time from GetConnect
393 - Create minified version to DartPad(@roipeker) 422 - Create minified version to DartPad(@roipeker)
@@ -395,11 +424,11 @@ You can also use custom Rxn types with null-safety: @@ -395,11 +424,11 @@ You can also use custom Rxn types with null-safety:
395 - Added more status codes to GetConnect (@romavic) 424 - Added more status codes to GetConnect (@romavic)
396 - Fix and improve docs: @unacorbatanegra, @lsm, @nivisi, @ThinkDigitalSoftware, @martwozniak, @UsamaElgendy, @@DominusKelvin, @jintak0401, @goondeal 425 - Fix and improve docs: @unacorbatanegra, @lsm, @nivisi, @ThinkDigitalSoftware, @martwozniak, @UsamaElgendy, @@DominusKelvin, @jintak0401, @goondeal
397 426
398 -  
399 ## [3.24.0] 427 ## [3.24.0]
  428 +
400 - GetWidget has been completely redesigned. 429 - GetWidget has been completely redesigned.
401 -Throughout its lifetime, GetWidget has always been mentioned in the documentation as "something you shouldn't use unless you're sure you need it", and it had a very small use case. A short time ago we realized that it could have some unexpected behaviors, when compared to GetView, so we decided to rebuild it from scratch, creating a really useful widget for the ecosystem.  
402 -Objectively, GetWidget is now a Widget that caches the controller and protects children from their parents' reconstructions. This means that if you have a ListView or gridview, you can add items to it without the child (being a GetWidget) being rebuilt. The api is now more concise, as you can use Get.put / Get.lazyput for global dependencies, and Get.create with GetWidget for ephemeral dependencies, or when you need several identical controllers for the same widget, eliminating the need for tags for most cases. 430 + Throughout its lifetime, GetWidget has always been mentioned in the documentation as "something you shouldn't use unless you're sure you need it", and it had a very small use case. A short time ago we realized that it could have some unexpected behaviors, when compared to GetView, so we decided to rebuild it from scratch, creating a really useful widget for the ecosystem.
  431 + Objectively, GetWidget is now a Widget that caches the controller and protects children from their parents' reconstructions. This means that if you have a ListView or gridview, you can add items to it without the child (being a GetWidget) being rebuilt. The api is now more concise, as you can use Get.put / Get.lazyput for global dependencies, and Get.create with GetWidget for ephemeral dependencies, or when you need several identical controllers for the same widget, eliminating the need for tags for most cases.
403 432
404 - Workers now have error handlers, so if an error occurs in your stream, you can recover it from your workers. 433 - Workers now have error handlers, so if an error occurs in your stream, you can recover it from your workers.
405 434
@@ -408,19 +437,19 @@ Objectively, GetWidget is now a Widget that caches the controller and protects c @@ -408,19 +437,19 @@ Objectively, GetWidget is now a Widget that caches the controller and protects c
408 - [Patch] method was added in GetConnect. 437 - [Patch] method was added in GetConnect.
409 438
410 - Native methods for RxString (trim, contains, startWith, etc.) have been added. 439 - Native methods for RxString (trim, contains, startWith, etc.) have been added.
411 -  
412 - Standard constructors for RxList and RxMap have been added (RxList.generate, RxList.from, Map.of, Map.from, etc). 440 - Standard constructors for RxList and RxMap have been added (RxList.generate, RxList.from, Map.of, Map.from, etc).
413 441
414 - Added "onEmpty" status in StateMixin (@alizera) 442 - Added "onEmpty" status in StateMixin (@alizera)
415 443
416 - Added query and mutation methods of graphql for getconnect. 444 - Added query and mutation methods of graphql for getconnect.
417 -  
418 - Added body string for content-type application/x-www-form-urlencoded on GetConnect (@eduardoflorence) 445 - Added body string for content-type application/x-www-form-urlencoded on GetConnect (@eduardoflorence)
419 446
420 ## [3.23.1] 447 ## [3.23.1]
  448 +
421 - Fix allowSelfSigned on Flutter web 449 - Fix allowSelfSigned on Flutter web
422 - 450 +
423 ## [3.23.0] 451 ## [3.23.0]
  452 +
424 - Add GetResponsive (@SchabanBo) 453 - Add GetResponsive (@SchabanBo)
425 - Update tests, fix predicate for offNamedUntil (@vbuberen) 454 - Update tests, fix predicate for offNamedUntil (@vbuberen)
426 - Added Urdu Version for Pakistani Developers (@UsamaSarwar) 455 - Added Urdu Version for Pakistani Developers (@UsamaSarwar)
@@ -435,17 +464,19 @@ Objectively, GetWidget is now a Widget that caches the controller and protects c @@ -435,17 +464,19 @@ Objectively, GetWidget is now a Widget that caches the controller and protects c
435 - Added Indonesian version to Indonesian Developers (@pratamatama) 464 - Added Indonesian version to Indonesian Developers (@pratamatama)
436 465
437 ## [3.22.2] 466 ## [3.22.2]
  467 +
438 - Fix overlayEntries is null on Master/Dev branch of Flutter 468 - Fix overlayEntries is null on Master/Dev branch of Flutter
439 469
440 ## [3.22.1] 470 ## [3.22.1]
  471 +
441 - Improve: auto jsonDecode occurs only if response.header.contentType is "application/json" 472 - Improve: auto jsonDecode occurs only if response.header.contentType is "application/json"
442 - Improve and fix requests types (@eduardoflorence) 473 - Improve and fix requests types (@eduardoflorence)
443 - Fix HeaderValue variables with same name (@haidang93) 474 - Fix HeaderValue variables with same name (@haidang93)
444 475
445 -  
446 ## [3.22.0] 476 ## [3.22.0]
447 -- Added: more multipart options. Now you can send as multipart:  
448 - 477 +
  478 +- Added: more multipart options. Now you can send as multipart:
  479 +
449 File: 480 File:
450 'file':MultipartFile(File('./images/avatar.png'), filename: 'avatar.png'), 481 'file':MultipartFile(File('./images/avatar.png'), filename: 'avatar.png'),
451 482
@@ -458,19 +489,22 @@ Or bytes (Flutter web work only with bytes): @@ -458,19 +489,22 @@ Or bytes (Flutter web work only with bytes):
458 - Added: Upload Progress to MultipartRequest 489 - Added: Upload Progress to MultipartRequest
459 - Added support to List<MultipartFile> (@jasonlaw) 490 - Added support to List<MultipartFile> (@jasonlaw)
460 491
  492 +## [3.21.3]
461 493
462 -## [3.21.3]  
463 - Improve multipart file and defaultDecoder on GetConnect 494 - Improve multipart file and defaultDecoder on GetConnect
464 495
465 -## [3.21.2] 496 +## [3.21.2]
  497 +
466 - Fix GetConnect.request returning a PUT request 498 - Fix GetConnect.request returning a PUT request
467 499
468 -## [3.21.1] 500 +## [3.21.1]
  501 +
469 - Allow null body to POST method on GetConnect 502 - Allow null body to POST method on GetConnect
470 503
471 ## [3.21.0] - Big update 504 ## [3.21.0] - Big update
472 -- This update attaches two nice features developed by (@SchabanBo): *GetPage Children* And *GetMiddleware*  
473 -In previous versions, to create child pages, you should do something like: 505 +
  506 +- This update attaches two nice features developed by (@SchabanBo): _GetPage Children_ And _GetMiddleware_
  507 + In previous versions, to create child pages, you should do something like:
474 508
475 ```dart 509 ```dart
476 GetPage( 510 GetPage(
@@ -489,10 +523,12 @@ GetPage( @@ -489,10 +523,12 @@ GetPage(
489 binding: ElectronicsBinding(), 523 binding: ElectronicsBinding(),
490 ), 524 ),
491 ``` 525 ```
  526 +
492 Although the feature works well, it could be improved in several ways: 527 Although the feature works well, it could be improved in several ways:
493 1- If you had many pages, the page file could become huge and difficult to read. Besides, it was difficult to know which page was the daughter of which module. 528 1- If you had many pages, the page file could become huge and difficult to read. Besides, it was difficult to know which page was the daughter of which module.
494 2- It was not possible to delegate the function of naming routes to a subroutine file. 529 2- It was not possible to delegate the function of naming routes to a subroutine file.
495 With this update, it is possible to create a declarative structure, very similar to the Flutter widget tree for your route, which might look like this: 530 With this update, it is possible to create a declarative structure, very similar to the Flutter widget tree for your route, which might look like this:
  531 +
496 ```dart 532 ```dart
497 GetPage( 533 GetPage(
498 name: '/home', 534 name: '/home',
@@ -511,13 +547,14 @@ GetPage( @@ -511,13 +547,14 @@ GetPage(
511 ), 547 ),
512 ], 548 ],
513 ), 549 ),
514 - ], 550 + ],
515 ); 551 );
516 ``` 552 ```
  553 +
517 Thus, when accessing the url: '/home/products/electronics' 554 Thus, when accessing the url: '/home/products/electronics'
518 -Or use Get.toNamed('/home/products/electronics') it will go directly to the page [ElectronicsView], because the child pages, automatically inherit the name of the ancestral page, so _with any small change on any father in the tree all children will be updated._ If you change [/products] to [/accessories], you don't nesse update on all child links. 555 +Or use Get.toNamed('/home/products/electronics') it will go directly to the page [ElectronicsView], because the child pages, automatically inherit the name of the ancestral page, so _with any small change on any father in the tree all children will be updated._ If you change [/products] to [/accessories], you don't nesse update on all child links.
519 556
520 -However, the most powerful feature of this version is *GetMiddlewares*. 557 +However, the most powerful feature of this version is _GetMiddlewares_.
521 The GetPage has now new property that takes a list of GetMiddleWare than can perform actions and run them in the specific order. 558 The GetPage has now new property that takes a list of GetMiddleWare than can perform actions and run them in the specific order.
522 559
523 ### Priority 560 ### Priority
@@ -532,6 +569,7 @@ final middlewares = [ @@ -532,6 +569,7 @@ final middlewares = [
532 GetMiddleware(priority: -8), 569 GetMiddleware(priority: -8),
533 ]; 570 ];
534 ``` 571 ```
  572 +
535 those middlewares will be run in this order **-8 => 2 => 4 => 5** 573 those middlewares will be run in this order **-8 => 2 => 4 => 5**
536 574
537 ### Redirect 575 ### Redirect
@@ -592,58 +630,66 @@ This function will be called right after the GetPage.page function is called and @@ -592,58 +630,66 @@ This function will be called right after the GetPage.page function is called and
592 630
593 This function will be called right after disposing all the related objects (Controllers, views, ...) of the page. 631 This function will be called right after disposing all the related objects (Controllers, views, ...) of the page.
594 632
595 -## [3.20.1]  
596 -* Fix wrong reference with unnamed routes and added more tests 633 +## [3.20.1]
  634 +
  635 +- Fix wrong reference with unnamed routes and added more tests
597 636
598 ## [3.20.0] - Big update 637 ## [3.20.0] - Big update
599 -* Added GetConnect.  
600 -- GetConnect is an easy way to communicate from your back to your front. With it you can:  
601 -- Communicate through websockets  
602 -- Send messages and events via websockets.  
603 -- Listen to messages and events via websockets.  
604 -- Make http requests (GET, PUT, POST, DELETE).  
605 -- Add request modifiers (like attaching a token to each request made).  
606 -- Add answer modifiers (how to change a value field whenever the answer arrives)  
607 -- Add an authenticator, if the answer is 401, you can configure the renewal of your JWT, for example, and then it will again make the http request.  
608 -- Set the number of attempts for the authenticator  
609 -- Define a baseUrl for all requests  
610 -- Define a standard encoder for your Model.  
611 -- Note1: You will never need to use jsonEncoder. It will always be called automatically with each request. If you define an encoder for your model, it will return the instance of your model class ALREADY FILLED with server data.  
612 -- Note2: all requests are safety, you do not need to insert try / catch in requests. It will always return a response. In case of an error code, Response.hasError will return true. The error code will always be returned, unless the error was a connection error, which will be returned Response.hasError, but with error code null.  
613 -- These are relatively new features, and also inserted in separate containers. You don't have to use it if you don't want to. As it is relatively new, some functions, such as specific http methods, may be missing.  
614 -* Translation to Korean (@rws08)  
615 -* Fix Overlays state (@eduardoflorence)  
616 -* Update chinese docs (@jonahzheng)  
617 -* Added context.isDarkMode to context extensions  
618 - 638 +
  639 +- Added GetConnect.
  640 +
  641 +* GetConnect is an easy way to communicate from your back to your front. With it you can:
  642 +* Communicate through websockets
  643 +* Send messages and events via websockets.
  644 +* Listen to messages and events via websockets.
  645 +* Make http requests (GET, PUT, POST, DELETE).
  646 +* Add request modifiers (like attaching a token to each request made).
  647 +* Add answer modifiers (how to change a value field whenever the answer arrives)
  648 +* Add an authenticator, if the answer is 401, you can configure the renewal of your JWT, for example, and then it will again make the http request.
  649 +* Set the number of attempts for the authenticator
  650 +* Define a baseUrl for all requests
  651 +* Define a standard encoder for your Model.
  652 +* Note1: You will never need to use jsonEncoder. It will always be called automatically with each request. If you define an encoder for your model, it will return the instance of your model class ALREADY FILLED with server data.
  653 +* Note2: all requests are safety, you do not need to insert try / catch in requests. It will always return a response. In case of an error code, Response.hasError will return true. The error code will always be returned, unless the error was a connection error, which will be returned Response.hasError, but with error code null.
  654 +* These are relatively new features, and also inserted in separate containers. You don't have to use it if you don't want to. As it is relatively new, some functions, such as specific http methods, may be missing.
  655 +
  656 +- Translation to Korean (@rws08)
  657 +- Fix Overlays state (@eduardoflorence)
  658 +- Update chinese docs (@jonahzheng)
  659 +- Added context.isDarkMode to context extensions
619 660
620 ## [3.17.1] 661 ## [3.17.1]
  662 +
621 - Allow list.assignAll, map.assignAll and set.assignAll operate with null values 663 - Allow list.assignAll, map.assignAll and set.assignAll operate with null values
622 664
623 ## [3.17.0] 665 ## [3.17.0]
  666 +
624 - Added GetCupertinoApp 667 - Added GetCupertinoApp
625 -- Added initial suport to navigator 2.0 668 +- Added initial suport to navigator 2.0
626 669
627 ## [3.16.2] 670 ## [3.16.2]
  671 +
628 - Clean RxList, RxMap and RxSet implementation 672 - Clean RxList, RxMap and RxSet implementation
629 - Now when declaring an `RxList()`, it will be started empty. If you want to start a null RxList, you must use `RxList(null)`. 673 - Now when declaring an `RxList()`, it will be started empty. If you want to start a null RxList, you must use `RxList(null)`.
630 -Improved GetStream to receive the same parameters as the StreamController, such as `onListen`, `onPause`, `onResume` and `onCancel`. 674 + Improved GetStream to receive the same parameters as the StreamController, such as `onListen`, `onPause`, `onResume` and `onCancel`.
631 - Improve docs 675 - Improve docs
632 676
633 ## [3.16.1] 677 ## [3.16.1]
  678 +
634 - Fix compilation error on master 679 - Fix compilation error on master
635 - 680 +
636 ## [3.16.0] 681 ## [3.16.0]
  682 +
637 - Documentation translated into Russian language. (@Renat Fakhrutdinov, @Doaxan and @BatttA) 683 - Documentation translated into Russian language. (@Renat Fakhrutdinov, @Doaxan and @BatttA)
638 - Added error message callback for StateMixin (@eduardoflorence) 684 - Added error message callback for StateMixin (@eduardoflorence)
639 -- Fix incorrect Get.reference when pop route (@4mb1t) 685 +- Fix incorrect Get.reference when pop route (@4mb1t)
640 - Added Uppercase/Capital letter on GetUtils (@AleFachini) 686 - Added Uppercase/Capital letter on GetUtils (@AleFachini)
641 -- Redraw the Streams api to use GetStream instead of StreamControllers. Why this change?  
642 -Dart provides a Streams API that is really rich. However, asynchronous streams add extra latency to ensure that events are delivered in the exact order.  
643 -It is not yet known whether this latency has any performance impact in mobile applications, and probably not, however, as GetX is also a server-side framework, we need to have the lowest latency at all, since our base is shared.  
644 -Dart also has a Synchronous Streams api that has very low latency, however, it is not suitable for use in state management for two reasons:  
645 -1- Synchronous Streams can only have one listen (see the issue opened by Hixie on dart lang for reference: https://github.com/dart-lang/sdk/issues/22240).  
646 -This means that we cannot use this api for more than one listener, which is the basis of global state management, where we aim to change the state of more than one location. You can test this with this simple snippet: 687 +- Redraw the Streams api to use GetStream instead of StreamControllers. Why this change?
  688 + Dart provides a Streams API that is really rich. However, asynchronous streams add extra latency to ensure that events are delivered in the exact order.
  689 + It is not yet known whether this latency has any performance impact in mobile applications, and probably not, however, as GetX is also a server-side framework, we need to have the lowest latency at all, since our base is shared.
  690 + Dart also has a Synchronous Streams api that has very low latency, however, it is not suitable for use in state management for two reasons:
  691 + 1- Synchronous Streams can only have one listen (see the issue opened by Hixie on dart lang for reference: https://github.com/dart-lang/sdk/issues/22240).
  692 + This means that we cannot use this api for more than one listener, which is the basis of global state management, where we aim to change the state of more than one location. You can test this with this simple snippet:
647 693
648 ```dart 694 ```dart
649 void main() { 695 void main() {
@@ -664,6 +710,7 @@ void main() { @@ -664,6 +710,7 @@ void main() {
664 print("test8"); 710 print("test8");
665 } 711 }
666 ``` 712 ```
  713 +
667 2- Even with a single listener, the dart's Synchronous Streams api cannot deliver events in the exact order. We plan to work on a PR in the future at dart-lang to address this. So if we remove the line above that causes the exception, we will have the following output in the log: 714 2- Even with a single listener, the dart's Synchronous Streams api cannot deliver events in the exact order. We plan to work on a PR in the future at dart-lang to address this. So if we remove the line above that causes the exception, we will have the following output in the log:
668 715
669 ```dart 716 ```dart
@@ -694,9 +741,11 @@ test8 @@ -694,9 +741,11 @@ test8
694 test5 741 test5
695 742
696 ``` 743 ```
  744 +
697 As we can see, test 4 skips to test 6, which skips to test 8, which skips to test 5. Note that test 7 didn't even appear in the log. 745 As we can see, test 4 skips to test 6, which skips to test 8, which skips to test 5. Note that test 7 didn't even appear in the log.
698 746
699 However, if we work with GetStream, everything works as expected: 747 However, if we work with GetStream, everything works as expected:
  748 +
700 ```dart 749 ```dart
701 void main() { 750 void main() {
702 var controller = GetStream(); 751 var controller = GetStream();
@@ -739,15 +788,15 @@ In short: asynchronous streams from dart work perfectly, but add a latency that @@ -739,15 +788,15 @@ In short: asynchronous streams from dart work perfectly, but add a latency that
739 Synchronous dart streams have unexpected behaviors, cannot have more than 1 listener and do not deliver events in the correct order, which completely prevents their use in mobile state managements, since you run the risk of displaying data on the wrong screen, since the last event will not always be the last event entered by the sink. 788 Synchronous dart streams have unexpected behaviors, cannot have more than 1 listener and do not deliver events in the correct order, which completely prevents their use in mobile state managements, since you run the risk of displaying data on the wrong screen, since the last event will not always be the last event entered by the sink.
740 The 9000% figures are real, however, they refer to the gross performance between Streams and GetStreams. This does not mean that this number will impact your applications, because you are unlikely to use all of that power. 789 The 9000% figures are real, however, they refer to the gross performance between Streams and GetStreams. This does not mean that this number will impact your applications, because you are unlikely to use all of that power.
741 790
  791 +## [3.15.0] - Big update
742 792
743 -## [3.15.0] - Big update  
744 - **Improve Performance**: We made modifications to make GetBuilder even faster. We have improved the structure behind it so that listeners are notified faster. Perhaps in version 4.0 everything will be based on this new structure, but maintaining the power and compatibility with streams. If you want to know how much Getx is faster than pure streams or ChangeNotifier (even after the last update using LinkedList), you can create run the repository tests at: (https://github.com/jonataslaw/getx/blob/master/test/benchmarks/benckmark_test.dart) 793 - **Improve Performance**: We made modifications to make GetBuilder even faster. We have improved the structure behind it so that listeners are notified faster. Perhaps in version 4.0 everything will be based on this new structure, but maintaining the power and compatibility with streams. If you want to know how much Getx is faster than pure streams or ChangeNotifier (even after the last update using LinkedList), you can create run the repository tests at: (https://github.com/jonataslaw/getx/blob/master/test/benchmarks/benckmark_test.dart)
745 - **Added StateMixin** 794 - **Added StateMixin**
746 -StateMixin allows you to change the state of the controller, and display a loading, an error message, or a widget you want with 0 boilerplate. This makes things like API/Rest communication or websocket absurdly simple, and it's a real revolution in how state management has behaved so far.  
747 -You no longer need to have a ternary in your code, and you don't need a widget like FutureBuilder, StreamBuilder or even Obx/GetBuilder to encompass your Visibility. This will change with the way you manage the state of your controllers, decrease your boilerplate absurdly, and give you more security in your code. 795 + StateMixin allows you to change the state of the controller, and display a loading, an error message, or a widget you want with 0 boilerplate. This makes things like API/Rest communication or websocket absurdly simple, and it's a real revolution in how state management has behaved so far.
  796 + You no longer need to have a ternary in your code, and you don't need a widget like FutureBuilder, StreamBuilder or even Obx/GetBuilder to encompass your Visibility. This will change with the way you manage the state of your controllers, decrease your boilerplate absurdly, and give you more security in your code.
748 - **Added GetNotifier** 797 - **Added GetNotifier**
749 -GetNotifier is a super and powerful ValueNotifier, which in addition to having the life cycle of the controllers, is extremely fast, and can manage a single state, as a simplified immutable state management solution.  
750 -In theory, the only difference between it and GetxController is the possibility of setting an initial value in the constructor's super (exactly as ValueNotifier does). If the initial value is null, use GetxController. If you need a starting value, GetNotifier can be more useful and have less boilerplate, but both serve the same purpose: to decouple your visualization layer from your presentation logic. 798 + GetNotifier is a super and powerful ValueNotifier, which in addition to having the life cycle of the controllers, is extremely fast, and can manage a single state, as a simplified immutable state management solution.
  799 + In theory, the only difference between it and GetxController is the possibility of setting an initial value in the constructor's super (exactly as ValueNotifier does). If the initial value is null, use GetxController. If you need a starting value, GetNotifier can be more useful and have less boilerplate, but both serve the same purpose: to decouple your visualization layer from your presentation logic.
751 - Other Fixes and improvements: 800 - Other Fixes and improvements:
752 - Fixed GetxController is closed twice when smartManagement.full is turn on 801 - Fixed GetxController is closed twice when smartManagement.full is turn on
753 - Fixed phone number validation 802 - Fixed phone number validation
@@ -758,15 +807,19 @@ In theory, the only difference between it and GetxController is the possibility @@ -758,15 +807,19 @@ In theory, the only difference between it and GetxController is the possibility
758 - Improve code structure with less duplicate code: (@kranfix) 807 - Improve code structure with less duplicate code: (@kranfix)
759 - Fix named route erroring when route does not exist (@FiercestT) 808 - Fix named route erroring when route does not exist (@FiercestT)
760 809
761 -## [3.13.2] 810 +## [3.13.2]
  811 +
762 - Reunification of the package. 812 - Reunification of the package.
763 -During the 2 week period, we try to keep this package as a compilation of smaller packages. We were successful in separating, getx is well decoupled and it was only necessary to send the internal folders as packages to pub.dev, however, it became very complicated to contribute to the package. This is because it was necessary to clone the repository, replace all pubspec packages with local paths, and after modification, return the original paths to do the PR. With that, the frequency of updates, which was about 4 to 5 days, became almost 2 weeks, and this is not legal for a community as active as Getx, which uses this package precisely in addition to being modern and performance, be constantly improving. This led contributors to the conclusion that getx works best together.  
764 -Additional packages will continue to be maintained, and will have the same base as the main package, however, development will take place in the full and main package, and as the addition of new features or bug fixes arrives, we will migrate to the individual packages . Getx reached the mark of 50 contributors today, more than 1500 likes in the pub, and will continue to make development easy.  
765 -  
766 -## [3.13.1]  
767 -- Remove spaces whitespaces from dart files  
768 -- 813 + During the 2 week period, we try to keep this package as a compilation of smaller packages. We were successful in separating, getx is well decoupled and it was only necessary to send the internal folders as packages to pub.dev, however, it became very complicated to contribute to the package. This is because it was necessary to clone the repository, replace all pubspec packages with local paths, and after modification, return the original paths to do the PR. With that, the frequency of updates, which was about 4 to 5 days, became almost 2 weeks, and this is not legal for a community as active as Getx, which uses this package precisely in addition to being modern and performance, be constantly improving. This led contributors to the conclusion that getx works best together.
  814 + Additional packages will continue to be maintained, and will have the same base as the main package, however, development will take place in the full and main package, and as the addition of new features or bug fixes arrives, we will migrate to the individual packages . Getx reached the mark of 50 contributors today, more than 1500 likes in the pub, and will continue to make development easy.
  815 +
  816 +## [3.13.1]
  817 +
  818 +- Remove spaces whitespaces from dart files
  819 +-
  820 +
769 ## [3.13.0] 821 ## [3.13.0]
  822 +
770 - Fix typos on code and docs (@wbemanuel and @Goddchen) 823 - Fix typos on code and docs (@wbemanuel and @Goddchen)
771 - Improve: typedef to GetBuilder and Getx widgets 824 - Improve: typedef to GetBuilder and Getx widgets
772 - Improve behaviour of null route on lastest flutter version (@FiercestT) 825 - Improve behaviour of null route on lastest flutter version (@FiercestT)
@@ -774,30 +827,34 @@ Additional packages will continue to be maintained, and will have the same base @@ -774,30 +827,34 @@ Additional packages will continue to be maintained, and will have the same base
774 - Fix onClose called twice when GetBuilder is used 827 - Fix onClose called twice when GetBuilder is used
775 - Fix default customTransitions, and defaultDuration be ignored on unnamedRoutes 828 - Fix default customTransitions, and defaultDuration be ignored on unnamedRoutes
776 - Transition.native use default Flutter transitions 829 - Transition.native use default Flutter transitions
777 -- Added Get.testMode to use contextless elements on unit tests  
778 -- Added Get.appUpdate and improve Get.forceAppUpdate  
779 -  
780 -## [3.12.1]  
781 -- Remove spaces whitespaces from dart files  
782 -  
783 -## [3.12.0]  
784 -- Added BottomSheet Duration && Export SingleGetTickerProvider (@unacorbatanegra)  
785 -- Improve docs from dependencies management (@ngxingyu)  
786 -- Fix unknownRoute with null Custom Transition (@marcosfons)  
787 -- Optimize capitalize method (@zl910627)  
788 -- Added Chinese documentation (@idootop)  
789 -- Added TextDirection property on GetMaterialApp to improve RTL layout (@justkawal)  
790 -- Remove unnecessary files on git (@nipodemos)  
791 -- Fix tags on Get.create() and GetWidget() (@roipeker)  
792 -- Update mockito dependency on getTests 830 +- Added Get.testMode to use contextless elements on unit tests
  831 +- Added Get.appUpdate and improve Get.forceAppUpdate
  832 +
  833 +## [3.12.1]
  834 +
  835 +- Remove spaces whitespaces from dart files
  836 +
  837 +## [3.12.0]
  838 +
  839 +- Added BottomSheet Duration && Export SingleGetTickerProvider (@unacorbatanegra)
  840 +- Improve docs from dependencies management (@ngxingyu)
  841 +- Fix unknownRoute with null Custom Transition (@marcosfons)
  842 +- Optimize capitalize method (@zl910627)
  843 +- Added Chinese documentation (@idootop)
  844 +- Added TextDirection property on GetMaterialApp to improve RTL layout (@justkawal)
  845 +- Remove unnecessary files on git (@nipodemos)
  846 +- Fix tags on Get.create() and GetWidget() (@roipeker)
  847 +- Update mockito dependency on getTests
793 - Added GetStatelessWidget, a StatelessWidget base to GetWidget with lifecycle control of controllers. Note: It's a base class, you don't need change to use it or change your GetView, GetWidget StatelessWidget to It. 848 - Added GetStatelessWidget, a StatelessWidget base to GetWidget with lifecycle control of controllers. Note: It's a base class, you don't need change to use it or change your GetView, GetWidget StatelessWidget to It.
794 849
795 ## [3.11.1] 850 ## [3.11.1]
  851 +
796 - Fix docs 852 - Fix docs
797 853
798 ## [3.11.0] 854 ## [3.11.0]
799 -- Refactor structure from scratch to split GetX completely into separate packages. When using the main package (get) you will have everything working perfectly together. However, if you only want one of the resources, you can use the packages separately.  
800 -- Improve Rx types 855 +
  856 +- Refactor structure from scratch to split GetX completely into separate packages. When using the main package (get) you will have everything working perfectly together. However, if you only want one of the resources, you can use the packages separately.
  857 +- Improve Rx types
801 - Added RTL support 858 - Added RTL support
802 - Added GetTests, a set of tools to help you create unit tests using Getx 859 - Added GetTests, a set of tools to help you create unit tests using Getx
803 - RAM consumption improved by dividing resources into smaller components, preventing related classes that are unnecessary from being loaded 860 - RAM consumption improved by dividing resources into smaller components, preventing related classes that are unnecessary from being loaded
@@ -820,13 +877,17 @@ Additional packages will continue to be maintained, and will have the same base @@ -820,13 +877,17 @@ Additional packages will continue to be maintained, and will have the same base
820 - Improve readme example (@dafinoer) 877 - Improve readme example (@dafinoer)
821 878
822 ## [3.10.2] 879 ## [3.10.2]
  880 +
823 - Fixed the use of tags with lazyPut and added Ability to overwrite "tag" in GetView and GetWidget. 881 - Fixed the use of tags with lazyPut and added Ability to overwrite "tag" in GetView and GetWidget.
824 882
825 ## [3.10.1] 883 ## [3.10.1]
  884 +
826 - Fix analyzer 885 - Fix analyzer
827 886
828 ## [3.10.0] 887 ## [3.10.0]
  888 +
829 Getx 3.10 released with CLI and Get Server. 889 Getx 3.10 released with CLI and Get Server.
  890 +
830 - Added: analyser + effective dart (@Grohden) 891 - Added: analyser + effective dart (@Grohden)
831 - Added TextStyle to generalDialog title and message (@roipeker) 892 - Added TextStyle to generalDialog title and message (@roipeker)
832 - renamed and added defaults transition duration and types in "GetInterface" (@roipeker) 893 - renamed and added defaults transition duration and types in "GetInterface" (@roipeker)
@@ -837,7 +898,7 @@ Getx 3.10 released with CLI and Get Server. @@ -837,7 +898,7 @@ Getx 3.10 released with CLI and Get Server.
837 - Added Curve property to routes (@roipeker) 898 - Added Curve property to routes (@roipeker)
838 - Improve docs, code cleanup, new GetStateUpdaterMixin and GetStateUpdate in favour of StateSetter on GetxController, GetBuilder, SimpleBuilder. (@roipeker) 899 - Improve docs, code cleanup, new GetStateUpdaterMixin and GetStateUpdate in favour of StateSetter on GetxController, GetBuilder, SimpleBuilder. (@roipeker)
839 - Added RxBool.toggle() as an easy shortcut for switching true/false values. (@roipeker) 900 - Added RxBool.toggle() as an easy shortcut for switching true/false values. (@roipeker)
840 -- Added _RxImp.nil() to easily set the value to null (@roipeker) 901 +- Added \_RxImp.nil() to easily set the value to null (@roipeker)
841 - Added missing docs to Rx classes. (@roipeker) 902 - Added missing docs to Rx classes. (@roipeker)
842 - Added Get.delete(force:false) to Get extensions (@roipeker) 903 - Added Get.delete(force:false) to Get extensions (@roipeker)
843 - Added Docs and comments (@nipodemos) 904 - Added Docs and comments (@nipodemos)
@@ -845,12 +906,14 @@ Getx 3.10 released with CLI and Get Server. @@ -845,12 +906,14 @@ Getx 3.10 released with CLI and Get Server.
845 - Cleanup route code (@justkawal) 906 - Cleanup route code (@justkawal)
846 - Extension to facilitate insert widgets inside a CustomScrollView (@alexkharech) 907 - Extension to facilitate insert widgets inside a CustomScrollView (@alexkharech)
847 - Fix docs .obs examples (@kai-oswald) 908 - Fix docs .obs examples (@kai-oswald)
848 -- Added tag capability to GetView 909 +- Added tag capability to GetView
849 - Improve code separation of RouteManagement and Internacionalization 910 - Improve code separation of RouteManagement and Internacionalization
850 911
851 ## [3.8.0] 912 ## [3.8.0]
  913 +
852 - Added: Snackbar Status: Open, Opening, Closing and Closed 914 - Added: Snackbar Status: Open, Opening, Closing and Closed
853 -example: 915 + example:
  916 +
854 ```dart 917 ```dart
855 Get.snackbar('title', 'message', snackbarStatus: (status) { 918 Get.snackbar('title', 'message', snackbarStatus: (status) {
856 if (status == SnackbarStatus.CLOSED) { 919 if (status == SnackbarStatus.CLOSED) {
@@ -860,23 +923,24 @@ example: @@ -860,23 +923,24 @@ example:
860 ``` 923 ```
861 924
862 ## [3.7.0] 925 ## [3.7.0]
  926 +
863 - Added: RxSet. Sets can now also be reactive. 927 - Added: RxSet. Sets can now also be reactive.
864 -- Added isDesktop/isMobile (@roipeker) 928 +- Added isDesktop/isMobile (@roipeker)
865 - Improve GetPlatform: It is now possible to know which device the user is using if GetPlatform.isWeb is true. 929 - Improve GetPlatform: It is now possible to know which device the user is using if GetPlatform.isWeb is true.
866 -context.responsiveValue used device orientation based on web and non-web applications. Now it checks if it is a desktop application (web or desktop application) to do the responsiveness calculation. (@roipeker) 930 + context.responsiveValue used device orientation based on web and non-web applications. Now it checks if it is a desktop application (web or desktop application) to do the responsiveness calculation. (@roipeker)
867 - Change: The documentation previously stated that Iterables should not access the ".value" property. 931 - Change: The documentation previously stated that Iterables should not access the ".value" property.
868 -However, many users did not pay attention to this fact, and ended up generating unnecessary issues and bugs in their application.  
869 -In this version, we focus on code security. Now ".value" is protected, so it cannot be accessed externally by Lists, Maps or Sets. 932 + However, many users did not pay attention to this fact, and ended up generating unnecessary issues and bugs in their application.
  933 + In this version, we focus on code security. Now ".value" is protected, so it cannot be accessed externally by Lists, Maps or Sets.
870 - Change: Observable lists are now Dart Lists. 934 - Change: Observable lists are now Dart Lists.
871 -There is no difference in your use:  
872 -`RxList list = [].obs;`  
873 -And you use  
874 -`List list = [].obs;` 935 + There is no difference in your use:
  936 + `RxList list = [].obs;`
  937 + And you use
  938 + `List list = [].obs;`
875 - Change: You do not need to access the ".value" property of primitives. 939 - Change: You do not need to access the ".value" property of primitives.
876 -For Strings you need interpolation.  
877 -For num, int, double, you will have the normal operators, and use it as dart types.  
878 -This way, `.value` can be used exclusively in ModelClasses.  
879 -Example: 940 + For Strings you need interpolation.
  941 + For num, int, double, you will have the normal operators, and use it as dart types.
  942 + This way, `.value` can be used exclusively in ModelClasses.
  943 + Example:
880 944
881 ```dart 945 ```dart
882 var name = "Jonny" .obs; 946 var name = "Jonny" .obs;
@@ -896,75 +960,92 @@ The changes were not break changes, however, you may have missed the details of @@ -896,75 +960,92 @@ The changes were not break changes, however, you may have missed the details of
896 The same goes for Maps and Sets. 960 The same goes for Maps and Sets.
897 961
898 ## [3.6.2] 962 ## [3.6.2]
  963 +
899 - Fix more formatting issues 964 - Fix more formatting issues
900 965
901 ## [3.6.1] 966 ## [3.6.1]
  967 +
902 - Fix formatting issues 968 - Fix formatting issues
903 969
904 ## [3.6.0] 970 ## [3.6.0]
  971 +
905 - Added RxSet 972 - Added RxSet
906 - Change default logger to developer.log (@jorgegaticav) 973 - Change default logger to developer.log (@jorgegaticav)
907 -- Added BindingsBuilder, ValueBuilder, and ObxValue (@roipeker) 974 +- Added BindingsBuilder, ValueBuilder, and ObxValue (@roipeker)
908 - Fix fallback locale not working if missing country code (@thaihuynhxyz) 975 - Fix fallback locale not working if missing country code (@thaihuynhxyz)
909 - Fix validation of email ".com.br" 976 - Fix validation of email ".com.br"
910 977
911 ## [3.5.1] 978 ## [3.5.1]
  979 +
912 - Remove unnecessary whitespaces 980 - Remove unnecessary whitespaces
913 981
914 ## [3.5.0] 982 ## [3.5.0]
  983 +
915 - Added logwritter (@stefandevo) 984 - Added logwritter (@stefandevo)
916 - Added responsiveValue (@juanjoseleca) 985 - Added responsiveValue (@juanjoseleca)
917 - Fixed ghost url for snackbar, bottomsheets, and dialogs and unnamed navigation. 986 - Fixed ghost url for snackbar, bottomsheets, and dialogs and unnamed navigation.
918 987
919 ## [3.4.6] 988 ## [3.4.6]
  989 +
920 - Fix TextField dispose throw on last Flutter hotfix 990 - Fix TextField dispose throw on last Flutter hotfix
921 991
922 ## [3.4.5] 992 ## [3.4.5]
  993 +
923 - Fix typo on RxList.remove that could cause type errors. 994 - Fix typo on RxList.remove that could cause type errors.
924 - Remove initialization console print 995 - Remove initialization console print
925 996
926 ## [3.4.4] 997 ## [3.4.4]
927 -- Fix exception 'isInit called null' when tags are used in conjunction with dependencies. (@djade007) 998 +
  999 +- Fix exception 'isInit called null' when tags are used in conjunction with dependencies. (@djade007)
928 - Fix typos (@tiagocpeixoto) 1000 - Fix typos (@tiagocpeixoto)
929 1001
930 ## [3.4.3] 1002 ## [3.4.3]
931 -- Fix onInit fired only first time 1003 +
  1004 +- Fix onInit fired only first time
932 - Fix language callback(@lundin) 1005 - Fix language callback(@lundin)
933 - Fix docs (@nipodemos) 1006 - Fix docs (@nipodemos)
934 1007
935 ## [3.4.2] 1008 ## [3.4.2]
  1009 +
936 - Fix individual imports 1010 - Fix individual imports
937 1011
938 ## [3.4.1] 1012 ## [3.4.1]
  1013 +
939 - Structure organization, and improvements. 1014 - Structure organization, and improvements.
940 1015
941 ## [3.4.0] 1016 ## [3.4.0]
  1017 +
942 - Added '[everAll]' Worker: Listen a List of '.obx' 1018 - Added '[everAll]' Worker: Listen a List of '.obx'
943 - Added Workers dispose 1019 - Added Workers dispose
944 - Fix transition.noTransition 1020 - Fix transition.noTransition
945 - Fix TextField and VideoPlayController dispose before transition animation 1021 - Fix TextField and VideoPlayController dispose before transition animation
946 1022
947 ## [3.3.0] 1023 ## [3.3.0]
  1024 +
948 - Fix extensions (@stefandevo) 1025 - Fix extensions (@stefandevo)
949 - Added CPF to utils options (@kauemurakami) 1026 - Added CPF to utils options (@kauemurakami)
950 -- Added fenix mode to Get.lazyPut.  
951 -Use `Get.lazyPut<Controller>(()=> Controller(), fenix:true)` to have a controller that after being destroyed, has the ability to be recreated in case someone needs it. This is a function that already exists in smartManagement.keepFactory which is now also possible in full mode. 1027 +- Added fenix mode to Get.lazyPut.
  1028 + Use `Get.lazyPut<Controller>(()=> Controller(), fenix:true)` to have a controller that after being destroyed, has the ability to be recreated in case someone needs it. This is a function that already exists in smartManagement.keepFactory which is now also possible in full mode.
952 - Fix native transition on android 1029 - Fix native transition on android
953 1030
954 ## [3.2.2] 1031 ## [3.2.2]
  1032 +
955 - Improve transitions and refactor route system 1033 - Improve transitions and refactor route system
956 1034
957 ## [3.2.1] 1035 ## [3.2.1]
  1036 +
958 - Prevent black blackground on cupertino fullscreenDialog 1037 - Prevent black blackground on cupertino fullscreenDialog
959 1038
960 ## [3.2.0] 1039 ## [3.2.0]
  1040 +
961 - Improve GetBuilder ram usage 1041 - Improve GetBuilder ram usage
962 -- Added method update to Rx  
963 -Now you no longer need to make an entire class reactive to get an element update from it, you can simply call the update method of its instance, like this: 1042 +- Added method update to Rx
  1043 + Now you no longer need to make an entire class reactive to get an element update from it, you can simply call the update method of its instance, like this:
  1044 +
964 ```dart 1045 ```dart
965 class User{ 1046 class User{
966 User(this.name = '', this.age = 0); 1047 User(this.name = '', this.age = 0);
967 - String name; 1048 + String name;
968 int age; 1049 int age;
969 } 1050 }
970 1051
@@ -981,34 +1062,43 @@ user.age = 18; @@ -981,34 +1062,43 @@ user.age = 18;
981 1062
982 Now is also possible to access a value without using the ".value". Just open and close parentheses. 1063 Now is also possible to access a value without using the ".value". Just open and close parentheses.
983 In the previous example, you could do: 1064 In the previous example, you could do:
  1065 +
984 ```dart 1066 ```dart
985 user().name; // before: user.value.name 1067 user().name; // before: user.value.name
986 ``` 1068 ```
  1069 +
987 And it is also possible to set a value without using the value, inserting the value directly into the variable. 1070 And it is also possible to set a value without using the value, inserting the value directly into the variable.
  1071 +
988 ```dart 1072 ```dart
989 user(User('João', 35)); // before: user.value = User('João', 35) 1073 user(User('João', 35)); // before: user.value = User('João', 35)
990 ``` 1074 ```
991 -Added fenix mode to Get.lazyPut.  
992 1075
  1076 +Added fenix mode to Get.lazyPut.
993 1077
994 ## [3.1.4] 1078 ## [3.1.4]
  1079 +
995 - Update readme banner 1080 - Update readme banner
996 1081
997 ## [3.1.3] 1082 ## [3.1.3]
  1083 +
998 - Activate unknownRoute on version 3 1084 - Activate unknownRoute on version 3
999 - Go back transitions.size and transitions.cupertino 1085 - Go back transitions.size and transitions.cupertino
1000 1086
1001 ## [3.1.2] 1087 ## [3.1.2]
  1088 +
1002 - Expose GetInstance 1089 - Expose GetInstance
1003 1090
1004 ## [3.1.1] 1091 ## [3.1.1]
  1092 +
1005 - Improvement .obs methods 1093 - Improvement .obs methods
1006 1094
1007 ## [3.1.0] 1095 ## [3.1.0]
  1096 +
1008 - Added extensions to GetUtils and fix typo on GetUtils.isEmail (@stefandevo) 1097 - Added extensions to GetUtils and fix typo on GetUtils.isEmail (@stefandevo)
1009 - Added .gitignore file (@hdeyana) 1098 - Added .gitignore file (@hdeyana)
1010 1099
1011 ## [3.0.1] 1100 ## [3.0.1]
  1101 +
1012 - Breaking changes on Rx api and GetController and RxController were merged, and now you only have the 'GetxController' 1102 - Breaking changes on Rx api and GetController and RxController were merged, and now you only have the 'GetxController'
1013 - Refactor routing system. Now you can add custom transitions and more 1103 - Refactor routing system. Now you can add custom transitions and more
1014 - Improved the use of dynamic routes, you can now define two different pages according to your arguments. 1104 - Improved the use of dynamic routes, you can now define two different pages according to your arguments.
@@ -1019,77 +1109,93 @@ Added fenix mode to Get.lazyPut. @@ -1019,77 +1109,93 @@ Added fenix mode to Get.lazyPut.
1019 - Added GetStorage (with separated package) 1109 - Added GetStorage (with separated package)
1020 - Minor bug fixes. 1110 - Minor bug fixes.
1021 1111
1022 -  
1023 ## [2.14.0] 1112 ## [2.14.0]
1024 -- Added getPages API. 1113 +
  1114 +- Added getPages API.
1025 - Deprecated namedPages 1115 - Deprecated namedPages
1026 -- Fix default transition 1116 +- Fix default transition
1027 - Added Duration on Get.offAll(@kluverua) 1117 - Added Duration on Get.offAll(@kluverua)
1028 1118
1029 ## [2.13.1] 1119 ## [2.13.1]
  1120 +
1030 - Added sort to ListX 1121 - Added sort to ListX
1031 - Prepared the framework for version 3 1122 - Prepared the framework for version 3
1032 1123
1033 ## [2.13.0] 1124 ## [2.13.0]
  1125 +
1034 - Added Get.focusScope 1126 - Added Get.focusScope
1035 1127
1036 ## [2.13.0] 1128 ## [2.13.0]
  1129 +
1037 - Update docs 1130 - Update docs
1038 - Fix Bindings list on GetPageRoute 1131 - Fix Bindings list on GetPageRoute
1039 1132
1040 ## [2.12.5] 1133 ## [2.12.5]
  1134 +
1041 - Update readme 1135 - Update readme
1042 1136
1043 ## [2.12.4] 1137 ## [2.12.4]
  1138 +
1044 - Prevent exceptions on onReady with nullables 1139 - Prevent exceptions on onReady with nullables
1045 1140
1046 ## [2.12.3] 1141 ## [2.12.3]
1047 -- Fix List lenght == null 1142 +
  1143 +- Fix List lenght == null
1048 1144
1049 ## [2.12.2] 1145 ## [2.12.2]
  1146 +
1050 - Fix Workers 1147 - Fix Workers
1051 1148
1052 ## [2.12.1] 1149 ## [2.12.1]
  1150 +
1053 - Added: onReady on Controllers LifeCycle 1151 - Added: onReady on Controllers LifeCycle
1054 - Added: Observable maps 1152 - Added: Observable maps
1055 - Refactor: observable variables that now consume even less RAM. 1153 - Refactor: observable variables that now consume even less RAM.
1056 1154
1057 ## [2.11.3] 1155 ## [2.11.3]
  1156 +
1058 - Type parameters and added docs 1157 - Type parameters and added docs
1059 1158
1060 ## [2.11.2] 1159 ## [2.11.2]
  1160 +
1061 - Added docs 1161 - Added docs
1062 - Improvement performance of Obx 1162 - Improvement performance of Obx
1063 1163
1064 ## [2.11.1] 1164 ## [2.11.1]
  1165 +
1065 - Fixed: oninit calling only once. 1166 - Fixed: oninit calling only once.
1066 1167
1067 ## [2.11.0] 1168 ## [2.11.0]
  1169 +
1068 - Added Permissions: 1170 - Added Permissions:
1069 -You can now revoke permissions to SmartManagement so that it cannot delete a particular controller.  
1070 -Add to Get.put (Controller(), permanent: true); to make it indelible.  
1071 -Get.lazyPut() will not receive this resource. Initially he had it, but we saw in internal tests that it could cause problems with the bindings API. Bindings were created to initialize and delete an instance, if it were allowed to make a controller started with lazyPut permanent, copies of that Controller would be created every time Binding was called. For the safety of users, especially new users who could easily do this, it was decided that this feature will only be present in Get.put. 1171 + You can now revoke permissions to SmartManagement so that it cannot delete a particular controller.
  1172 + Add to Get.put (Controller(), permanent: true); to make it indelible.
  1173 + Get.lazyPut() will not receive this resource. Initially he had it, but we saw in internal tests that it could cause problems with the bindings API. Bindings were created to initialize and delete an instance, if it were allowed to make a controller started with lazyPut permanent, copies of that Controller would be created every time Binding was called. For the safety of users, especially new users who could easily do this, it was decided that this feature will only be present in Get.put.
1072 - Improve: Now a controller's life cycle has no connection with the View life cycle. It is no longer called internally in an "initState", it is now called when the Controller enters memory. This means that now onInit will always be called, regardless of where you started your dependency. 1174 - Improve: Now a controller's life cycle has no connection with the View life cycle. It is no longer called internally in an "initState", it is now called when the Controller enters memory. This means that now onInit will always be called, regardless of where you started your dependency.
1073 - removed: this property of the update() method has been permanently removed. 1175 - removed: this property of the update() method has been permanently removed.
1074 1176
1075 ## [2.10.3] 1177 ## [2.10.3]
  1178 +
1076 - GetBuilder refactor. 11% reduction in RAM consumption and 2% in CPU consumption for the sample application. (using as base Flutter for linux desktop). 1179 - GetBuilder refactor. 11% reduction in RAM consumption and 2% in CPU consumption for the sample application. (using as base Flutter for linux desktop).
1077 1180
1078 - The "this" property of the "update" method has been deprecated and will be removed in the next update. Please don't use it anymore. Just use "update()" now. 1181 - The "this" property of the "update" method has been deprecated and will be removed in the next update. Please don't use it anymore. Just use "update()" now.
1079 1182
1080 ## [2.10.2] 1183 ## [2.10.2]
  1184 +
1081 - Fix Get.generalDialog default options 1185 - Fix Get.generalDialog default options
1082 1186
1083 ## [2.10.1] 1187 ## [2.10.1]
  1188 +
1084 - Fix broken links on pub 1189 - Fix broken links on pub
1085 - Fix List empty error 1190 - Fix List empty error
1086 1191
1087 ## [2.10.0] 1192 ## [2.10.0]
  1193 +
1088 - Added SmartManagement, your application's memory is managed intelligently like never before! 1194 - Added SmartManagement, your application's memory is managed intelligently like never before!
1089 - Added Obx, a widget that knows when to rebuild a child, without needing any type. 1195 - Added Obx, a widget that knows when to rebuild a child, without needing any type.
1090 - Added MixinBuilder - If you need to use GetBuilder in conjunction with GetX, use GetxController with this widget, and the changes will occur either using update (this) or changing some reactive variable. Use only if necessary, for better RAM consumption, prefer widgets in that order: 1196 - Added MixinBuilder - If you need to use GetBuilder in conjunction with GetX, use GetxController with this widget, and the changes will occur either using update (this) or changing some reactive variable. Use only if necessary, for better RAM consumption, prefer widgets in that order:
1091 -Obx => GetX => GetBuilder => MixinBuilder.  
1092 -Obx is the lightest of all, and MixinBuilder is a mix of the other 3, whenever possible, use the specific widget. 1197 + Obx => GetX => GetBuilder => MixinBuilder.
  1198 + Obx is the lightest of all, and MixinBuilder is a mix of the other 3, whenever possible, use the specific widget.
1093 - Refactor: StateManager of Get. 1199 - Refactor: StateManager of Get.
1094 - Changed: full List API refactor, now value is no longer needed. 1200 - Changed: full List API refactor, now value is no longer needed.
1095 - Added Workers: You can hear changes to a variable and trigger custom callbacks. 1201 - Added Workers: You can hear changes to a variable and trigger custom callbacks.
@@ -1097,111 +1203,140 @@ Obx is the lightest of all, and MixinBuilder is a mix of the other 3, whenever p @@ -1097,111 +1203,140 @@ Obx is the lightest of all, and MixinBuilder is a mix of the other 3, whenever p
1097 - Added Portuguese language to readme(@Nipodemos) 1203 - Added Portuguese language to readme(@Nipodemos)
1098 1204
1099 # [2.7.1] 1205 # [2.7.1]
  1206 +
1100 - Improve list to set and get methods 1207 - Improve list to set and get methods
1101 1208
1102 ## [2.7.0] 1209 ## [2.7.0]
1103 -- Added obx, a simple state interceptor.  
1104 -- Improve Bindings, ListX, and  
1105 -- fix docs typos e broken code (@ghprod)  
1106 1210
  1211 +- Added obx, a simple state interceptor.
  1212 +- Improve Bindings, ListX, and
  1213 +- fix docs typos e broken code (@ghprod)
1107 1214
1108 ## [2.6.3] 1215 ## [2.6.3]
  1216 +
1109 - 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. 1217 - 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.
1110 -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.  
1111 -For stability, I decided not to use the standard Flutter bottomSheet, which contains many bugs, mainly related to keyboard padding, and the lack of respect for topBar's safeArea, and to use a proprietary bottomSheet implementation that is more stable. The Flutter dialog has no problem, so it will be used as the basis for Get.dialog. The bottomSheet will be based on the Flutter bottomSheet Raw API (_ModalBottomSheetRoute), applying bug fixes. 1218 + 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.
  1219 + For stability, I decided not to use the standard Flutter bottomSheet, which contains many bugs, mainly related to keyboard padding, and the lack of respect for topBar's safeArea, and to use a proprietary bottomSheet implementation that is more stable. The Flutter dialog has no problem, so it will be used as the basis for Get.dialog. The bottomSheet will be based on the Flutter bottomSheet Raw API (\_ModalBottomSheetRoute), applying bug fixes.
1112 - Added Get.isSnackbarOpen tests 1220 - Added Get.isSnackbarOpen tests
1113 1221
1114 ## [2.6.2] 1222 ## [2.6.2]
  1223 +
1115 - Refactor Bindings API 1224 - Refactor Bindings API
1116 1225
1117 ## [2.6.1] 1226 ## [2.6.1]
  1227 +
1118 - Expose Bindings API 1228 - Expose Bindings API
1119 1229
1120 ## [2.6.0] 1230 ## [2.6.0]
  1231 +
1121 - Added bindings. 1232 - Added bindings.
1122 -You can now add bindings from your controllers to your routes, to prepare GetBuilder or GetX to create a dependency already declared in a Binding class. This feature is in an experimental phase, and will not be documented until the end of the tests. 1233 + You can now add bindings from your controllers to your routes, to prepare GetBuilder or GetX to create a dependency already declared in a Binding class. This feature is in an experimental phase, and will not be documented until the end of the tests.
1123 1234
1124 ## [2.5.10] 1235 ## [2.5.10]
  1236 +
1125 - Removed remnants of previousArgs on routeObserver. 1237 - Removed remnants of previousArgs on routeObserver.
1126 -This feature had been deprecated in previous updates, and was removed in version 2.5.8. Some remaining references on the routeObserver were causing exceptions in version 2.5.9, and were removed completely in version 2.5.10. 1238 + This feature had been deprecated in previous updates, and was removed in version 2.5.8. Some remaining references on the routeObserver were causing exceptions in version 2.5.9, and were removed completely in version 2.5.10.
1127 1239
1128 ## [2.5.9] 1240 ## [2.5.9]
  1241 +
1129 - Fix Get.find with named instance 1242 - Fix Get.find with named instance
1130 1243
1131 ## [2.5.8] 1244 ## [2.5.8]
  1245 +
1132 - Added docs 1246 - Added docs
1133 - Added tests(@chimon2000) 1247 - Added tests(@chimon2000)
1134 1248
1135 ## [2.5.7] 1249 ## [2.5.7]
  1250 +
1136 - Fix Get.generalDialog optionals 1251 - Fix Get.generalDialog optionals
1137 - Added GetX onInit support 1252 - Added GetX onInit support
1138 1253
1139 ## [2.5.6] 1254 ## [2.5.6]
  1255 +
1140 - GetBuilder refactor to work with lazyPut. 1256 - GetBuilder refactor to work with lazyPut.
1141 -Now you can list your controllers in advance with Get.lazyPut, and only when it is called for the first time will it be relocated in memory. 1257 + Now you can list your controllers in advance with Get.lazyPut, and only when it is called for the first time will it be relocated in memory.
1142 - Fix english typos(@gumbarros) 1258 - Fix english typos(@gumbarros)
1143 1259
1144 ## [2.5.5] 1260 ## [2.5.5]
  1261 +
1145 - Fix arguments broken by new methods 1262 - Fix arguments broken by new methods
1146 1263
1147 ## [2.5.4] 1264 ## [2.5.4]
  1265 +
1148 - Refactor methods 1266 - Refactor methods
1149 1267
1150 ## [2.5.3] 1268 ## [2.5.3]
  1269 +
1151 - Fix snackbar padding on iPhone SE 2. 1270 - Fix snackbar padding on iPhone SE 2.
1152 - Added themes docs 1271 - Added themes docs
1153 - Added ThemeMode (@RodBr) 1272 - Added ThemeMode (@RodBr)
1154 1273
1155 ## [2.5.2] 1274 ## [2.5.2]
  1275 +
1156 - Fix: key not found when Get.key is used with no MaterialApp 1276 - Fix: key not found when Get.key is used with no MaterialApp
1157 1277
1158 ## [2.5.1] 1278 ## [2.5.1]
  1279 +
1159 - Improve - GetBuilder uses 18% less ram on more of 20 controllers. 1280 - Improve - GetBuilder uses 18% less ram on more of 20 controllers.
1160 1281
1161 ## [2.5.0] 1282 ## [2.5.0]
  1283 +
1162 - Added List.obs 1284 - Added List.obs
1163 - Now you can transform any class on obs 1285 - Now you can transform any class on obs
1164 1286
1165 -## [2.4.0]  
1166 -- Added GetX, state manager rxDart based. 1287 +## [2.4.0]
  1288 +
  1289 +- Added GetX, state manager rxDart based.
1167 - Fix error on add for non global controllers 1290 - Fix error on add for non global controllers
1168 1291
1169 -## [2.3.2] 1292 +## [2.3.2]
  1293 +
1170 - Fix close method called on not root GetBuilder 1294 - Fix close method called on not root GetBuilder
1171 1295
1172 -## [2.3.1] 1296 +## [2.3.1]
  1297 +
1173 - Auto close stream inside close method 1298 - Auto close stream inside close method
1174 - Added docs 1299 - Added docs
1175 1300
1176 -## [2.3.0] 1301 +## [2.3.0]
  1302 +
1177 - Added interface to GetX support 1303 - Added interface to GetX support
1178 1304
1179 -## [2.2.8] 1305 +## [2.2.8]
  1306 +
1180 - Added api to platform brightness 1307 - Added api to platform brightness
1181 1308
1182 -## [2.2.7] 1309 +## [2.2.7]
  1310 +
1183 - Fix typos 1311 - Fix typos
1184 1312
1185 -## [2.2.6] 1313 +## [2.2.6]
  1314 +
1186 - Fix cancel button on defaultDialog don't appear when widget implementation usage 1315 - Fix cancel button on defaultDialog don't appear when widget implementation usage
1187 1316
1188 -## [2.2.5] 1317 +## [2.2.5]
  1318 +
1189 - Refator defaultDialog 1319 - Refator defaultDialog
1190 1320
1191 -## [2.2.4] 1321 +## [2.2.4]
  1322 +
1192 - Clean code 1323 - Clean code
1193 - Fix Get.LazyPut 1324 - Fix Get.LazyPut
1194 1325
1195 -## [2.2.3] 1326 +## [2.2.3]
  1327 +
1196 - Remove defaultDialog type 1328 - Remove defaultDialog type
1197 1329
1198 -## [2.2.2] 1330 +## [2.2.2]
  1331 +
1199 - Fix GetRoute not found 1332 - Fix GetRoute not found
1200 1333
1201 -## [2.2.1] 1334 +## [2.2.1]
  1335 +
1202 - Improve lazyPut and fix tag to lazyput(@rochadaniel) 1336 - Improve lazyPut and fix tag to lazyput(@rochadaniel)
1203 1337
1204 -## [2.2.0] 1338 +## [2.2.0]
  1339 +
1205 - Added: Ability to choose or delay a widget's state change according to its ID. 1340 - Added: Ability to choose or delay a widget's state change according to its ID.
1206 - Added: Ability to fire triggers when loading materialApp. 1341 - Added: Ability to fire triggers when loading materialApp.
1207 - Added: Ability to change theme dynamically. 1342 - Added: Ability to change theme dynamically.
@@ -1209,274 +1344,315 @@ Now you can list your controllers in advance with Get.lazyPut, and only when it @@ -1209,274 +1344,315 @@ Now you can list your controllers in advance with Get.lazyPut, and only when it
1209 - Added: Ability to trigger events on the MaterialApp. 1344 - Added: Ability to trigger events on the MaterialApp.
1210 - Added: Get.lazyPut (lazy loading of dependencies). 1345 - Added: Get.lazyPut (lazy loading of dependencies).
1211 - Added: Get.creator - a factory of dependencies . 1346 - Added: Get.creator - a factory of dependencies .
1212 -- Added: Capability of define abstract class on dependencies. 1347 +- Added: Capability of define abstract class on dependencies.
  1348 +
  1349 +## [2.1.2]
1213 1350
1214 -## [2.1.2]  
1215 - Get.defaultDialog refactor 1351 - Get.defaultDialog refactor
1216 1352
1217 -## [2.1.1] 1353 +## [2.1.1]
  1354 +
1218 - fix typo 1355 - fix typo
1219 1356
1220 -## [2.1.0] 1357 +## [2.1.0]
  1358 +
1221 - Added Get.rawSnackbar 1359 - Added Get.rawSnackbar
1222 - Added instantInit config to snackbars 1360 - Added instantInit config to snackbars
1223 - Refactor Get Instance Manager 1361 - Refactor Get Instance Manager
1224 -- Improved performance and bug fix to Get State Manager 1362 +- Improved performance and bug fix to Get State Manager
1225 - Improved performance of GetRoute on namedRoutes 1363 - Improved performance of GetRoute on namedRoutes
1226 - Hotfix on namedRoutes 1364 - Hotfix on namedRoutes
1227 1365
1228 -## [2.0.10] 1366 +## [2.0.10]
  1367 +
1229 - Bump new Flutter version 1368 - Bump new Flutter version
1230 - Added Get.generalDialog 1369 - Added Get.generalDialog
1231 1370
1232 -## [2.0.6] 1371 +## [2.0.6]
  1372 +
1233 - Fix typo on readme 1373 - Fix typo on readme
1234 1374
1235 -## [2.0.5] 1375 +## [2.0.5]
  1376 +
1236 - Changing the bottomsheet API to comply with the documentation. 1377 - Changing the bottomsheet API to comply with the documentation.
1237 1378
1238 -## [2.0.4] 1379 +## [2.0.4]
  1380 +
1239 - Fix type not found in some versions of Flutter stable 1381 - Fix type not found in some versions of Flutter stable
1240 1382
1241 -## [2.0.3] 1383 +## [2.0.3]
  1384 +
1242 - Update Docs 1385 - Update Docs
1243 1386
1244 -## [2.0.2] 1387 +## [2.0.2]
  1388 +
1245 - Update GetObserver 1389 - Update GetObserver
1246 1390
1247 -## [2.0.1] 1391 +## [2.0.1]
  1392 +
1248 - Fix docs and typos 1393 - Fix docs and typos
1249 1394
1250 -## [2.0.0] 1395 +## [2.0.0]
  1396 +
1251 - Added easy state manager 1397 - Added easy state manager
1252 -- Change dialog API  
1253 -- Added GetMaterialApp  
1254 -- Added new experimental APIs  
1255 -- Improve Observer  
1256 -- Added default duration on Transitions 1398 +- Change dialog API
  1399 +- Added GetMaterialApp
  1400 +- Added new experimental APIs
  1401 +- Improve Observer
  1402 +- Added default duration on Transitions
1257 - Added new routeNamed sistem 1403 - Added new routeNamed sistem
1258 -- Added Global stateManager config  
1259 -- Improve Get instance manager  
1260 -- Added routingCallback  
1261 -- Added closeOverlays to Get.back  
1262 -- Added dynamic urls 1404 +- Added Global stateManager config
  1405 +- Improve Get instance manager
  1406 +- Added routingCallback
  1407 +- Added closeOverlays to Get.back
  1408 +- Added dynamic urls
1263 - Cleaner code 1409 - Cleaner code
1264 -- Improve lib performance 1410 +- Improve lib performance
1265 - Many others minor APIs added 1411 - Many others minor APIs added
1266 1412
1267 -## [1.20.1] 1413 +## [1.20.1]
  1414 +
1268 - Improve: Get.finds 1415 - Improve: Get.finds
1269 1416
1270 -## [1.20.0] 1417 +## [1.20.0]
  1418 +
1271 - Added Get Instance Manager 1419 - Added Get Instance Manager
1272 Get.put / Get.find / Get.delete 1420 Get.put / Get.find / Get.delete
1273 1421
1274 -## [1.19.1] 1422 +## [1.19.1]
  1423 +
1275 - Fix default transitions for namedRoutes 1424 - Fix default transitions for namedRoutes
1276 1425
1277 -## [1.19.0] 1426 +## [1.19.0]
  1427 +
1278 - Added nested navigators 1428 - Added nested navigators
1279 1429
1280 -## [1.18.0] 1430 +## [1.18.0]
  1431 +
1281 - Added SafeArea to bottomsheets 1432 - Added SafeArea to bottomsheets
1282 - Added docs 1433 - Added docs
1283 1434
1284 -## [1.17.0] 1435 +## [1.17.0]
  1436 +
1285 - Added experimental APIs 1437 - Added experimental APIs
1286 1438
  1439 +## [1.16.1]
1287 1440
1288 -## [1.16.1]  
1289 - Improve: GetObserver 1441 - Improve: GetObserver
1290 1442
1291 -## [1.16.0-dev] 1443 +## [1.16.0-dev]
  1444 +
1292 - Added Get config 1445 - Added Get config
1293 -- Added logEnable  
1294 -- Added Default transition  
1295 -- Added default popGesture behaviour  
1296 -- Added overlayContext 1446 +- Added logEnable
  1447 +- Added Default transition
  1448 +- Added default popGesture behaviour
  1449 +- Added overlayContext
1297 - Fix Duration transition 1450 - Fix Duration transition
1298 1451
1299 -## [1.14.1-dev] 1452 +## [1.14.1-dev]
  1453 +
1300 - Fix ternary on new dart version 1454 - Fix ternary on new dart version
1301 1455
1302 -## [1.14.0-dev] 1456 +## [1.14.0-dev]
  1457 +
1303 - Added compatibility with Flutter 1.17.1 1458 - Added compatibility with Flutter 1.17.1
1304 - Added back popGesture to iOS (default) and Android (optional) 1459 - Added back popGesture to iOS (default) and Android (optional)
1305 - Improve performance 1460 - Improve performance
1306 - Decrease lib size to 94.9kb (25.4k after compiled on release) 1461 - Decrease lib size to 94.9kb (25.4k after compiled on release)
1307 1462
1308 -## [1.13.1-dev] 1463 +## [1.13.1-dev]
  1464 +
1309 - Fix back function 1465 - Fix back function
1310 1466
1311 -## [1.13.0-dev] 1467 +## [1.13.0-dev]
  1468 +
1312 - Plugin refactor 1469 - Plugin refactor
1313 - Added GetPlatform 1470 - Added GetPlatform
1314 1471
1315 -## [1.12.0-dev] 1472 +## [1.12.0-dev]
  1473 +
1316 -Compatibility with Dev branch 1474 -Compatibility with Dev branch
1317 1475
1318 -## [1.11.4] 1476 +## [1.11.4]
  1477 +
1319 - Refactor code of library 1478 - Refactor code of library
1320 1479
1321 -## [1.11.3] 1480 +## [1.11.3]
  1481 +
1322 -Added docs 1482 -Added docs
1323 1483
  1484 +## [1.11.2]
  1485 +
  1486 +-Fix flutter web platform and added GetPlatform
  1487 +
  1488 +## [1.11.1]
  1489 +
  1490 +-Improve swipe to back on iOS devices
1324 1491
1325 -## [1.11.2]  
1326 - -Fix flutter web platform and added GetPlatform 1492 +## [1.11.0]
1327 1493
1328 -## [1.11.1]  
1329 - -Improve swipe to back on iOS devices 1494 +-Added experimental GetCupertino
1330 1495
1331 - ## [1.11.0]  
1332 - -Added experimental GetCupertino 1496 +## [1.10.5]
1333 1497
1334 -## [1.10.5]  
1335 - -Added setKey to improve modular compatibility  
1336 - -Added ability to define transition duration directly when calling the new route. 1498 +-Added setKey to improve modular compatibility
  1499 +-Added ability to define transition duration directly when calling the new route.
1337 1500
1338 -## [1.10.4]  
1339 - -Improve Get.offAll() - predicate now is optional 1501 +## [1.10.4]
1340 1502
1341 -## [1.10.3]  
1342 - -Improve default color from dialogs 1503 +-Improve Get.offAll() - predicate now is optional
1343 1504
1344 - ## [1.10.2]  
1345 - -Improve snackbar text color  
1346 - -Added background color to snackbar (@claudneysessa) 1505 +## [1.10.3]
1347 1506
1348 - ## [1.10.1]  
1349 - -Backdrop improvement 1507 +-Improve default color from dialogs
1350 1508
1351 -## [1.10.0]  
1352 - -Added backdrop 1509 +## [1.10.2]
1353 1510
1354 -## [1.9.2]  
1355 - -Added docs to GetObserver 1511 +-Improve snackbar text color
  1512 +-Added background color to snackbar (@claudneysessa)
1356 1513
1357 - ## [1.9.1]  
1358 - -Fix typo on snackbar route 1514 +## [1.10.1]
1359 1515
1360 -## [1.9.0]  
1361 - -Added: Navigator observer  
1362 - -Added: Get.args to named routes  
1363 - -Improve snackbar performance 1516 +-Backdrop improvement
1364 1517
1365 -## [1.8.1]  
1366 - -Fix new snackbar features 1518 +## [1.10.0]
1367 1519
1368 -## [1.8.0]  
1369 - -Add Get.close method.  
1370 - -Add many Snackbars features 1520 +-Added backdrop
1371 1521
1372 -## [1.7.4]  
1373 - -Fix dialog child error 1522 +## [1.9.2]
1374 1523
1375 -## [1.7.3]  
1376 - -Added transitions docs 1524 +-Added docs to GetObserver
1377 1525
1378 -## [1.7.2]  
1379 - -Fix bottomsheet on macos 1526 +## [1.9.1]
1380 1527
1381 -## [1.7.1]  
1382 - -Fix docs 1528 +-Fix typo on snackbar route
1383 1529
1384 -## [1.7.0]  
1385 -  
1386 - - Improve geral performance. Get.to Wrap now consumes even less RAM and CPU. In an application with 20 screens, it obtained 82% less RAM usage compared to the traditional method Navigator.push and had a CPU normalization of 23% in a Moto z2, against 64% CPU usage in Navigator.push with MaterialPageRoute. Test it for yourself!  
1387 - - Added BottomSheet with no context  
1388 - - Added modern Blur Snackbar  
1389 - - Added customs transitions  
1390 - - Improve dialogs performance 1530 +## [1.9.0]
1391 1531
1392 -## [1.6.4]  
1393 -  
1394 - - Improve performance. 1532 +-Added: Navigator observer
  1533 +-Added: Get.args to named routes
  1534 +-Improve snackbar performance
1395 1535
1396 -## [1.6.3]  
1397 -  
1398 - - Clean code. 1536 +## [1.8.1]
1399 1537
1400 -## [1.6.2]  
1401 -  
1402 - - Fix bugs on blurred Snackbars 1538 +-Fix new snackbar features
1403 1539
1404 -## [1.6.1]  
1405 -  
1406 - - Add docs and improve performance  
1407 -  
1408 -## [1.6.0]  
1409 -  
1410 - - Add support to snackbars 1540 +## [1.8.0]
1411 1541
1412 -## [1.5.0+1]  
1413 -  
1414 - - Add color and opacity to dialogs  
1415 -  
1416 -## [1.5.0]  
1417 -  
1418 - - Add support to dialogs 1542 +-Add Get.close method.
  1543 +-Add many Snackbars features
1419 1544
1420 -## [1.4.0+7]  
1421 -  
1422 - - Add more documentation 1545 +## [1.7.4]
1423 1546
1424 -## [1.4.0+6] 1547 +-Fix dialog child error
1425 1548
1426 -- Improve performance and bug fix 1549 +## [1.7.3]
1427 1550
1428 -## [1.4.0] 1551 +-Added transitions docs
1429 1552
1430 -- Added Get.removeRoute // ability to remove one route.  
1431 - Get.until // back repeatedly until the predicate returns true.  
1432 - Get.offUntil // go to next route and remove all the previous routes until the predicate returns true.  
1433 - Get.offNamedUntil // go to next named route and remove all the previous routes until the predicate returns true.  
1434 -  
1435 -## [1.3.4] 1553 +## [1.7.2]
  1554 +
  1555 +-Fix bottomsheet on macos
  1556 +
  1557 +## [1.7.1]
  1558 +
  1559 +-Fix docs
  1560 +
  1561 +## [1.7.0]
  1562 +
  1563 +- Improve geral performance. Get.to Wrap now consumes even less RAM and CPU. In an application with 20 screens, it obtained 82% less RAM usage compared to the traditional method Navigator.push and had a CPU normalization of 23% in a Moto z2, against 64% CPU usage in Navigator.push with MaterialPageRoute. Test it for yourself!
  1564 +- Added BottomSheet with no context
  1565 +- Added modern Blur Snackbar
  1566 +- Added customs transitions
  1567 +- Improve dialogs performance
  1568 +
  1569 +## [1.6.4]
  1570 +
  1571 +- Improve performance.
  1572 +
  1573 +## [1.6.3]
  1574 +
  1575 +- Clean code.
  1576 +
  1577 +## [1.6.2]
  1578 +
  1579 +- Fix bugs on blurred Snackbars
  1580 +
  1581 +## [1.6.1]
  1582 +
  1583 +- Add docs and improve performance
  1584 +
  1585 +## [1.6.0]
  1586 +
  1587 +- Add support to snackbars
  1588 +
  1589 +## [1.5.0+1]
  1590 +
  1591 +- Add color and opacity to dialogs
  1592 +
  1593 +## [1.5.0]
  1594 +
  1595 +- Add support to dialogs
  1596 +
  1597 +## [1.4.0+7]
  1598 +
  1599 +- Add more documentation
  1600 +
  1601 +## [1.4.0+6]
  1602 +
  1603 +- Improve performance and bug fix
  1604 +
  1605 +## [1.4.0]
  1606 +
  1607 +- Added Get.removeRoute // ability to remove one route.
  1608 + Get.until // back repeatedly until the predicate returns true.
  1609 + Get.offUntil // go to next route and remove all the previous routes until the predicate returns true.
  1610 + Get.offNamedUntil // go to next named route and remove all the previous routes until the predicate returns true.
  1611 +
  1612 +## [1.3.4]
1436 1613
1437 - Improve performance 1614 - Improve performance
1438 1615
1439 -## [1.3.3] 1616 +## [1.3.3]
1440 1617
1441 - Fix Get.back arguments 1618 - Fix Get.back arguments
1442 1619
1443 -## [1.3.2] 1620 +## [1.3.2]
1444 1621
1445 - Improve performance 1622 - Improve performance
1446 1623
1447 -## [1.3.1] 1624 +## [1.3.1]
1448 1625
1449 - Update docs 1626 - Update docs
1450 1627
1451 -## [1.3.0] 1628 +## [1.3.0]
1452 1629
1453 - Update docs, readme, and add full support to flutter_web 1630 - Update docs, readme, and add full support to flutter_web
1454 1631
1455 -## [1.2.1] 1632 +## [1.2.1]
1456 1633
1457 - Fix bug currentState = null 1634 - Fix bug currentState = null
1458 1635
1459 -  
1460 -## [1.2.0] 1636 +## [1.2.0]
1461 1637
1462 - Add routes navigation with no context 1638 - Add routes navigation with no context
1463 1639
1464 -## [1.1.0] 1640 +## [1.1.0]
1465 1641
1466 -- Add support to named routes 1642 +- Add support to named routes
1467 1643
1468 -## [1.0.3] 1644 +## [1.0.3]
1469 1645
1470 - Improve Performance 1646 - Improve Performance
1471 1647
1472 -## [1.0.2] 1648 +## [1.0.2]
1473 1649
1474 - Add examples 1650 - Add examples
1475 1651
1476 -## [1.0.1] 1652 +## [1.0.1]
1477 1653
1478 - Doc changes 1654 - Doc changes
1479 1655
1480 -## [1.0.0] 1656 +## [1.0.0]
1481 1657
1482 - initial release 1658 - initial release
@@ -43,6 +43,7 @@ class MyApp extends StatelessWidget { @@ -43,6 +43,7 @@ class MyApp extends StatelessWidget {
43 GetPage( 43 GetPage(
44 name: '/second', 44 name: '/second',
45 page: () => const Second(), 45 page: () => const Second(),
  46 + transition: Transition.downToUp,
46 ), 47 ),
47 GetPage( 48 GetPage(
48 name: '/third', 49 name: '/third',
@@ -18,7 +18,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev @@ -18,7 +18,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
18 version: 1.0.0+1 18 version: 1.0.0+1
19 19
20 environment: 20 environment:
21 - sdk: ">=2.19.1 <3.0.0" 21 + sdk: ">=3.0.1 <4.0.0"
22 22
23 dependency_overrides: 23 dependency_overrides:
24 get: 24 get:
@@ -75,4 +75,4 @@ flutter: @@ -75,4 +75,4 @@ flutter:
75 # weight: 700 75 # weight: 700
76 # 76 #
77 # For details regarding fonts from package dependencies, 77 # For details regarding fonts from package dependencies,
78 - # see https://flutter.dev/custom-fonts/#from-packages  
  78 + # see https://flutter.dev/custom-fonts/#from-packages
@@ -503,12 +503,12 @@ extension GetNavigationExt on GetInterface { @@ -503,12 +503,12 @@ extension GetNavigationExt on GetInterface {
503 /// 503 ///
504 /// By default, GetX will prevent you from push a route that you already in, 504 /// By default, GetX will prevent you from push a route that you already in,
505 /// if you want to push anyway, set [preventDuplicates] to false 505 /// if you want to push anyway, set [preventDuplicates] to false
506 - Future<T?>? to<T>(Widget Function() page, 506 + Future<T?>? to<T extends Object?>(Widget Function() page,
507 {bool? opaque, 507 {bool? opaque,
508 Transition? transition, 508 Transition? transition,
509 Curve? curve, 509 Curve? curve,
510 Duration? duration, 510 Duration? duration,
511 - int? id, 511 + String? id,
512 String? routeName, 512 String? routeName,
513 bool fullscreenDialog = false, 513 bool fullscreenDialog = false,
514 dynamic arguments, 514 dynamic arguments,
@@ -620,7 +620,7 @@ extension GetNavigationExt on GetInterface { @@ -620,7 +620,7 @@ extension GetNavigationExt on GetInterface {
620 Future<T?>? offNamed<T>( 620 Future<T?>? offNamed<T>(
621 String page, { 621 String page, {
622 dynamic arguments, 622 dynamic arguments,
623 - int? id, 623 + String? id,
624 Map<String, String>? parameters, 624 Map<String, String>? parameters,
625 }) { 625 }) {
626 // if (preventDuplicates && page == currentRoute) { 626 // if (preventDuplicates && page == currentRoute) {
@@ -653,7 +653,7 @@ extension GetNavigationExt on GetInterface { @@ -653,7 +653,7 @@ extension GetNavigationExt on GetInterface {
653 /// or also like this: 653 /// or also like this:
654 /// `Get.until((route) => !Get.isDialogOpen())`, to make sure the 654 /// `Get.until((route) => !Get.isDialogOpen())`, to make sure the
655 /// dialog is closed 655 /// dialog is closed
656 - void until(bool Function(GetPage<dynamic>) predicate, {int? id}) { 656 + void until(bool Function(GetPage<dynamic>) predicate, {String? id}) {
657 // if (key.currentState.mounted) // add this if appear problems on future with route navigate 657 // if (key.currentState.mounted) // add this if appear problems on future with route navigate
658 // when widget don't mounted 658 // when widget don't mounted
659 return searchDelegate(id).backUntil(predicate); 659 return searchDelegate(id).backUntil(predicate);
@@ -680,7 +680,7 @@ extension GetNavigationExt on GetInterface { @@ -680,7 +680,7 @@ extension GetNavigationExt on GetInterface {
680 Future<T?>? offNamedUntil<T>( 680 Future<T?>? offNamedUntil<T>(
681 String page, 681 String page,
682 bool Function(GetPage<dynamic>)? predicate, { 682 bool Function(GetPage<dynamic>)? predicate, {
683 - int? id, 683 + String? id,
684 dynamic arguments, 684 dynamic arguments,
685 Map<String, String>? parameters, 685 Map<String, String>? parameters,
686 }) { 686 }) {
@@ -712,7 +712,7 @@ extension GetNavigationExt on GetInterface { @@ -712,7 +712,7 @@ extension GetNavigationExt on GetInterface {
712 Future<T?>? offAndToNamed<T>( 712 Future<T?>? offAndToNamed<T>(
713 String page, { 713 String page, {
714 dynamic arguments, 714 dynamic arguments,
715 - int? id, 715 + String? id,
716 dynamic result, 716 dynamic result,
717 Map<String, String>? parameters, 717 Map<String, String>? parameters,
718 }) { 718 }) {
@@ -733,7 +733,7 @@ extension GetNavigationExt on GetInterface { @@ -733,7 +733,7 @@ extension GetNavigationExt on GetInterface {
733 /// 733 ///
734 /// [id] is for when you are using nested navigation, 734 /// [id] is for when you are using nested navigation,
735 /// as explained in documentation 735 /// as explained in documentation
736 - void removeRoute(String name, {int? id}) { 736 + void removeRoute(String name, {String? id}) {
737 return searchDelegate(id).removeRoute(name); 737 return searchDelegate(id).removeRoute(name);
738 } 738 }
739 739
@@ -761,7 +761,7 @@ extension GetNavigationExt on GetInterface { @@ -761,7 +761,7 @@ extension GetNavigationExt on GetInterface {
761 String newRouteName, { 761 String newRouteName, {
762 // bool Function(GetPage<dynamic>)? predicate, 762 // bool Function(GetPage<dynamic>)? predicate,
763 dynamic arguments, 763 dynamic arguments,
764 - int? id, 764 + String? id,
765 Map<String, String>? parameters, 765 Map<String, String>? parameters,
766 }) { 766 }) {
767 if (parameters != null) { 767 if (parameters != null) {
@@ -800,62 +800,133 @@ extension GetNavigationExt on GetInterface { @@ -800,62 +800,133 @@ extension GetNavigationExt on GetInterface {
800 /// from your business logic. 800 /// from your business logic.
801 void back<T>({ 801 void back<T>({
802 T? result, 802 T? result,
  803 + bool canPop = true,
  804 + int times = 1,
  805 + String? id,
  806 + }) {
  807 + if (times < 1) {
  808 + times = 1;
  809 + }
  810 +
  811 + if (times > 1) {
  812 + var count = 0;
  813 + return searchDelegate(id).backUntil((route) => count++ == times);
  814 + } else {
  815 + if (canPop) {
  816 + if (searchDelegate(id).canBack == true) {
  817 + return searchDelegate(id).back<T>(result);
  818 + }
  819 + } else {
  820 + return searchDelegate(id).back<T>(result);
  821 + }
  822 + }
  823 + }
  824 +
  825 + /// Pop the current page, snackbar, dialog or bottomsheet in the stack
  826 + ///
  827 + /// if your set [closeOverlays] to true, Get.back() will close the
  828 + /// currently open snackbar/dialog/bottomsheet AND the current page
  829 + ///
  830 + /// [id] is for when you are using nested navigation,
  831 + /// as explained in documentation
  832 + ///
  833 + /// It has the advantage of not needing context, so you can call
  834 + /// from your business logic.
  835 + void backLegacy<T>({
  836 + T? result,
803 bool closeOverlays = false, 837 bool closeOverlays = false,
804 bool canPop = true, 838 bool canPop = true,
805 - int? id, 839 + int times = 1,
  840 + String? id,
806 }) { 841 }) {
807 - //TODO: remove this when change own api to Dialog and BottomSheets  
808 - //to declarative way  
809 - if (isDialogOpen! || isBottomSheetOpen!) {  
810 - searchDelegate(id).navigatorKey.currentState?.pop(result);  
811 - return; 842 + if (closeOverlays) {
  843 + closeAllOverlays();
812 } 844 }
813 845
814 - //TODO: This code brings compatibility of the new snackbar with GetX 4,  
815 - // remove this code in version 5  
816 - if (isSnackbarOpen && !closeOverlays) {  
817 - closeCurrentSnackbar();  
818 - return; 846 + if (times < 1) {
  847 + times = 1;
819 } 848 }
820 849
821 - if (closeOverlays && isOverlaysOpen) {  
822 - //TODO: This code brings compatibility of the new snackbar with GetX 4,  
823 - // remove this code in version 5  
824 - if (isSnackbarOpen) {  
825 - closeAllSnackbars(); 850 + if (times > 1) {
  851 + var count = 0;
  852 + return searchDelegate(id).navigatorKey.currentState?.popUntil((route) {
  853 + return count++ == times;
  854 + });
  855 + } else {
  856 + if (canPop) {
  857 + if (searchDelegate(id).navigatorKey.currentState?.canPop() == true) {
  858 + return searchDelegate(id).navigatorKey.currentState?.pop<T>(result);
  859 + }
  860 + } else {
  861 + return searchDelegate(id).navigatorKey.currentState?.pop<T>(result);
826 } 862 }
  863 + }
  864 + }
827 865
828 - while ((isDialogOpen! && isBottomSheetOpen!)) {  
829 - searchDelegate(id).navigatorKey.currentState?.pop(result);  
830 - } 866 + void closeAllDialogsAndBottomSheets(
  867 + String? id,
  868 + ) {
  869 + // It can not be divided, because dialogs and bottomsheets can not be consecutive
  870 + while ((isDialogOpen! && isBottomSheetOpen!)) {
  871 + closeOverlay(id: id);
  872 + }
  873 + }
831 874
832 - // navigator?.popUntil((route) {  
833 - // return;  
834 - // }); 875 + void closeAllDialogs({
  876 + String? id,
  877 + }) {
  878 + while ((isDialogOpen!)) {
  879 + closeOverlay(id: id);
835 } 880 }
836 - if (canPop) {  
837 - if (searchDelegate(id).canBack == true) {  
838 - searchDelegate(id).back<T>(result);  
839 - }  
840 - } else {  
841 - searchDelegate(id).back<T>(result); 881 + }
  882 +
  883 + void closeOverlay({String? id}) {
  884 + searchDelegate(id).navigatorKey.currentState?.pop();
  885 + }
  886 +
  887 + void closeAllBottomSheets({
  888 + String? id,
  889 + }) {
  890 + while ((isBottomSheetOpen!)) {
  891 + searchDelegate(id).navigatorKey.currentState?.pop();
842 } 892 }
843 } 893 }
844 894
  895 + void closeAllOverlays() {
  896 + closeAllDialogsAndBottomSheets(null);
  897 + closeAllSnackbars();
  898 + }
  899 +
845 /// **Navigation.popUntil()** (with predicate) shortcut .<br><br> 900 /// **Navigation.popUntil()** (with predicate) shortcut .<br><br>
846 /// 901 ///
847 /// Close as many routes as defined by [times] 902 /// Close as many routes as defined by [times]
848 /// 903 ///
849 /// [id] is for when you are using nested navigation, 904 /// [id] is for when you are using nested navigation,
850 /// as explained in documentation 905 /// as explained in documentation
851 - void close(int times, [int? id]) {  
852 - if (times < 1) {  
853 - times = 1; 906 + void close<T extends Object>({
  907 + bool closeAll = true,
  908 + bool closeSnackbar = true,
  909 + bool closeDialog = true,
  910 + bool closeBottomSheet = true,
  911 + String? id,
  912 + T? result,
  913 + }) {
  914 + void handleClose(bool closeCondition, Function closeAllFunction,
  915 + Function closeSingleFunction,
  916 + [bool? isOpenCondition]) {
  917 + if (closeCondition) {
  918 + if (closeAll) {
  919 + closeAllFunction();
  920 + } else if (isOpenCondition == true) {
  921 + closeSingleFunction();
  922 + }
  923 + }
854 } 924 }
855 - var count = 0;  
856 - var back = searchDelegate(id).backUntil((route) => count++ == times);  
857 925
858 - return back; 926 + handleClose(closeSnackbar, closeAllSnackbars, closeCurrentSnackbar);
  927 + handleClose(closeDialog, closeAllDialogs, closeOverlay, isDialogOpen);
  928 + handleClose(closeBottomSheet, closeAllBottomSheets, closeOverlay,
  929 + isBottomSheetOpen);
859 } 930 }
860 931
861 /// **Navigation.pushReplacement()** shortcut .<br><br> 932 /// **Navigation.pushReplacement()** shortcut .<br><br>
@@ -889,7 +960,7 @@ extension GetNavigationExt on GetInterface { @@ -889,7 +960,7 @@ extension GetNavigationExt on GetInterface {
889 Transition? transition, 960 Transition? transition,
890 Curve? curve, 961 Curve? curve,
891 bool? popGesture, 962 bool? popGesture,
892 - int? id, 963 + String? id,
893 String? routeName, 964 String? routeName,
894 dynamic arguments, 965 dynamic arguments,
895 List<BindingsInterface> bindings = const [], 966 List<BindingsInterface> bindings = const [],
@@ -924,7 +995,7 @@ extension GetNavigationExt on GetInterface { @@ -924,7 +995,7 @@ extension GetNavigationExt on GetInterface {
924 Widget Function() page, 995 Widget Function() page,
925 bool Function(GetPage) predicate, [ 996 bool Function(GetPage) predicate, [
926 Object? arguments, 997 Object? arguments,
927 - int? id, 998 + String? id,
928 ]) { 999 ]) {
929 return searchDelegate(id).offUntil( 1000 return searchDelegate(id).offUntil(
930 page, 1001 page,
@@ -968,7 +1039,7 @@ extension GetNavigationExt on GetInterface { @@ -968,7 +1039,7 @@ extension GetNavigationExt on GetInterface {
968 bool Function(GetPage<dynamic>)? predicate, 1039 bool Function(GetPage<dynamic>)? predicate,
969 bool? opaque, 1040 bool? opaque,
970 bool? popGesture, 1041 bool? popGesture,
971 - int? id, 1042 + String? id,
972 String? routeName, 1043 String? routeName,
973 dynamic arguments, 1044 dynamic arguments,
974 List<BindingsInterface> bindings = const [], 1045 List<BindingsInterface> bindings = const [],
@@ -1083,7 +1154,7 @@ extension GetNavigationExt on GetInterface { @@ -1083,7 +1154,7 @@ extension GetNavigationExt on GetInterface {
1083 return rootController.nestedKey(key); 1154 return rootController.nestedKey(key);
1084 } 1155 }
1085 1156
1086 - GetDelegate searchDelegate(dynamic k) { 1157 + GetDelegate searchDelegate(String? k) {
1087 GetDelegate key; 1158 GetDelegate key;
1088 if (k == null) { 1159 if (k == null) {
1089 key = Get.rootController.rootDelegate; 1160 key = Get.rootController.rootDelegate;
@@ -1224,7 +1295,7 @@ extension GetNavigationExt on GetInterface { @@ -1224,7 +1295,7 @@ extension GetNavigationExt on GetInterface {
1224 1295
1225 GlobalKey<NavigatorState> get key => rootController.key; 1296 GlobalKey<NavigatorState> get key => rootController.key;
1226 1297
1227 - Map<dynamic, GetDelegate> get keys => rootController.keys; 1298 + Map<String, GetDelegate> get keys => rootController.keys;
1228 1299
1229 GetRootState get rootController => GetRootState.controller; 1300 GetRootState get rootController => GetRootState.controller;
1230 1301
@@ -507,7 +507,7 @@ class GetRootState extends State<GetRoot> with WidgetsBindingObserver { @@ -507,7 +507,7 @@ class GetRootState extends State<GetRoot> with WidgetsBindingObserver {
507 return key; 507 return key;
508 } 508 }
509 509
510 - Map<dynamic, GetDelegate> keys = {}; 510 + Map<String, GetDelegate> keys = {};
511 511
512 GetDelegate? nestedKey(String? key) { 512 GetDelegate? nestedKey(String? key) {
513 if (key == null) { 513 if (key == null) {
@@ -54,7 +54,7 @@ mixin IGetNavigation { @@ -54,7 +54,7 @@ mixin IGetNavigation {
54 Transition? transition, 54 Transition? transition,
55 Curve? curve, 55 Curve? curve,
56 Duration? duration, 56 Duration? duration,
57 - int? id, 57 + String? id,
58 String? routeName, 58 String? routeName,
59 bool fullscreenDialog = false, 59 bool fullscreenDialog = false,
60 dynamic arguments, 60 dynamic arguments,
@@ -76,7 +76,7 @@ mixin IGetNavigation { @@ -76,7 +76,7 @@ mixin IGetNavigation {
76 Transition? transition, 76 Transition? transition,
77 Curve? curve, 77 Curve? curve,
78 Duration? duration, 78 Duration? duration,
79 - int? id, 79 + String? id,
80 String? routeName, 80 String? routeName,
81 bool fullscreenDialog = false, 81 bool fullscreenDialog = false,
82 dynamic arguments, 82 dynamic arguments,
@@ -92,7 +92,7 @@ mixin IGetNavigation { @@ -92,7 +92,7 @@ mixin IGetNavigation {
92 bool Function(GetPage route)? predicate, 92 bool Function(GetPage route)? predicate,
93 bool opaque = true, 93 bool opaque = true,
94 bool? popGesture, 94 bool? popGesture,
95 - int? id, 95 + String? id,
96 String? routeName, 96 String? routeName,
97 dynamic arguments, 97 dynamic arguments,
98 List<BindingsInterface> bindings = const [], 98 List<BindingsInterface> bindings = const [],
@@ -107,7 +107,7 @@ mixin IGetNavigation { @@ -107,7 +107,7 @@ mixin IGetNavigation {
107 Future<T?> toNamed<T>( 107 Future<T?> toNamed<T>(
108 String page, { 108 String page, {
109 dynamic arguments, 109 dynamic arguments,
110 - int? id, 110 + String? id,
111 bool preventDuplicates = true, 111 bool preventDuplicates = true,
112 Map<String, String>? parameters, 112 Map<String, String>? parameters,
113 }); 113 });
@@ -115,7 +115,7 @@ mixin IGetNavigation { @@ -115,7 +115,7 @@ mixin IGetNavigation {
115 Future<T?> offNamed<T>( 115 Future<T?> offNamed<T>(
116 String page, { 116 String page, {
117 dynamic arguments, 117 dynamic arguments,
118 - int? id, 118 + String? id,
119 Map<String, String>? parameters, 119 Map<String, String>? parameters,
120 }); 120 });
121 121
@@ -123,7 +123,7 @@ mixin IGetNavigation { @@ -123,7 +123,7 @@ mixin IGetNavigation {
123 String newRouteName, { 123 String newRouteName, {
124 // bool Function(GetPage route)? predicate, 124 // bool Function(GetPage route)? predicate,
125 dynamic arguments, 125 dynamic arguments,
126 - int? id, 126 + String? id,
127 Map<String, String>? parameters, 127 Map<String, String>? parameters,
128 }); 128 });
129 129
@@ -131,7 +131,7 @@ mixin IGetNavigation { @@ -131,7 +131,7 @@ mixin IGetNavigation {
131 String page, { 131 String page, {
132 bool Function(GetPage route)? predicate, 132 bool Function(GetPage route)? predicate,
133 dynamic arguments, 133 dynamic arguments,
134 - int? id, 134 + String? id,
135 Map<String, String>? parameters, 135 Map<String, String>? parameters,
136 }); 136 });
137 137
@@ -362,7 +362,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder> @@ -362,7 +362,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder>
362 Transition? transition, 362 Transition? transition,
363 Curve? curve, 363 Curve? curve,
364 Duration? duration, 364 Duration? duration,
365 - int? id, 365 + String? id,
366 String? routeName, 366 String? routeName,
367 bool fullscreenDialog = false, 367 bool fullscreenDialog = false,
368 dynamic arguments, 368 dynamic arguments,
@@ -414,7 +414,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder> @@ -414,7 +414,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder>
414 Transition? transition, 414 Transition? transition,
415 Curve? curve, 415 Curve? curve,
416 Duration? duration, 416 Duration? duration,
417 - int? id, 417 + String? id,
418 String? routeName, 418 String? routeName,
419 bool fullscreenDialog = false, 419 bool fullscreenDialog = false,
420 dynamic arguments, 420 dynamic arguments,
@@ -449,7 +449,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder> @@ -449,7 +449,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder>
449 bool Function(GetPage route)? predicate, 449 bool Function(GetPage route)? predicate,
450 bool opaque = true, 450 bool opaque = true,
451 bool? popGesture, 451 bool? popGesture,
452 - int? id, 452 + String? id,
453 String? routeName, 453 String? routeName,
454 dynamic arguments, 454 dynamic arguments,
455 List<BindingsInterface> bindings = const [], 455 List<BindingsInterface> bindings = const [],
@@ -491,7 +491,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder> @@ -491,7 +491,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder>
491 String newRouteName, { 491 String newRouteName, {
492 // bool Function(GetPage route)? predicate, 492 // bool Function(GetPage route)? predicate,
493 dynamic arguments, 493 dynamic arguments,
494 - int? id, 494 + String? id,
495 Map<String, String>? parameters, 495 Map<String, String>? parameters,
496 }) async { 496 }) async {
497 final args = _buildPageSettings(newRouteName, arguments); 497 final args = _buildPageSettings(newRouteName, arguments);
@@ -510,7 +510,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder> @@ -510,7 +510,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder>
510 String page, { 510 String page, {
511 bool Function(GetPage route)? predicate, 511 bool Function(GetPage route)? predicate,
512 dynamic arguments, 512 dynamic arguments,
513 - int? id, 513 + String? id,
514 Map<String, String>? parameters, 514 Map<String, String>? parameters,
515 }) async { 515 }) async {
516 final args = _buildPageSettings(page, arguments); 516 final args = _buildPageSettings(page, arguments);
@@ -530,7 +530,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder> @@ -530,7 +530,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder>
530 Future<T?> offNamed<T>( 530 Future<T?> offNamed<T>(
531 String page, { 531 String page, {
532 dynamic arguments, 532 dynamic arguments,
533 - int? id, 533 + String? id,
534 Map<String, String>? parameters, 534 Map<String, String>? parameters,
535 }) async { 535 }) async {
536 final args = _buildPageSettings(page, arguments); 536 final args = _buildPageSettings(page, arguments);
@@ -692,7 +692,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder> @@ -692,7 +692,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder>
692 final route = decoder.route; 692 final route = decoder.route;
693 if (route == null) return null; 693 if (route == null) return null;
694 694
695 - return _configureRouterDecoder(decoder, arguments); 695 + return _configureRouterDecoder<T>(decoder, arguments);
696 } 696 }
697 697
698 @protected 698 @protected
@@ -706,7 +706,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder> @@ -706,7 +706,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder>
706 } 706 }
707 707
708 decoder.route = decoder.route?.copyWith( 708 decoder.route = decoder.route?.copyWith(
709 - completer: _activePages.isEmpty ? null : Completer(), 709 + completer: _activePages.isEmpty ? null : Completer<T?>(),
710 arguments: arguments, 710 arguments: arguments,
711 parameters: parameters, 711 parameters: parameters,
712 key: ValueKey(arguments.name), 712 key: ValueKey(arguments.name),
@@ -43,8 +43,6 @@ extension PageArgExt on BuildContext { @@ -43,8 +43,6 @@ extension PageArgExt on BuildContext {
43 return parser?.restoreRouteInformation(config)?.location ?? '/'; 43 return parser?.restoreRouteInformation(config)?.location ?? '/';
44 } 44 }
45 45
46 -  
47 -  
48 GetDelegate get delegate { 46 GetDelegate get delegate {
49 return router.routerDelegate as GetDelegate; 47 return router.routerDelegate as GetDelegate;
50 } 48 }
@@ -7,7 +7,8 @@ import '../../../get_core/get_core.dart'; @@ -7,7 +7,8 @@ import '../../../get_core/get_core.dart';
7 import '../../get_navigation.dart'; 7 import '../../get_navigation.dart';
8 8
9 typedef OnTap = void Function(GetSnackBar snack); 9 typedef OnTap = void Function(GetSnackBar snack);
10 -typedef OnHover = void Function(GetSnackBar snack, SnackHoverState snackHoverState); 10 +typedef OnHover = void Function(
  11 + GetSnackBar snack, SnackHoverState snackHoverState);
11 12
12 typedef SnackbarStatusCallback = void Function(SnackbarStatus? status); 13 typedef SnackbarStatusCallback = void Function(SnackbarStatus? status);
13 14
@@ -585,4 +586,4 @@ enum SnackPosition { top, bottom } @@ -585,4 +586,4 @@ enum SnackPosition { top, bottom }
585 enum SnackStyle { floating, grounded } 586 enum SnackStyle { floating, grounded }
586 587
587 /// Indicates if the mouse entered or exited 588 /// Indicates if the mouse entered or exited
588 -enum SnackHoverState { entered, exited }  
  589 +enum SnackHoverState { entered, exited }
@@ -239,7 +239,8 @@ class SnackbarController { @@ -239,7 +239,8 @@ class SnackbarController {
239 Widget _getBodyWidget() { 239 Widget _getBodyWidget() {
240 return Builder(builder: (_) { 240 return Builder(builder: (_) {
241 return MouseRegion( 241 return MouseRegion(
242 - onEnter: (_) => snackbar.onHover?.call(snackbar, SnackHoverState.entered), 242 + onEnter: (_) =>
  243 + snackbar.onHover?.call(snackbar, SnackHoverState.entered),
243 onExit: (_) => snackbar.onHover?.call(snackbar, SnackHoverState.exited), 244 onExit: (_) => snackbar.onHover?.call(snackbar, SnackHoverState.exited),
244 child: GestureDetector( 245 child: GestureDetector(
245 onTap: snackbar.onTap != null 246 onTap: snackbar.onTap != null
@@ -327,7 +327,16 @@ extension BoolExtension on bool { @@ -327,7 +327,16 @@ extension BoolExtension on bool {
327 RxBool get obs => RxBool(this); 327 RxBool get obs => RxBool(this);
328 } 328 }
329 329
330 -extension RxT<T> on T { 330 +extension RxT<T extends Object> on T {
331 /// Returns a `Rx` instance with [this] `T` as initial value. 331 /// Returns a `Rx` instance with [this] `T` as initial value.
332 Rx<T> get obs => Rx<T>(this); 332 Rx<T> get obs => Rx<T>(this);
333 } 333 }
  334 +
  335 +/// This method will replace the old `.obs` method.
  336 +/// It's a breaking change, but it is essential to avoid conflicts with
  337 +/// the new dart 3 features. T will be inferred by contextual type inference
  338 +/// rather than the extension type.
  339 +extension RxTnew on Object {
  340 + /// Returns a `Rx` instance with [this] `T` as initial value.
  341 + Rx<T> obs<T>() => Rx<T>(this as T);
  342 +}
1 name: get 1 name: get
2 description: Open screens/snackbars/dialogs without context, manage states and inject dependencies easily with GetX. 2 description: Open screens/snackbars/dialogs without context, manage states and inject dependencies easily with GetX.
3 -version: 5.0.0-release-candidate-4 3 +version: 5.0.0-release-candidate-5
4 homepage: https://github.com/jonataslaw/getx 4 homepage: https://github.com/jonataslaw/getx
5 5
6 environment: 6 environment:
7 - sdk: ">=2.17.0 <4.0.0" 7 + sdk: ">=3.0.0 <4.0.0"
8 8
9 dependencies: 9 dependencies:
10 flutter: 10 flutter:
@@ -13,9 +13,9 @@ dependencies: @@ -13,9 +13,9 @@ dependencies:
13 sdk: flutter 13 sdk: flutter
14 14
15 dev_dependencies: 15 dev_dependencies:
  16 + flutter_lints: ^2.0.3
16 flutter_test: 17 flutter_test:
17 sdk: flutter 18 sdk: flutter
18 - flutter_lints: ^2.0.2  
19 19
20 # For information on the generic Dart part of this file, see the 20 # For information on the generic Dart part of this file, see the
21 # following page: https://dart.dev/tools/pub/pubspec 21 # following page: https://dart.dev/tools/pub/pubspec
@@ -48,7 +48,7 @@ void main() { @@ -48,7 +48,7 @@ void main() {
48 48
49 expect(Get.isBottomSheetOpen, true); 49 expect(Get.isBottomSheetOpen, true);
50 50
51 - Get.back(); 51 + Get.backLegacy();
52 await tester.pumpAndSettle(); 52 await tester.pumpAndSettle();
53 53
54 expect(Get.isBottomSheetOpen, false); 54 expect(Get.isBottomSheetOpen, false);
@@ -47,7 +47,7 @@ void main() { @@ -47,7 +47,7 @@ void main() {
47 expect(find.byType(YourDialogWidget), findsOneWidget); 47 expect(find.byType(YourDialogWidget), findsOneWidget);
48 // expect(Get.isDialogOpen, true); 48 // expect(Get.isDialogOpen, true);
49 49
50 - Get.back(); 50 + Get.backLegacy();
51 await tester.pumpAndSettle(); 51 await tester.pumpAndSettle();
52 52
53 expect(find.byType(YourDialogWidget), findsNothing); 53 expect(find.byType(YourDialogWidget), findsNothing);
@@ -407,7 +407,7 @@ void main() { @@ -407,7 +407,7 @@ void main() {
407 await tester.pumpAndSettle(); 407 await tester.pumpAndSettle();
408 Get.snackbar('title', "message"); 408 Get.snackbar('title', "message");
409 await tester.pumpAndSettle(); 409 await tester.pumpAndSettle();
410 - Get.back(closeOverlays: true); 410 + Get.backLegacy(closeOverlays: true);
411 411
412 await tester.pumpAndSettle(); 412 await tester.pumpAndSettle();
413 413