When I convert the hex value to ASCII and pass on the ASCII to textField, it doubles the text length. Below is the conversion I used and if you see from the screenshot, the total characters for both the textfields are 16, but it is showing as 32. May I know why the length is doubling? 
String hexToAscii(String hexString) => List.generate(
hexString.length ~/ 2,
(i) => String.fromCharCode(
int.parse(hexString.substring(i * 2, (i * 2) + 2), radix: 16)),
).join();
// Adding Textfield
final modelController = TextEditingController();
modelController.text = hexToAscii(tempData[0]); // Passing Data. I used your method in place of hexToAscii method. No Change
_buildExpandableContent(int selectedENPIndex) {
List<Widget> columnContent = [];
for (int i = 0; i < namePlates[selectedENPIndex].contents.length; i++) {
TextEditingController dynamicController = TextEditingController();
//var allowedCharacters = 'r\'^[a-zA-Z0-9. ]*\'';
var allowedCharacters = namePlates[selectedENPIndex].acceptingString[i];
//print("Allowed Characters: $allowedCharacters");
var allowedRegEx = RegExp(escape(allowedCharacters));
//print("Allowed RegEx: $allowedRegEx");
if (selectedENPIndex == 0) {
if (namePlates[selectedENPIndex]
.contents[i]
.replaceAll(RegExp('[^A-Za-z0-9]'), '')
.toLowerCase() ==
ENPTextFieldNames.model.name) {
dynamicController = modelController;
}
}
columnContent.add(Container(
padding: const EdgeInsets.only(left: 50, right: 50, bottom: 10),
child: TextFormField(
enableInteractiveSelection: false,
maxLength: selectedENPIndex == 2 ? 24 : 16,
// autofocus: true,
cursorColor: _selectedTheme.primaryColorDark,
// inputFormatters: <TextInputFormatter>[
// FilteringTextInputFormatter.allow(RegExp(allowedCharacters))
// ],
onChanged: (value) {
checkRegEx();
_selectedField = dynamicController;
},
controller: dynamicController,
validator: (value) {
if (value == null || value.trim().isEmpty) {
return "Please enter ${namePlates[selectedENPIndex].contents[i]}";
}
return null;
},
decoration: InputDecoration(
border: UnderlineInputBorder(
borderSide:
BorderSide(color: _selectedTheme.primaryColorDark)),
enabledBorder: UnderlineInputBorder(
borderSide:
BorderSide(color: _selectedTheme.primaryColorDark)),
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: _selectedTheme.primaryColorDark, width: 2)),
labelText: namePlates[selectedENPIndex].contents[i],
hintText: namePlates[selectedENPIndex].acceptingString[i],
labelStyle: TextStyle(color: _selectedTheme.primaryColorDark)),
),
));
}
columnContent.add(const Padding(
padding: EdgeInsets.only(top: 20, bottom: 20),
));
return columnContent;
void main() {
var hexString = "004D006F00640065006C0020004D006F00640065006C0020004D006F00640065";
print(hexToAscii(hexString)); // Output is Model Model Mode
print(hexToAscii(hexString).length); // Output is 32, this should be 16. Attached the Dart Pad screenshot
}
String hexToAscii(String hexString) => List.generate(
hexString.length ~/ 2,
(i) => String.fromCharCode(
int.parse(hexString.substring(i * 2, (i * 2) + 2), radix: 16)),
).join();

hexconverter:import 'dart:convert'; import 'package:convert/convert.dart'; void main() { final string = ascii.fuse(hex).decode('68656c6c6f'); print('string: >$string<'); }modelControlleris not used anywhere in your code - you are only assigningmodelController.text = hexToAscii(tempData[0]);, nothing more, post the minimal but complete code to reproduce your issuedebugPrint(tempData[0].length); debugPrint(hexToAscii(tempData[0]).length);004D006F00640065006C0020004D006F00640065006C0020004D006F00640065every even byte is00so the string is_M_o_d_e_l_ _M_o_d_e_l_ _M_o_d_ewhere_represents unprintable0x00but the result you see in theTextFormFieldis:Model Model Mode