Jonny Borges
Committed by GitHub

Merge branch 'master' into vietnamese_translation

@@ -17,11 +17,9 @@ @@ -17,11 +17,9 @@
17 17
18 <h3>Lamentamos la inconsistencia en la traducción. El paquete GetX se actualiza con bastante frecuencia y es posible que las traducciones a documentos no sean tan rápidas. Entonces, para que esta documentación aún tenga todo el contenido, dejaré aquí todos los textos nuevos sin traducir (considero que es mejor tener los documentos en inglés que no tenerlos), por lo que si alguien quiere traducir, sería de gran ayuda 😁</h3> 18 <h3>Lamentamos la inconsistencia en la traducción. El paquete GetX se actualiza con bastante frecuencia y es posible que las traducciones a documentos no sean tan rápidas. Entonces, para que esta documentación aún tenga todo el contenido, dejaré aquí todos los textos nuevos sin traducir (considero que es mejor tener los documentos en inglés que no tenerlos), por lo que si alguien quiere traducir, sería de gran ayuda 😁</h3>
19 19
20 -- [Communication and support channels:](#communication-and-support-channels)  
21 - [Sobre GetX](#sobre-getx) 20 - [Sobre GetX](#sobre-getx)
22 -- [Como contribuir](#como-contribuir)  
23 -- [Installing](#installing)  
24 -- [Proyecto Counter no GetX](#proyecto-counter-no-getx) 21 +- [Instalación](#instalación)
  22 +- [Proyecto contador con GetX](#proyecto-contador-con-getx)
25 - [Los tres pilares](#los-tres-pilares) 23 - [Los tres pilares](#los-tres-pilares)
26 - [Gestión del Estado](#gestión-del-estado) 24 - [Gestión del Estado](#gestión-del-estado)
27 - [Reactivo STATE_MANAGER](#reactivo-state_manager) 25 - [Reactivo STATE_MANAGER](#reactivo-state_manager)
@@ -37,25 +35,21 @@ @@ -37,25 +35,21 @@
37 - [Otras API avanzadas y configuraciones manuales](#otras-api-avanzadas-y-configuraciones-manuales) 35 - [Otras API avanzadas y configuraciones manuales](#otras-api-avanzadas-y-configuraciones-manuales)
38 - [Configuraciones globales opcionales](#configuraciones-globales-opcionales) 36 - [Configuraciones globales opcionales](#configuraciones-globales-opcionales)
39 - [Video explanation of Other GetX Features](#video-explanation-of-other-getx-features) 37 - [Video explanation of Other GetX Features](#video-explanation-of-other-getx-features)
40 -- [Rompiendo cambios desde 2.0](#rompiendo-cambios-desde-20) 38 +- [Cambios importantes desde 2.0](#cambios-importantes-desde-20)
41 - [¿Por qué Getx?](#por-qué-getx) 39 - [¿Por qué Getx?](#por-qué-getx)
42 -  
43 -# Communication and support channels:  
44 -  
45 -[**Slack (Inglés)**](https://communityinviter.com/apps/getxworkspace/getx)  
46 -  
47 -[**Discord (Ingles y Portugués)**](https://discord.com/invite/9Y3wK9)  
48 -  
49 -[**Telegram (Portugués)**](https://t.me/joinchat/PhdbJRmsZNpAqSLJL6bH7g) 40 +- [Comunidad](#comunidad)
  41 + - [Canales de la comunidad](#canales-de-la-comunidad)
  42 + - [Cómo contribuir](#cómo-contribuir)
  43 + - [Artículos y vídeos](#artículos-y-vídeos-inglés)
50 44
51 # Sobre GetX 45 # Sobre GetX
52 46
53 -- GetX es una solución extra ligera y potente para Flutter. Combina gestión de estádo de alto rendimiento, inyección de dependencia inteligente y gestión de rutas, de forma rápida y práctica. 47 +- GetX es una solución extra ligera y potente para Flutter. Combina gestión de estádo de alto rendimiento, inyección de dependencia inteligente y gestión de rutas de forma rápida y práctica.
54 48
55 - GetX tiene 3 principios básicos, esto significa que esta es la prioridad para todos los recursos de la biblioteca. 49 - GetX tiene 3 principios básicos, esto significa que esta es la prioridad para todos los recursos de la biblioteca.
56 - **PERFORMANCE:** GetX se centra en el rendimiento y el consumo mínimo de recursos. Los puntos de referencia casi siempre no son importantes en el mundo real, pero si lo desea, aquí hay un indicador de consumo.([benchmarks](https://github.com/jonataslaw/benchmarks)), donde GetX lo hace mejor que otros enfoques de gestión estatal, por ejemplo. La diferencia no es grande, pero muestra nuestra preocupación por no desperdiciar sus recursos.  
57 - **PRODUCTIVITY:** GetX utiliza una sintaxis fácil y agradable.  
58 - **ORGANIZATION:** GetX permite el desacoplamiento total de la vista de la lógica empresarial. 50 + - **RENDIMIENTO:** GetX se centra en el rendimiento y el consumo mínimo de recursos. Los puntos de referencia casi siempre no son importantes en el mundo real, pero si lo desea, aquí hay un indicador de consumo.([benchmarks](https://github.com/jonataslaw/benchmarks)), donde GetX lo hace mejor que otros enfoques de gestión estatal, por ejemplo. La diferencia no es grande, pero muestra nuestra preocupación por no desperdiciar sus recursos.
  51 + - **PRODUCTIVIDAD:** GetX utiliza una sintaxis fácil y agradable.
  52 + - **ORGANIZACIÓN:** GetX permite el desacoplamiento total de la vista de la lógica de negocio.
59 53
60 * GetX ahorrará horas de desarrollo y extraerá el máximo rendimiento que su aplicación puede ofrecer, siendo fácil para los principiantes y precisa para los expertos. Navega sin contexto, abre diálogos, snackbars o bottomsheets desde cualquier lugar de tu código, gestiona estados e inyecta dependencias de forma fácil y práctica. Get es seguro, estable, actualizado y ofrece una amplia gama de API que no están presentes en el marco predeterminado. 54 * GetX ahorrará horas de desarrollo y extraerá el máximo rendimiento que su aplicación puede ofrecer, siendo fácil para los principiantes y precisa para los expertos. Navega sin contexto, abre diálogos, snackbars o bottomsheets desde cualquier lugar de tu código, gestiona estados e inyecta dependencias de forma fácil y práctica. Get es seguro, estable, actualizado y ofrece una amplia gama de API que no están presentes en el marco predeterminado.
61 55
@@ -63,54 +57,38 @@ @@ -63,54 +57,38 @@
63 57
64 **GetX hace que su desarrollo sea productivo, pero ¿quiere hacerlo aún más productivo? [Agregue la extensión a su VSCode](https://marketplace.visualstudio.com/items?itemName=get-snippets.get-snippets)** 58 **GetX hace que su desarrollo sea productivo, pero ¿quiere hacerlo aún más productivo? [Agregue la extensión a su VSCode](https://marketplace.visualstudio.com/items?itemName=get-snippets.get-snippets)**
65 59
66 -# Como contribuir  
67 -  
68 -_¿Quieres contribuir al proyecto? Estaremos orgullosos de destacarte como uno de nuestros colaboradores. Aquí hay algunos puntos en los que puede contribuir y hacer que GetX (y Flutter) sea aún mejor._ 60 +# Instalación
69 61
70 -- Ayudando a traducir el archivo Léame a otros idiomas.  
71 -  
72 -- Agregar documentación al archivo Léame (ni siquiera la mitad de las funciones de GetX han sido documentadas todavía).  
73 -  
74 -- Escriba artículos o haga videos que enseñen cómo usar GetX (se insertarán en el archivo Léame y en el futuro en nuestro Wiki).  
75 -  
76 -- Ofreciendo PRs para código/pruebas.  
77 -  
78 -- Incluyendo nuevas funciones.  
79 -  
80 -# Installing  
81 -  
82 -Add Get to your pubspec.yaml file: 62 +Añada la librería Get en tu archivo pubspec.yaml:
83 63
84 ```yaml 64 ```yaml
85 dependencies: 65 dependencies:
86 get: 66 get:
87 ``` 67 ```
88 68
89 -Importar archivos get que se utilizarán: 69 +Importe Get en los archivos en los que se utilizará:
90 70
91 ```dart 71 ```dart
92 import 'package:get/get.dart'; 72 import 'package:get/get.dart';
93 ``` 73 ```
94 74
95 -# Proyecto Counter no GetX 75 +# Proyecto Contador con GetX
96 76
97 Vea una explicación más detallada de la administración del estado [aquí](./documentation/es_ES/state_management.md). Allí verá más ejemplos y también la diferencia entre el Gestión del Estado simple y el Gestión del Estado reactivo 77 Vea una explicación más detallada de la administración del estado [aquí](./documentation/es_ES/state_management.md). Allí verá más ejemplos y también la diferencia entre el Gestión del Estado simple y el Gestión del Estado reactivo
98 78
99 El proyecto "contador" creado por defecto en un nuevo proyecto en Flutter tiene más de 100 líneas (con comentarios). Para mostrar el poder de GetX, demostraré cómo hacer un "contador" cambiando el estado con cada clic, cambiando de página y compartiendo el estado entre pantallas, todo de manera organizada, separando la vista de la lógica de negocio, SOLO 26 LÍNEAS DE CÓDIGO INCLUIDOS COMENTARIOS. 79 El proyecto "contador" creado por defecto en un nuevo proyecto en Flutter tiene más de 100 líneas (con comentarios). Para mostrar el poder de GetX, demostraré cómo hacer un "contador" cambiando el estado con cada clic, cambiando de página y compartiendo el estado entre pantallas, todo de manera organizada, separando la vista de la lógica de negocio, SOLO 26 LÍNEAS DE CÓDIGO INCLUIDOS COMENTARIOS.
100 80
101 -- Paso 1:  
102 - Agregue "Get" antes de su materialApp, convirtiéndolo en GetMaterialApp 81 +- Paso 1: Agregue "Get" antes de su materialApp, convirtiéndolo en GetMaterialApp
103 82
104 ```dart 83 ```dart
105 void main() => runApp(GetMaterialApp(home: Home())); 84 void main() => runApp(GetMaterialApp(home: Home()));
106 ``` 85 ```
107 86
108 -**Nota**: esto no modifica el MaterialApp del Flutter, GetMaterialApp no es una MaterialApp modificado, es solo un Widget preconfigurado, que tiene como child un MaterialApp por defecto. Puede configurar esto manualmente, pero definitivamente no es necesario. GetMaterialApp creará rutas, las inyectará, inyectará traducciones, inyectará todo lo que necesita para la navegación de rutas. Si usa Get solo para la gestión de estado o dependencias, no es necesario usar GetMaterialApp. GetMaterialApp es necesario para rutas, snackbars, internacionalización, bottomSheets, diálogos y APIs de alto nivel relacionadas con rutas y ausencia de contexto. 87 +**Nota**: esto no modifica el MaterialApp del Flutter, GetMaterialApp no es una MaterialApp modificado, es solo un Widget preconfigurado que tiene como child un MaterialApp por defecto. Puede configurar esto manualmente, pero definitivamente no es necesario. GetMaterialApp creará rutas, las inyectará, inyectará traducciones, inyectará todo lo que necesita para la navegación de rutas. Si usa Get solo para la gestión de estado o dependencias, no es necesario usar GetMaterialApp. GetMaterialApp es necesario para rutas, snackbars, internacionalización, bottomSheets, diálogos y APIs de alto nivel relacionadas con rutas y ausencia de contexto.
109 88
110 -**Note²:** Este paso solo es necesario si vas a usar route management (`Get.to()`, `Get.back()` y así). Si no lo va a usar, no es necesario que realice el paso 1 89 +**Nota²:** Este paso solo es necesario si va a usar route management (`Get.to()`, `Get.back()` y así). Si no lo va a usar, no es necesario que realice el paso 1
111 90
112 -- Paso 2:  
113 - Cree su clase con la lógica de negocio colocando todas las variables, métodos y controladores dentro de ella. Puede hacer que cualquier variable sea observable usando un simple ".obs". 91 +- Paso 2: Cree su clase con la lógica de negocio colocando todas las variables, métodos y controladores dentro de ella. Puede hacer que cualquier variable sea observable usando un simple ".obs".
114 92
115 ```dart 93 ```dart
116 class Controller extends GetxController { 94 class Controller extends GetxController {
@@ -119,8 +97,7 @@ class Controller extends GetxController { @@ -119,8 +97,7 @@ class Controller extends GetxController {
119 } 97 }
120 ``` 98 ```
121 99
122 -- Paso 3:  
123 - Cree su vista, use StatelessWidget y ahorre algo de RAM, con GetX ya no necesitará usar StatefulWidget. 100 +- Paso 3: Cree su vista, use StatelessWidget y ahorre algo de RAM, con GetX ya no necesitará usar StatefulWidget.
124 101
125 ```dart 102 ```dart
126 class Home extends StatelessWidget { 103 class Home extends StatelessWidget {
@@ -483,21 +460,18 @@ void localLogWriter(String text, {bool isError = false}) { @@ -483,21 +460,18 @@ void localLogWriter(String text, {bool isError = false}) {
483 460
484 Amateur Coder hizo un video asombroso sobre utilidades, almacenamiento, enlaces y otras características! Link: [GetX Other Features](https://youtu.be/ttQtlX_Q0eU) 461 Amateur Coder hizo un video asombroso sobre utilidades, almacenamiento, enlaces y otras características! Link: [GetX Other Features](https://youtu.be/ttQtlX_Q0eU)
485 462
486 -# Rompiendo cambios desde 2.0 463 +# Cambios importantes desde 2.0
487 464
488 1- Rx types: 465 1- Rx types:
489 466
490 -Antes: StringX ahora: RxString  
491 -  
492 -Antes: IntX ahora: RxInt  
493 -  
494 -Antes: MapX ahora: RxMap  
495 -  
496 -Antes: ListX ahora: RxList  
497 -  
498 -Antes: NumX ahora: RxNum  
499 -  
500 -Antes: RxDouble ahora: RxDouble 467 +| Antes | Ahora |
  468 +| ------- | ---------- |
  469 +| StringX | `RxString` |
  470 +| IntX | `RxInt` |
  471 +| MapX | `RxMap` |
  472 +| ListX | `RxList` |
  473 +| NumX | `RxNum` |
  474 +| DoubleX | `RxDouble` |
501 475
502 RxController y GetBuilder ahora se han fusionado, ya no necesita memorizar qué controlador desea usar, solo use GetXController, funcionará para gestión de estádo simple y también para reactivo. 476 RxController y GetBuilder ahora se han fusionado, ya no necesita memorizar qué controlador desea usar, solo use GetXController, funcionará para gestión de estádo simple y también para reactivo.
503 477
@@ -553,3 +527,49 @@ GetMaterialApp( @@ -553,3 +527,49 @@ GetMaterialApp(
553 Si necesita contexto para encontrar un InheritedWidget, lo necesita en la vista o pasado por parámetro. En particular, encuentro esta solución muy fea, y para trabajar en equipo siempre tendremos una dependencia de la lógica de negocios de la vista. Getx no es ortodoxo con el enfoque estándar, y aunque no prohíbe completamente el uso de StatefulWidgets, InitState, etc., siempre tiene un enfoque similar que puede ser más limpio. Los controladores tienen ciclos de vida, y cuando necesita hacer una solicitud API REST, por ejemplo, no depende de nada en la vista. Puede usar onInit para iniciar la llamada http, y cuando lleguen los datos, se rellenarán las variables. Como GetX es completamente reactivo (realmente, y funciona bajo streams), una vez que se llenan los elementos, todos los widgets que usan esa variable se actualizarán automáticamente en la vista. Esto permite que las personas con experiencia en IU trabajen solo con widgets y no tengan que enviar nada a la lógica de negocios que no sean eventos de usuario (como hacer clic en un botón), mientras que las personas que trabajan con lógica de negocios podrán crearla y probarla por separado. 527 Si necesita contexto para encontrar un InheritedWidget, lo necesita en la vista o pasado por parámetro. En particular, encuentro esta solución muy fea, y para trabajar en equipo siempre tendremos una dependencia de la lógica de negocios de la vista. Getx no es ortodoxo con el enfoque estándar, y aunque no prohíbe completamente el uso de StatefulWidgets, InitState, etc., siempre tiene un enfoque similar que puede ser más limpio. Los controladores tienen ciclos de vida, y cuando necesita hacer una solicitud API REST, por ejemplo, no depende de nada en la vista. Puede usar onInit para iniciar la llamada http, y cuando lleguen los datos, se rellenarán las variables. Como GetX es completamente reactivo (realmente, y funciona bajo streams), una vez que se llenan los elementos, todos los widgets que usan esa variable se actualizarán automáticamente en la vista. Esto permite que las personas con experiencia en IU trabajen solo con widgets y no tengan que enviar nada a la lógica de negocios que no sean eventos de usuario (como hacer clic en un botón), mientras que las personas que trabajan con lógica de negocios podrán crearla y probarla por separado.
554 528
555 Esta librería siempre se actualizará e implementará nuevas características. Siéntase libre de ofrecer PRs y contribuir a ellas. 529 Esta librería siempre se actualizará e implementará nuevas características. Siéntase libre de ofrecer PRs y contribuir a ellas.
  530 +
  531 +# Comunidad
  532 +
  533 +## Canales de la comunidad
  534 +
  535 +GetX tiene una comunidad muy activa e implicada. Si tiene dudas, o necesita cualquier tipo de asistencia sobre el uso de este framework, no dude en unirse a nuestr, tu duda será resuelta lo antes posible. Este repositorio es de uso exclusivo para abrir issues, pero siéntase libre de unirse a la Comunidad de GetX.
  536 +
  537 +
  538 +| **Slack (🇬🇧)** | **Discord (🇬🇧 y 🇵🇹)** | **Telegram (🇵🇹)** |
  539 +| :-------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------- |
  540 +| [![Get on Slack](https://img.shields.io/badge/slack-join-orange.svg)](https://communityinviter.com/apps/getxworkspace/getx) | [![Discord Shield](https://img.shields.io/discord/722900883784073290.svg?logo=discord)](https://discord.com/invite/9Hpt99N) | [![Telegram](https://img.shields.io/badge/chat-on%20Telegram-blue.svg)](https://t.me/joinchat/PhdbJRmsZNpAqSLJL6bH7g) |
  541 +
  542 +
  543 +# Cómo contribuir
  544 +
  545 +_¿Quieres contribuir al proyecto? Estaremos orgullosos de destacarte como uno de nuestros colaboradores. Aquí hay algunos puntos en los que puede contribuir y hacer que GetX (y Flutter) sea aún mejor._
  546 +
  547 +- Ayudando a traducir el archivo Léame a otros idiomas.
  548 +
  549 +- Agregar documentación al archivo Léame (ni siquiera la mitad de las funciones de GetX han sido documentadas todavía).
  550 +
  551 +- Escriba artículos o haga videos que enseñen cómo usar GetX (se insertarán en el archivo Léame y en el futuro en nuestro Wiki).
  552 +
  553 +- Ofreciendo PRs para código/pruebas.
  554 +
  555 +- Incluyendo nuevas funciones.
  556 +
  557 +¡Cualquier contribución es bienvenida!
  558 +
  559 +## Artículos y vídeos (inglés)
  560 +
  561 +- [Flutter Getx EcoSystem package for arabic people](https://www.youtube.com/playlist?list=PLV1fXIAyjeuZ6M8m56zajMUwu4uE3-SL0) - Tutorial by [Pesa Coder](https://github.com/UsamaElgendy).
  562 +- [Dynamic Themes in 3 lines using GetX™](https://medium.com/swlh/flutter-dynamic-themes-in-3-lines-c3b375f292e3) - Tutorial by [Rod Brown](https://github.com/RodBr).
  563 +- [Complete GetX™ Navigation](https://www.youtube.com/watch?v=RaqPIoJSTtI) - Route management video by Amateur Coder.
  564 +- [Complete GetX State Management](https://www.youtube.com/watch?v=CNpXbeI_slw) - State management video by Amateur Coder.
  565 +- [GetX™ Other Features](https://youtu.be/ttQtlX_Q0eU) - Utils, storage, bindings and other features video by Amateur Coder.
  566 +- [Firestore User with GetX | Todo App](https://www.youtube.com/watch?v=BiV0DcXgk58) - Video by Amateur Coder.
  567 +- [Firebase Auth with GetX | Todo App](https://www.youtube.com/watch?v=-H-T_BSgfOE) - Video by Amateur Coder.
  568 +- [The Flutter GetX™ Ecosystem ~ State Management](https://medium.com/flutter-community/the-flutter-getx-ecosystem-state-management-881c7235511d) - State management by [Aachman Garg](https://github.com/imaachman).
  569 +- [The Flutter GetX™ Ecosystem ~ Dependency Injection](https://medium.com/flutter-community/the-flutter-getx-ecosystem-dependency-injection-8e763d0ec6b9) - Dependency Injection by [Aachman Garg](https://github.com/imaachman).
  570 +- [GetX, the all-in-one Flutter package](https://www.youtube.com/watch?v=IYQgtu9TM74) - A brief tutorial covering State Management and Navigation by Thad Carnevalli.
  571 +- [Build a To-do List App from scratch using Flutter and GetX](https://www.youtube.com/watch?v=EcnqFasHf18) - UI + State Management + Storage video by Thad Carnevalli.
  572 +- [GetX Flutter Firebase Auth Example](https://medium.com/@jeffmcmorris/getx-flutter-firebase-auth-example-b383c1dd1de2) - Article by Jeff McMorris.
  573 +- [Flutter State Management with GetX – Complete App](https://www.appwithflutter.com/flutter-state-management-with-getx/) - by App With Flutter.
  574 +- [Flutter Routing with Animation using Get Package](https://www.appwithflutter.com/flutter-routing-using-get-package/) - by App With Flutter.
  575 +- [A minimal example on dartpad](https://dartpad.dev/2b3d0d6f9d4e312c5fdbefc414c1727e?) - by [Roi Peker](https://github.com/roipeker)
@@ -303,7 +303,7 @@ class GetConnect extends GetConnectInterface { @@ -303,7 +303,7 @@ class GetConnect extends GetConnectInterface {
303 }) async { 303 }) async {
304 try { 304 try {
305 final res = await post( 305 final res = await post(
306 - _concatUrl(url), 306 + url,
307 {'query': query, 'variables': variables}, 307 {'query': query, 'variables': variables},
308 headers: headers, 308 headers: headers,
309 ); 309 );
@@ -319,7 +319,7 @@ class GetConnect extends GetConnectInterface { @@ -319,7 +319,7 @@ class GetConnect extends GetConnectInterface {
319 )) 319 ))
320 .toList()); 320 .toList());
321 } 321 }
322 - return GraphQLResponse<T>(body: res.body['data'] as T?); 322 + return GraphQLResponse<T>.fromResponse(res);
323 } on Exception catch (_) { 323 } on Exception catch (_) {
324 return GraphQLResponse<T>(graphQLErrors: [ 324 return GraphQLResponse<T>(graphQLErrors: [
325 GraphQLError( 325 GraphQLError(
@@ -339,7 +339,7 @@ class GetConnect extends GetConnectInterface { @@ -339,7 +339,7 @@ class GetConnect extends GetConnectInterface {
339 }) async { 339 }) async {
340 try { 340 try {
341 final res = await post( 341 final res = await post(
342 - _concatUrl(url), 342 + url,
343 {'query': mutation, 'variables': variables}, 343 {'query': mutation, 'variables': variables},
344 headers: headers, 344 headers: headers,
345 ); 345 );
@@ -355,7 +355,7 @@ class GetConnect extends GetConnectInterface { @@ -355,7 +355,7 @@ class GetConnect extends GetConnectInterface {
355 )) 355 ))
356 .toList()); 356 .toList());
357 } 357 }
358 - return GraphQLResponse<T>(body: res.body['data'] as T?); 358 + return GraphQLResponse<T>.fromResponse(res);
359 } on Exception catch (_) { 359 } on Exception catch (_) {
360 return GraphQLResponse<T>(graphQLErrors: [ 360 return GraphQLResponse<T>(graphQLErrors: [
361 GraphQLError( 361 GraphQLError(
@@ -7,6 +7,16 @@ import '../status/http_status.dart'; @@ -7,6 +7,16 @@ import '../status/http_status.dart';
7 class GraphQLResponse<T> extends Response<T> { 7 class GraphQLResponse<T> extends Response<T> {
8 final List<GraphQLError>? graphQLErrors; 8 final List<GraphQLError>? graphQLErrors;
9 GraphQLResponse({T? body, this.graphQLErrors}) : super(body: body); 9 GraphQLResponse({T? body, this.graphQLErrors}) : super(body: body);
  10 + GraphQLResponse.fromResponse(Response res)
  11 + : graphQLErrors = null,
  12 + super(
  13 + request: res.request,
  14 + statusCode: res.statusCode,
  15 + bodyBytes: res.bodyBytes,
  16 + bodyString: res.bodyString,
  17 + statusText: res.statusText,
  18 + headers: res.headers,
  19 + body: res.body['data'] as T?);
10 } 20 }
11 21
12 class Response<T> { 22 class Response<T> {
@@ -60,7 +70,8 @@ class Response<T> { @@ -60,7 +70,8 @@ class Response<T> {
60 final T? body; 70 final T? body;
61 } 71 }
62 72
63 -Future<String> bodyBytesToString(Stream<List<int>> bodyBytes, Map<String, String> headers) { 73 +Future<String> bodyBytesToString(
  74 + Stream<List<int>> bodyBytes, Map<String, String> headers) {
64 return bodyBytes.bytesToString(_encodingForHeaders(headers)); 75 return bodyBytes.bytesToString(_encodingForHeaders(headers));
65 } 76 }
66 77
@@ -101,7 +112,9 @@ class HeaderValue { @@ -101,7 +112,9 @@ class HeaderValue {
101 } 112 }
102 113
103 static HeaderValue parse(String value, 114 static HeaderValue parse(String value,
104 - {String parameterSeparator = ';', String? valueSeparator, bool preserveBackslash = false}) { 115 + {String parameterSeparator = ';',
  116 + String? valueSeparator,
  117 + bool preserveBackslash = false}) {
105 var result = HeaderValue(); 118 var result = HeaderValue();
106 result._parse(value, parameterSeparator, valueSeparator, preserveBackslash); 119 result._parse(value, parameterSeparator, valueSeparator, preserveBackslash);
107 return result; 120 return result;
@@ -131,7 +144,8 @@ class HeaderValue { @@ -131,7 +144,8 @@ class HeaderValue {
131 return stringBuffer.toString(); 144 return stringBuffer.toString();
132 } 145 }
133 146
134 - void _parse(String value, String parameterSeparator, String? valueSeparator, bool preserveBackslash) { 147 + void _parse(String value, String parameterSeparator, String? valueSeparator,
  148 + bool preserveBackslash) {
135 var index = 0; 149 var index = 0;
136 150
137 bool done() => index == value.length; 151 bool done() => index == value.length;
@@ -283,8 +283,10 @@ extension ExtensionDialog on GetInterface { @@ -283,8 +283,10 @@ extension ExtensionDialog on GetInterface {
283 /// Custom UI Dialog. 283 /// Custom UI Dialog.
284 Future<T?> defaultDialog<T>({ 284 Future<T?> defaultDialog<T>({
285 String title = "Alert", 285 String title = "Alert",
  286 + EdgeInsetsGeometry? titlePadding,
286 TextStyle? titleStyle, 287 TextStyle? titleStyle,
287 Widget? content, 288 Widget? content,
  289 + EdgeInsetsGeometry? contentPadding,
288 VoidCallback? onConfirm, 290 VoidCallback? onConfirm,
289 VoidCallback? onCancel, 291 VoidCallback? onCancel,
290 VoidCallback? onCustom, 292 VoidCallback? onCustom,
@@ -361,8 +363,8 @@ extension ExtensionDialog on GetInterface { @@ -361,8 +363,8 @@ extension ExtensionDialog on GetInterface {
361 } 363 }
362 364
363 Widget baseAlertDialog = AlertDialog( 365 Widget baseAlertDialog = AlertDialog(
364 - titlePadding: EdgeInsets.all(8),  
365 - contentPadding: EdgeInsets.all(8), 366 + titlePadding: titlePadding ?? EdgeInsets.all(8),
  367 + contentPadding: contentPadding ?? EdgeInsets.all(8),
366 368
367 backgroundColor: backgroundColor ?? theme.dialogBackgroundColor, 369 backgroundColor: backgroundColor ?? theme.dialogBackgroundColor,
368 shape: RoundedRectangleBorder( 370 shape: RoundedRectangleBorder(