Выровнять элемент независимо от флаттера Row / Column - PullRequest
0 голосов
/ 03 мая 2020

Я новичок во флаттере, и в последнее время широкое кодирование я пришел к сценарию, в котором мне приходится неприлично выравнивать элементы в ряду. У меня есть 3 дочерних элемента, давайте назовем его A, B и C. Мое требование состоит в том, чтобы к А и В крайнему левому краю строки и элементу C крайнему правому.

Ожидание: enter image description here

Мой код:

Row(
            mainAxisSize: MainAxisSize.max,
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              CircleAvatar(
                backgroundImage: NetworkImage(''),
                radius: 30,
              ),
              SizedBox(
                width: 10,
              ),
              Flexible(
                child: Text('name', overflow: TextOverflow.ellipsis,),
              ),
              SizedBox(
                width: 10,
              ),
              Container(
                child: ButtonTheme(
                  height: 25.0,
                  shape: RoundedRectangleBorder(
                      borderRadius: BorderRadius.circular(100.0)),
                  child: RaisedButton(
                    child: Text(
                      'Challenge',
                      style: TextStyle(color: Colors.white, fontSize: 12),
                    ),
                    onPressed: () {},
                  ),
                ),
              ),
            ],
          ),

Но вывод идет так: enter image description here

Когда я пытался использовать Spacer() вывод приходит так: enter image description here

Любой может помочь мне с этим. Заранее спасибо.

Ответы [ 3 ]

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

оберните ваш текст расширенным виджетом и установите для textAlign вашего текстового виджета значение TextAlign.start, как показано ниже:

 Row(
              mainAxisSize: MainAxisSize.max,
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: <Widget>[
                CircleAvatar(
                  backgroundImage: NetworkImage(''),
                  radius: 30,
                ),
                SizedBox(
                  width: 10,
                ),
                Expanded(
                  child: Text(
                    'name',
                    overflow: TextOverflow.ellipsis,
                    textAlign: TextAlign.start,
                  ),
                ),
                SizedBox(
                  width: 10,
                ),
                Container(
                  child: ButtonTheme(
                    height: 25.0,
                    shape: RoundedRectangleBorder(
                        borderRadius: BorderRadius.circular(100.0)),
                    child: RaisedButton(
                      child: Text(
                        'Challenge',
                        style: TextStyle(color: Colors.white, fontSize: 12),
                      ),
                      onPressed: () {},
                    ),
                  ),
                ),
              ],
            ),
1 голос
/ 03 мая 2020

Попробуйте, это должно работать для вас.

Row(
  mainAxisSize: MainAxisSize.min,
  children: <Widget>[
      CircleAvatar(
         backgroundImage: NetworkImage(''),
         radius: 30,
      ),
      SizedBox(width: 10),
      Expanded(
        child: Text('name', align: TextAlign.start, overflow: TextOverflow.ellipsis),
      ),
      SizedBox(width: 10),
      Container(
        child: ButtonTheme(
           height: 25.0,
           shape: RoundedRectangleBorder(
               borderRadius: BorderRadius.circular(100.0)),
               child: RaisedButton(
                  child: Text('Challenge', style: TextStyle(color: Colors.white, fontSize: 12)),
                  onPressed: () {},
               )
           )
        )
  ]
)
1 голос
/ 03 мая 2020

Вы должны обернуть свой виджет Text в виджет Expanded, как показано в примере ниже. Попробуйте, все работает отлично, проверьте код ниже:


 Row(
              mainAxisSize: MainAxisSize.max,
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: <Widget>[
                CircleAvatar(
                  backgroundImage: NetworkImage(''),
                  radius: 30,
                ),
                SizedBox(
                  width: 10,
                ),
                Expanded(
                 // wrap your text widget with an Expanded widget
                  child: Text(
                    'name',
                    overflow: TextOverflow.ellipsis,
                    textAlign: TextAlign.start,
                  ),
                ),
                SizedBox(
                  width: 10,
                ),
                Container(
                  child: ButtonTheme(
                    height: 25.0,
                    shape: RoundedRectangleBorder(
                        borderRadius: BorderRadius.circular(100.0)),
                    child: RaisedButton(
                      child: Text(
                        'Challenge',
                        style: TextStyle(color: Colors.white, fontSize: 12),
                      ),
                      onPressed: () {},
                    ),
                  ),
                ),
              ],
            ),

Надеюсь, это вам поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...