diff --git a/lib/Components/multi_select_dropdown_container.dart b/lib/Components/multi_select_dropdown_container.dart new file mode 100644 index 0000000..5def6e3 --- /dev/null +++ b/lib/Components/multi_select_dropdown_container.dart @@ -0,0 +1,78 @@ +import 'package:flutter/material.dart'; +import 'package:manager_app/constants.dart'; +import 'package:multi_select_flutter/chip_display/multi_select_chip_display.dart'; +import 'package:multi_select_flutter/dialog/multi_select_dialog_field.dart'; +import 'package:multi_select_flutter/util/multi_select_item.dart'; +import 'package:multi_select_flutter/util/multi_select_list_type.dart'; + +import 'message_notification.dart'; + +class MultiSelectDropdownContainer extends StatelessWidget { + final Color color; + final String label; + final List values; + final List initialValue; + final bool isMultiple; + final bool isAtLeastOne; + final ValueChanged> onChanged; + const MultiSelectDropdownContainer({ + Key key, + this.color = kSecond, + this.label, + this.values, + this.initialValue, + this.isMultiple, + this.isAtLeastOne = false, + this.onChanged, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + Size size = MediaQuery.of(context).size; + return Container( + child: Row( + children: [ + Align( + alignment: AlignmentDirectional.centerStart, + child: Text(label, style: TextStyle(fontSize: 25, fontWeight: FontWeight.w300)) + ), + Padding( + padding: const EdgeInsets.all(10.0), + child: Container( + width: size.width *0.2, + child: MultiSelectDialogField( + items: values.map((e) => MultiSelectItem(e, e)).toList(), + listType: MultiSelectListType.LIST, + cancelText: Text("Annuler"), + initialValue: initialValue, + buttonText: Text("Sélectionner"), + checkColor: Colors.white, + searchable: true, + chipDisplay: MultiSelectChipDisplay.none(), + selectedColor: kPrimaryColor, + title: Text("Veuillez sélectionner une langue"), + dialogHeight: size.height *0.4, + dialogWidth: size.width *0.2, + onConfirm: (values) { + print("do something"); + //_selectedAnimals = values; + }, + onSelectionChanged: (selectedList) { + onChanged(selectedList); + }, + ),/*MultiSelectDropdown( + values, + initialValue, + isMultiple, + isAtLeastOne, + onSelectionChanged: (selectedList) { + onChanged(selectedList); + }, + )*/ + ), + ), + ], + ), + ); + } +} \ No newline at end of file diff --git a/lib/Screens/Configurations/configuration_detail_screen.dart b/lib/Screens/Configurations/configuration_detail_screen.dart index 5e6ed02..9aaeaca 100644 --- a/lib/Screens/Configurations/configuration_detail_screen.dart +++ b/lib/Screens/Configurations/configuration_detail_screen.dart @@ -11,6 +11,7 @@ import 'package:manager_app/Components/confirmation_dialog.dart'; import 'package:manager_app/Components/loading_common.dart'; import 'package:manager_app/Components/message_notification.dart'; import 'package:manager_app/Components/multi_select_container.dart'; +import 'package:manager_app/Components/multi_select_dropdown_container.dart'; import 'package:manager_app/Components/rounded_button.dart'; import 'package:manager_app/Components/string_input_container.dart'; import 'package:manager_app/Helpers/FileHelper.dart'; @@ -168,7 +169,7 @@ class _ConfigurationDetailScreenState extends State { configurationDTO.label = value; }, ), - MultiSelectContainer( + MultiSelectDropdownContainer( label: "Langues :", initialValue: configurationDTO.languages != null ? configurationDTO.languages: [], values: languages, @@ -180,6 +181,18 @@ class _ConfigurationDetailScreenState extends State { //print(configurationDTO.languages); }, ), + /*MultiSelectContainer( + label: "Langues :", + initialValue: configurationDTO.languages != null ? configurationDTO.languages: [], + values: languages, + isMultiple: true, + isAtLeastOne: true, + onChanged: (value) { + var tempOutput = new List.from(value); + configurationDTO.languages = tempOutput; + //print(configurationDTO.languages); + }, + ),*/ CheckInputContainer( icon: Icons.signal_wifi_off, label: "Hors ligne :", diff --git a/lib/constants.dart b/lib/constants.dart index a52be9a..a065514 100644 --- a/lib/constants.dart +++ b/lib/constants.dart @@ -15,7 +15,7 @@ const kSuccess = Color(0xFF8bc34a); const List section_types = ["Map", "Slider", "Video", "Web", "Menu", "Quizz", "Article"]; const List map_types = ["none", "normal", "satellite", "terrain", "hybrid"]; -const List languages = ["FR", "NL", "EN", "DE"]; +const List languages = ["FR", "NL", "EN", "DE", "IT", "ES", "CN", "PL"]; const List resource_types = ["image", "image url"]; // "video url" , "video", /* diff --git a/pubspec.lock b/pubspec.lock index 4ee815b..3de08b6 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -254,6 +254,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.7.0" + multi_select_flutter: + dependency: "direct main" + description: + name: multi_select_flutter + url: "https://pub.dartlang.org" + source: hosted + version: "4.1.2" multiselect_formfield: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 8b20374..3c35b94 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -42,6 +42,7 @@ dependencies: encrypt: ^5.0.0 qr_flutter: ^4.0.0 pdf: ^3.6.0 + multi_select_flutter: ^4.1.2 #msix: ^2.1.3 #window_size: # git: