Я в основном пытаюсь создать экран регистрации для своего приложения. Я уже включил все остальные TextFormField
для других данных. Однако теперь я застрял в разделе ввода даты, мне удалось создать TextFormField
, завернутый в GestureDetector
, где он откроет средство выбора даты для выбора даты после нажатия TextFormField
. Моя проблема в том, что я хочу установить значение даты TextFormField
с датой, выбранной в средстве выбора даты, я не знаю, почему с кодом, который у меня есть, он очень непоследователен, иногда он отображает дату и в других случаях он не обновляется и продолжает показывать hintText
, а также, поскольку при нажатии на поле появляется окно выбора даты, как я могу отключить отображение клавиатуры при фокусировании на поле даты.
class DateState extends StatefulWidget {
const DateState({
Key key,
}) : super(key: key);
@override
_DateState createState() => _DateState();
}
class _DateState extends State<DateState> {
DateTime selectedDate = DateTime.now();
Future<Null> _selectDate(BuildContext context) async {
final DateTime picked = await showDatePicker(
context: context,
initialDate: selectedDate,
firstDate: DateTime(1950),
lastDate: DateTime.now());
if (picked != null && picked != selectedDate)
setState(() {
selectedDate = picked;
});
}
@override
Widget build(BuildContext context) {
var dateValue = TextEditingController();
return DateFieldContainer(
child: GestureDetector(
child: TextFormField(
controller: dateValue,
onTap: () {
_selectDate(context);
dateValue.text = "${selectedDate.toLocal()}".split(' ')[0];
},
decoration: InputDecoration(
hintText: "Select Date",
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: PrimaryColor),
),
),
),
),
);
}
}