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