import 'dart:convert'; import 'package:auto_size_text/auto_size_text.dart'; import 'package:flutter/material.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/constants.dart'; import 'package:manager_api_new/api.dart'; class MultiStringInputContainer extends StatelessWidget { final Color color; final String label; final String modalLabel; final List initialValue; final Function onGetResult; final int maxLines; final bool isTitle; final bool isAudio; final bool isHTML; final double fontSize; 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.isAudio = false, this.isHTML = false, this.fontSize = 25, }) : super(key: key); @override Widget build(BuildContext context) { Size size = MediaQuery.of(context).size; return Container( child: Row( children: [ Align( alignment: AlignmentDirectional.centerStart, child: AutoSizeText( label, style: TextStyle(fontSize: fontSize, fontWeight: FontWeight.w300), maxLines: 2, maxFontSize: fontSize, textAlign: TextAlign.center, ) ), Padding( padding: const EdgeInsets.all(10.0), child: Container( width: size.width *0.15, child: InkWell( onTap: () { List newValues = []; List initials = initialValue; if(initials == null) { initials = []; } languages.forEach((value) { if(initials.map((iv) => iv.language).contains(value)) { newValues.add(TranslationDTO.fromJson(jsonDecode(jsonEncode(initials.firstWhere((element) => element.language == value)))!)!); } else { // New language newValues.add(TranslationDTO(language: value, value: "")); } }); if(isHTML) { showMultiStringInputHTML(label, modalLabel, isTitle, initials, newValues, onGetResult, maxLines, isAudio, context); } else { showMultiStringInput(label, modalLabel, isTitle, initials, newValues, onGetResult, maxLines, isAudio, context); } }, child: Container( decoration: BoxDecoration( color: color, borderRadius: BorderRadius.circular(50), ), child: Padding( padding: const EdgeInsets.only(left: 5, right: 5, top: 15, bottom: 15), child: Center( child: AutoSizeText( isAudio ? "Changer audios" : "Changer traductions", style: TextStyle(color: kWhite), maxLines: 2, ) ), ) ), ), ), ), ], ), ); } }