Showing
1 changed file
with
64 additions
and
64 deletions
@@ -36,9 +36,9 @@ | @@ -36,9 +36,9 @@ | ||
36 | - [Locale du Système](#locale-du-systeme) | 36 | - [Locale du Système](#locale-du-systeme) |
37 | - [Changer le Thème](#changer-le-theme) | 37 | - [Changer le Thème](#changer-le-theme) |
38 | - [GetConnect](#getconnect) | 38 | - [GetConnect](#getconnect) |
39 | - - [Default configuration](#default-configuration) | ||
40 | - - [Custom configuration](#custom-configuration) | ||
41 | - - [GetPage Middleware](#getpage-middleware) | 39 | + - [Configuration par défaut](#configuration-par-defaut) |
40 | + - [Configuration personnalisée](#configuration-personnalisee) | ||
41 | + - [Middleware GetPage](#middleware-getpage) | ||
42 | - [Priority](#priority) | 42 | - [Priority](#priority) |
43 | - [Redirect](#redirect) | 43 | - [Redirect](#redirect) |
44 | - [onPageCalled](#onpagecalled) | 44 | - [onPageCalled](#onpagecalled) |
@@ -46,9 +46,9 @@ | @@ -46,9 +46,9 @@ | ||
46 | - [OnPageBuildStart](#onpagebuildstart) | 46 | - [OnPageBuildStart](#onpagebuildstart) |
47 | - [OnPageBuilt](#onpagebuilt) | 47 | - [OnPageBuilt](#onpagebuilt) |
48 | - [OnPageDispose](#onpagedispose) | 48 | - [OnPageDispose](#onpagedispose) |
49 | - - [Other Advanced APIs](#other-advanced-apis) | ||
50 | - - [Optional Global Settings and Manual configurations](#optional-global-settings-and-manual-configurations) | ||
51 | - - [Local State Widgets](#local-state-widgets) | 49 | + - [Autres APIs](#autres-apis) |
50 | + - [Paramètres globaux et configurations manuelles facultatifs](#parametres-globaux-et-configurations-manuelles-facultatifs) | ||
51 | + - [State Widgets Locaux](#state-widgets-locaux) | ||
52 | - [ValueBuilder](#valuebuilder) | 52 | - [ValueBuilder](#valuebuilder) |
53 | - [ObxValue](#obxvalue) | 53 | - [ObxValue](#obxvalue) |
54 | - [Useful tips](#useful-tips) | 54 | - [Useful tips](#useful-tips) |
@@ -578,7 +578,7 @@ Cette fonction sera appelée juste après l'appel de la fonction GetPage.page et | @@ -578,7 +578,7 @@ Cette fonction sera appelée juste après l'appel de la fonction GetPage.page et | ||
578 | 578 | ||
579 | Cette fonction sera appelée juste après avoir disposé tous les objets associés (contrôleurs, vues, ...) à la page. | 579 | Cette fonction sera appelée juste après avoir disposé tous les objets associés (contrôleurs, vues, ...) à la page. |
580 | 580 | ||
581 | -## Other Advanced APIs | 581 | +## Autres APIs |
582 | 582 | ||
583 | ```dart | 583 | ```dart |
584 | // donne les arguments actuels de currentScreen | 584 | // donne les arguments actuels de currentScreen |
@@ -776,117 +776,117 @@ Ces Widgets vous permettent de gérer une valeur unique, et de garder l'état é | @@ -776,117 +776,117 @@ Ces Widgets vous permettent de gérer une valeur unique, et de garder l'état é | ||
776 | Nous avons des saveurs pour réactif et simple. | 776 | Nous avons des saveurs pour réactif et simple. |
777 | Par exemple, vous pouvez les utiliser pour basculer obscureText dans un `TextField`, peut-être créer un | 777 | Par exemple, vous pouvez les utiliser pour basculer obscureText dans un `TextField`, peut-être créer un |
778 | Panneau extensible, ou peut-être modifier l'index actuel dans `BottomNavigationBar` tout en modifiant le contenu | 778 | Panneau extensible, ou peut-être modifier l'index actuel dans `BottomNavigationBar` tout en modifiant le contenu |
779 | -de 'body' dans un «Scaffold». | 779 | +de 'body' dans un `Scaffold`. |
780 | 780 | ||
781 | #### ValueBuilder | 781 | #### ValueBuilder |
782 | 782 | ||
783 | -A simplification of `StatefulWidget` that works with a `.setState` callback that takes the updated value. | 783 | +Une simplification de `StatefulWidget` qui fonctionne avec un callback `.setState` qui prend la valeur mise à jour. |
784 | 784 | ||
785 | ```dart | 785 | ```dart |
786 | ValueBuilder<bool>( | 786 | ValueBuilder<bool>( |
787 | initialValue: false, | 787 | initialValue: false, |
788 | builder: (value, updateFn) => Switch( | 788 | builder: (value, updateFn) => Switch( |
789 | value: value, | 789 | value: value, |
790 | - onChanged: updateFn, // same signature! you could use ( newValue ) => updateFn( newValue ) | 790 | + onChanged: updateFn, // même signature! vous pouvez utiliser (newValue) => updateFn (newValue) |
791 | ), | 791 | ), |
792 | - // if you need to call something outside the builder method. | ||
793 | - onUpdate: (value) => print("Value updated: $value"), | ||
794 | - onDispose: () => print("Widget unmounted"), | 792 | + // si vous devez appeler quelque chose en dehors de la méthode du builder. |
793 | + onUpdate: (value) => print("Valeur mise à jour: $value"), | ||
794 | + onDispose: () => print("Widget détruit"), | ||
795 | ), | 795 | ), |
796 | ``` | 796 | ``` |
797 | 797 | ||
798 | #### ObxValue | 798 | #### ObxValue |
799 | 799 | ||
800 | -Similar to [`ValueBuilder`](#valuebuilder), but this is the Reactive version, you pass a Rx instance (remember the magical .obs?) and | ||
801 | -updates automatically... isn't it awesome? | 800 | +Similaire à [`ValueBuilder`](#valuebuilder), mais c'est la version Reactive, vous passez une instance Rx (rappelez-vous les .obs magiques?) et il |
801 | + se met à jour automatiquement ... n'est-ce pas génial? | ||
802 | 802 | ||
803 | ```dart | 803 | ```dart |
804 | ObxValue((data) => Switch( | 804 | ObxValue((data) => Switch( |
805 | value: data.value, | 805 | value: data.value, |
806 | - onChanged: data, // Rx has a _callable_ function! You could use (flag) => data.value = flag, | 806 | + onChanged: data, // Rx a une fonction _callable_! Vous pouvez utiliser (flag) => data.value = flag, |
807 | ), | 807 | ), |
808 | false.obs, | 808 | false.obs, |
809 | ), | 809 | ), |
810 | ``` | 810 | ``` |
811 | 811 | ||
812 | -## Useful tips | 812 | +## Conseils utiles |
813 | 813 | ||
814 | -`.obs`ervables (also known as _Rx_ Types) have a wide variety of internal methods and operators. | 814 | +`.obs`ervables (également appelés types _Rx_) ont une grande variété de méthodes et d'opérateurs internes. |
815 | 815 | ||
816 | -> Is very common to _believe_ that a property with `.obs` **IS** the actual value... but make no mistake! | ||
817 | -> We avoid the Type declaration of the variable, because Dart's compiler is smart enough, and the code | ||
818 | -> looks cleaner, but: | 816 | +> Il est très courant de croire qu'une propriété avec `.obs` ** EST ** la valeur réelle ... mais ne vous y trompez pas! |
817 | +> Nous évitons la déclaration Type de la variable, car le compilateur de Dart est assez intelligent, et le code | ||
818 | +> semble plus propre, mais: | ||
819 | 819 | ||
820 | ```dart | 820 | ```dart |
821 | var message = 'Hello world'.obs; | 821 | var message = 'Hello world'.obs; |
822 | -print( 'Message "$message" has Type ${message.runtimeType}'); | 822 | +print( 'Message "$message" est de Type ${message.runtimeType}'); |
823 | ``` | 823 | ``` |
824 | 824 | ||
825 | -Even if `message` _prints_ the actual String value, the Type is **RxString**! | 825 | +Bien que `message` _prints_ la vraie valeur du String, le Type est **RxString**! |
826 | 826 | ||
827 | -So, you can't do `message.substring( 0, 4 )`. | ||
828 | -You have to access the real `value` inside the _observable_: | ||
829 | -The most "used way" is `.value`, but, did you know that you can also use... | 827 | +Donc, vous ne pouvez pas faire `message.substring( 0, 4 )`. |
828 | +Vous devez utiliser la vraie `valeur` dans _observable_: | ||
829 | +La façon "la plus utilisée" est `.value`, mais, que vous pouviez aussi... | ||
830 | 830 | ||
831 | ```dart | 831 | ```dart |
832 | final name = 'GetX'.obs; | 832 | final name = 'GetX'.obs; |
833 | -// only "updates" the stream, if the value is different from the current one. | 833 | +// "met à jour" le flux, uniquement si la valeur est différente de la valeur actuelle. |
834 | name.value = 'Hey'; | 834 | name.value = 'Hey'; |
835 | 835 | ||
836 | -// All Rx properties are "callable" and returns the new value. | ||
837 | -// but this approach does not accepts `null`, the UI will not rebuild. | 836 | +// Toutes les propriétés Rx sont "appelables" et renvoie la nouvelle valeur. |
837 | +// mais cette approche n'accepte pas `null`, l'interface utilisateur ne sera pas reconstruite. | ||
838 | name('Hello'); | 838 | name('Hello'); |
839 | 839 | ||
840 | -// is like a getter, prints 'Hello'. | 840 | +// est comme un getter, affiche «Hello». |
841 | name() ; | 841 | name() ; |
842 | 842 | ||
843 | -/// numbers: | 843 | +/// nombres: |
844 | 844 | ||
845 | final count = 0.obs; | 845 | final count = 0.obs; |
846 | 846 | ||
847 | -// You can use all non mutable operations from num primitives! | 847 | +// Vous pouvez utiliser toutes les opérations non mutables à partir de num primitives! |
848 | count + 1; | 848 | count + 1; |
849 | 849 | ||
850 | -// Watch out! this is only valid if `count` is not final, but var | 850 | +// Fais attention! ceci n'est valable que si `count` n'est pas final, mais var |
851 | count += 1; | 851 | count += 1; |
852 | 852 | ||
853 | -// You can also compare against values: | 853 | +// Vous pouvez également comparer avec des valeurs: |
854 | count > 2; | 854 | count > 2; |
855 | 855 | ||
856 | /// booleans: | 856 | /// booleans: |
857 | 857 | ||
858 | final flag = false.obs; | 858 | final flag = false.obs; |
859 | 859 | ||
860 | -// switches the value between true/false | 860 | +// bascule la valeur entre true / false |
861 | flag.toggle(); | 861 | flag.toggle(); |
862 | 862 | ||
863 | 863 | ||
864 | -/// all types: | 864 | +/// tous les types: |
865 | 865 | ||
866 | -// Sets the `value` to null. | 866 | +// Définit la `valeur` sur null. |
867 | flag.nil(); | 867 | flag.nil(); |
868 | 868 | ||
869 | -// All toString(), toJson() operations are passed down to the `value` | ||
870 | -print( count ); // calls `toString()` inside for RxInt | 869 | +// Toutes les opérations toString (), toJson () sont transmises à la `valeur` |
870 | +print( count ); // appelle `toString ()` à l'intérieur de RxInt | ||
871 | 871 | ||
872 | final abc = [0,1,2].obs; | 872 | final abc = [0,1,2].obs; |
873 | -// Converts the value to a json Array, prints RxList | ||
874 | -// Json is supported by all Rx types! | 873 | +// Convertit la valeur en un Array json, affiche RxList |
874 | +// Json est pris en charge par tous les types Rx! | ||
875 | print('json: ${jsonEncode(abc)}, type: ${abc.runtimeType}'); | 875 | print('json: ${jsonEncode(abc)}, type: ${abc.runtimeType}'); |
876 | 876 | ||
877 | -// RxMap, RxList and RxSet are special Rx types, that extends their native types. | ||
878 | -// but you can work with a List as a regular list, although is reactive! | ||
879 | -abc.add(12); // pushes 12 to the list, and UPDATES the stream. | ||
880 | -abc[3]; // like Lists, reads the index 3. | 877 | +// RxMap, RxList et RxSet sont des types Rx spéciaux, qui étendent leurs types natifs. |
878 | +// mais vous pouvez travailler avec une liste comme une liste régulière, bien qu'elle soit réactive! | ||
879 | +abc.add(12); // pousse 12 dans la liste et MET À JOUR le flux. | ||
880 | +abc[3]; // comme Lists, lit l'index 3. | ||
881 | 881 | ||
882 | 882 | ||
883 | -// equality works with the Rx and the value, but hashCode is always taken from the value | 883 | +// l'égalité fonctionne avec le Rx et la valeur, mais hashCode est toujours pris à partir de la valeur |
884 | final number = 12.obs; | 884 | final number = 12.obs; |
885 | -print( number == 12 ); // prints > true | 885 | +print( number == 12 ); // retource > true |
886 | 886 | ||
887 | -/// Custom Rx Models: | 887 | +/// Modèles Rx personnalisés: |
888 | 888 | ||
889 | -// toJson(), toString() are deferred to the child, so you can implement override on them, and print() the observable directly. | 889 | +// toJson (), toString () sont différés à l'enfant, vous pouvez donc implémenter 'override' sur eux, et print() l'observable directement. |
890 | 890 | ||
891 | class User { | 891 | class User { |
892 | String name, last; | 892 | String name, last; |
@@ -894,20 +894,20 @@ class User { | @@ -894,20 +894,20 @@ class User { | ||
894 | User({this.name, this.last, this.age}); | 894 | User({this.name, this.last, this.age}); |
895 | 895 | ||
896 | @override | 896 | @override |
897 | - String toString() => '$name $last, $age years old'; | 897 | + String toString() => '$name $last, $age ans'; |
898 | } | 898 | } |
899 | 899 | ||
900 | final user = User(name: 'John', last: 'Doe', age: 33).obs; | 900 | final user = User(name: 'John', last: 'Doe', age: 33).obs; |
901 | 901 | ||
902 | -// `user` is "reactive", but the properties inside ARE NOT! | ||
903 | -// So, if we change some variable inside of it... | 902 | +// `user` est" réactif ", mais les propriétés à l'intérieur NE SONT PAS! |
903 | +// Donc, si nous changeons une variable à l'intérieur ... | ||
904 | user.value.name = 'Roi'; | 904 | user.value.name = 'Roi'; |
905 | -// The widget will not rebuild!, | ||
906 | -// `Rx` don't have any clue when you change something inside user. | ||
907 | -// So, for custom classes, we need to manually "notify" the change. | 905 | +// Le widget ne se reconstruira pas !, |
906 | +// `Rx` n'a aucun indice lorsque vous changez quelque chose à l'intérieur de l'utilisateur. | ||
907 | +// Donc, pour les classes personnalisées, nous devons "notifier" manuellement le changement. | ||
908 | user.refresh(); | 908 | user.refresh(); |
909 | 909 | ||
910 | -// or we can use the `update()` method! | 910 | +// ou utiliser `update()`! |
911 | user.update((value){ | 911 | user.update((value){ |
912 | value.name='Roi'; | 912 | value.name='Roi'; |
913 | }); | 913 | }); |
@@ -917,22 +917,22 @@ print( user ); | @@ -917,22 +917,22 @@ print( user ); | ||
917 | 917 | ||
918 | #### GetView | 918 | #### GetView |
919 | 919 | ||
920 | -I love this Widget, is so simple, yet, so useful! | 920 | +J'adore ce widget. Si simple, mais si utile! |
921 | 921 | ||
922 | -Is a `const Stateless` Widget that has a getter `controller` for a registered `Controller`, that's all. | 922 | +C'est un widget `const Stateless` qui a un getter` controller` pour un `Controller` enregistré, c'est tout. |
923 | 923 | ||
924 | ```dart | 924 | ```dart |
925 | class AwesomeController extends GetxController { | 925 | class AwesomeController extends GetxController { |
926 | final String title = 'My Awesome View'; | 926 | final String title = 'My Awesome View'; |
927 | } | 927 | } |
928 | 928 | ||
929 | - // ALWAYS remember to pass the `Type` you used to register your controller! | 929 | + // N'oubliez PAS de passer le `Type` que vous avez utilisé pour enregistrer votre contrôleur! |
930 | class AwesomeView extends GetView<AwesomeController> { | 930 | class AwesomeView extends GetView<AwesomeController> { |
931 | @override | 931 | @override |
932 | Widget build(BuildContext context) { | 932 | Widget build(BuildContext context) { |
933 | return Container( | 933 | return Container( |
934 | padding: EdgeInsets.all(20), | 934 | padding: EdgeInsets.all(20), |
935 | - child: Text(controller.title), // just call `controller.something` | 935 | + child: Text(controller.title), // appelez `controller.quelqueChose` |
936 | ); | 936 | ); |
937 | } | 937 | } |
938 | } | 938 | } |
@@ -940,11 +940,11 @@ Is a `const Stateless` Widget that has a getter `controller` for a registered `C | @@ -940,11 +940,11 @@ Is a `const Stateless` Widget that has a getter `controller` for a registered `C | ||
940 | 940 | ||
941 | #### GetResponsiveView | 941 | #### GetResponsiveView |
942 | 942 | ||
943 | -Extend this widget to build responsive view. | ||
944 | -this widget contains the `screen` property that have all | ||
945 | -information about the screen size and type. | 943 | +Étendez ce widget pour créer une vue réactive. |
944 | +ce widget contient la propriété `screen` qui a toutes les | ||
945 | +informations sur la taille et le type de l'écran. | ||
946 | 946 | ||
947 | -##### How to use it | 947 | +##### Guide d utilisation |
948 | 948 | ||
949 | You have two options to build it. | 949 | You have two options to build it. |
950 | 950 |
-
Please register or login to post a comment