buildJsonEditText static method
Implementation
static Widget buildJsonEditText({
required BuildContext context,
required String id,
String? defaultValue,
required TranslationEntry label,
List<ValueValidator>? validators,
required Map<String, dynamic> values,
}) {
assert(id.isNotEmpty == true);
if (values[id] == null && defaultValue != null) {
values[id] = defaultValue;
}
final translator = Translator.of(context);
final encoder = const JsonEncoder.withIndent(' ');
var initialValue = values[id]?.toString();
if (initialValue?.isNotEmpty == true) {
try {
initialValue = encoder.convert(json.decode(initialValue!));
} catch (e) {
// no-op
}
}
return TextFormField(
autovalidateMode: validators?.isNotEmpty == true
? AutovalidateMode.always
: AutovalidateMode.disabled,
decoration: InputDecoration(
labelText: translator.translate(label),
),
initialValue: initialValue,
inputFormatters:
autoformatJson == true ? [_JsonTextInputFormatter()] : null,
maxLines: 5,
onChanged: (value) {
var encoded = '';
try {
encoded = json.encode(json.decode(value));
} catch (e) {
encoded = '';
}
values[id] = encoded;
},
onEditingComplete: () {},
smartQuotesType: SmartQuotesType.disabled,
validator: (value) => validators?.isNotEmpty == true
? Validator(validators: validators!).validate(
context: context,
label: translator.translate(label),
value: value,
)
: null,
);
}