В моем приложении есть текстовое поле, которое выглядит следующим образом:
TextFormField(
//maxLength: 02,
textAlign: TextAlign.center,
keyboardType: TextInputType.numberWithOptions(decimal: true),
decoration: InputDecoration(
labelText: textFieldInitVal.toString(),
contentPadding: const EdgeInsets.all(0),
border: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.black54,
),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.blue,
),
),
),
//initialValue: textFieldInitVal.toString(),
onChanged: (val) {
if (int.parse(val) > 24) {
setState(() {
errorTxt = 'ERROR: Value cannot be more than 24 Hrs';
});
} else {
setState(() {errorTxt = '';});
setState(() {value1 = int.parse(val).toDouble();});
//setState(() {value1 = double.parse(val);});
}
}
),
В приведенном выше фрагменте оба textFieldInitVal
и value1
имеют тип double.
Я сталкиваются с двумя разными проблемами:
Даже если я использую textAlign: TextAlign.center
, я не могу центрировать labelText: textFieldInitVal.toString()
. Метка идет и приклеивается к левому краю TextFormField. Добавление некоторого количества padding
помогает, но оно также влияет на то, как размещается вводимый текст, поэтому я стараюсь этого избежать.
В части onChanged: (val) {
, когда я делаю print(val)
, я заметил, что TextFormField не принимает ничего после десятичного значения и, следовательно, при преобразовании в double из строки для val
я получаю только целые числа.
Они выглядят как очень мелкие проблемы, но я не могу найти выход из этой ситуации. Что я делаю не так?