Flartter dart: Как разделить пространство между Text и TextField, а также собрать вместе RadioListTile? - PullRequest
1 голос
/ 01 мая 2020

Я учу Флаттер. У меня проблема (см. Изображение ниже). Я хотел бы разделить пространство между текстом "sex" и TextField "name". Я также хотел бы собрать RadioListTile, они очень разные. Возможно ли это сделать? Следуй за моим кодом

enter image description here

class _AlertDialogWidgetState extends State<AlertDialogWidget> {
  @override
  Widget build(BuildContext context) {
    return SingleChildScrollView(
      child: ListBody(
        children: <Widget>[
          TextField(
            autofocus: true,
            decoration: InputDecoration(
                contentPadding: new EdgeInsets.symmetric(vertical: 10.0, horizontal: 10.0),
                border: OutlineInputBorder(), hintText: "New user"),
            onChanged: (text) => widget.name = text,
          ),
          Text(
            'Sex',
            textAlign: TextAlign.left,
            overflow: TextOverflow.ellipsis,
            style: TextStyle(fontWeight: FontWeight.bold),
          ),
          RadioListTile(
            title: Text("Female"),
            value: "female",
            groupValue: widget.sex,
            onChanged: (String value) {
              setState(() {
                widget.sex = value;
              });
            },
          ),
          RadioListTile(
            title: Text("Male"),
            value: "male",
            groupValue: widget.sex,
            onChanged: (String value) {
              setState(() {
                widget.sex = value;
              });
            },
          ),
          RadioListTile(
            title: Text("Other"),
            value: "other",
            groupValue: widget.sex,
            onChanged: (String value) {
              setState(() {
                widget.sex = value;
              });
            },
          ),
        ],
      ),
    );
  }
}

1 Ответ

1 голос
/ 01 мая 2020

Оберните TextField с помощью Padding, чтобы оставить больше места между TextField и Text следующим образом:

Padding(
  padding: EdgeInsets.only(top: 15),
  child: Text(
    'Sex',
    textAlign: TextAlign.left,
    overflow: TextOverflow.ellipsis,
    style: TextStyle(fontWeight: FontWeight.bold),
  ),
),

Для RadioListTile вы не можете изменить заполнение радио, но Вы можете использовать Radio, обернутый ListTile и установить его выравнивание, чтобы оно было ближе к заголовку:

ListTile(
  title: Align(
    child: new Text("Female"),
    alignment: Alignment(-1.2, 0),
  ),
  leading: Radio(
    value: "female",
    groupValue: 'F',
    onChanged: (String value) {
      setState(() {
        widget.sex = value;
      });
    },
  ),
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...