I have a TextField
to enter the year and two RadioListTiles
for AD or BC. I would like to have a Row
with the TextField
first, and then the RadioListTiles
stacked after that and in a smaller font size. Can someone help?
Here’s what it looks like now:
And here is the code:
TextField(
focusNode: inputNode,
autofocus: true,
keyboardType: const TextInputType.numberWithOptions(),
controller: yearController,
decoration: const InputDecoration(
border: OutlineInputBorder(),
labelText: "Enter the Year of the Event",
)),
Row(
children: [
Flexible(
child: RadioListTile<Era>(
title: const Text('A.D.'),
value: Era.ad,
groupValue: _era,
onChanged: (Era? value) {
setState(() {
_era = value;
});
},
),
),
Flexible(
child: RadioListTile<Era>(
title: const Text('B.C.'),
value: Era.bc,
groupValue: _era,
onChanged: (Era? value) {
setState(() {
_era = value;
});
},
),
),
],
),
2
Answers
You can do something like following to show textfield first and make sure to wrap textfield in Expanded as to constraint it to available space.
Also, use Radio with a combination of Row and Text widgets to properly show them in a small view, as RadioListTile comes with a lot of default padding and other configurations that is not desirable.
This is how I would approach this:
}
}