manager-app/lib/Components/multi_string_input_container.dart

115 lines
3.7 KiB
Dart

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:manager_api_new/api.dart';
import 'package:manager_app/Components/multi_input_modal.dart';
import 'package:manager_app/Components/multi_string_input_html_modal.dart';
import 'package:manager_app/Models/managerContext.dart';
import 'package:manager_app/app_context.dart';
import 'package:manager_app/constants.dart';
import 'package:provider/provider.dart';
import 'package:auto_size_text/auto_size_text.dart';
class MultiStringInputContainer extends StatelessWidget {
final Color color;
final String label;
final String modalLabel;
final List<TranslationDTO> initialValue;
final Function(List<TranslationDTO>) onGetResult;
final int maxLines;
final bool isTitle;
final List<ResourceType>? resourceTypes;
final bool isHTML;
final double fontSize;
final bool isMandatory;
const MultiStringInputContainer({
Key? key,
this.color = kSecond,
required this.label,
required this.modalLabel,
required this.initialValue,
required this.onGetResult,
required this.maxLines,
required this.isTitle,
this.resourceTypes,
this.isHTML = false,
this.fontSize = 18,
this.isMandatory = true,
}) : super(key: key);
@override
Widget build(BuildContext context) {
final appContext = Provider.of<AppContext>(context);
final managerAppContext = appContext.getContext();
return FormField<List<TranslationDTO>>(
initialValue: initialValue,
builder: (state) {
return InputDecorator(
decoration: InputDecoration(
labelText: label,
border: OutlineInputBorder(borderRadius: BorderRadius.circular(8)),
contentPadding: EdgeInsets.symmetric(horizontal: 25, vertical: 20),
),
child: InkWell(
onTap: () {
List<TranslationDTO> newValues = [];
List<TranslationDTO> initials = initialValue;
// Préparer les valeurs pour toutes les langues
managerAppContext.selectedConfiguration!.languages!.forEach((lang) {
if (initials.any((iv) => iv.language == lang)) {
newValues.add(TranslationDTO.fromJson(
jsonDecode(jsonEncode(initials.firstWhere((e) => e.language == lang)))!)!);
} else {
newValues.add(TranslationDTO(language: lang, value: ""));
}
});
if (isHTML) {
showMultiStringInputHTML(
label,
modalLabel,
isTitle,
initials,
newValues,
onGetResult,
maxLines,
resourceTypes,
context,
isMandatory,
);
} else {
showMultiStringInput(
label,
modalLabel,
isTitle,
initials,
newValues,
onGetResult,
maxLines,
resourceTypes,
context,
);
}
},
child: Container(
height: 50,
decoration: BoxDecoration(
color: color,
borderRadius: BorderRadius.circular(50),
),
alignment: Alignment.center,
child: AutoSizeText(
resourceTypes == null ? "Changer traductions" : "Changer ressources",
style: TextStyle(color: kWhite, fontSize: fontSize),
maxLines: 1,
),
),
),
);
},
);
}
}