radioField method

String radioField(
  1. String elementName,
  2. String elementType,
  3. Map<String, dynamic> map, {
  4. String? parent,
})

Implementation

String radioField(String elementName, String elementType, Map<String, dynamic> map, {String? parent}) {
  String items;
  if (map['type'] == 'enum') {
    items = '''
     ${elementType}.values.map((value) {
            return ListTile(
              title: const Text(value.toString().split('.').last),
              leading: Radio(
                value: value.toString().split('.').last,
                groupValue: _selectedValue,
                onChanged: (value) {
                  setState(() {
                    _selectedValue = value;
                  });
                  onSaved('${elementName}', value);
                },

            );
          }).toList()
    ''';
  } else {
    items = '[' + (map['options'] as List<Map<String, dynamic>>).map((e) => '''ListTile(
              title: const Text("${e['label'] ?? e['value'].toString()}"),
              leading: Radio(
                value: "${e['value'].toString()}",
                groupValue: _selectedValue,
                onChanged: (value) {
                  setState(() {
                    _selectedValue = value;
                  });
                  onSaved('${elementName}', value);
                },
              ),
            )''').toList().join(',\n') + ']';
  }

  return '''
     var _selectedValue = _formData['${elementName}'];
    return Column(
      children: $items,
    )
    ''';
}