Проблема выравнивания флаттера - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь выполнить выравнивание для текста и изображений в строке, но ниже я получаю неправильный код - это код, который я добавил, меня смущает это выравнивание.

Widget containerWidget(String icon, String icontext, String text) {
  return Container(
      padding: EdgeInsets.all(7),
      decoration: BoxDecoration(
          border: Border.all(
            color: Colors.grey,
          ),
          borderRadius: BorderRadius.circular(40.0)),
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceAround,
        children: <Widget>[
          Row(
            mainAxisAlignment: MainAxisAlignment.start,
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.only(left: 5, bottom: 2),
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.start,
                  children: <Widget>[
                    SvgPicture.asset(
                      icon,
                      height: 20.0,
                      width: 20.0,
                      allowDrawingOutsideViewBox: true,
                    ),
                    Padding(
                      padding: const EdgeInsets.only(top: 5, left: 10),

                      child: Text(
                        icontext,
                        style: TextStyle(color: const Color(0xFF449DF9)),
                      ),
                    )
                  ],
                ),
              ),
            ],
          ),
          Row(
            children: <Widget>[
              Text(text),
            ],
          )
        ],
      ));
}

Я получить вывод следующим образом: enter image description here

И я хочу следующий вывод, но как-то не могу его получить. enter image description here

Ответы [ 2 ]

1 голос
/ 16 марта 2020

измените mainAxisAlignment на MainAxisAlignment.start , затем оберните каждого ребенка в Expanded

Таким образом

 Widget containerWidget(String icon, String icontext, String text) {
    return Container(
        padding: EdgeInsets.all(7),
        decoration: BoxDecoration(
            border: Border.all(
              color: Colors.grey,
            ),
            borderRadius: BorderRadius.circular(40.0)),
        child: Row(
              mainAxisAlignment: MainAxisAlignment.start,
              children: <Widget>[
                Expanded(
                  child: Padding(
                    padding: const EdgeInsets.only(left: 5, bottom: 2),
                    child: Row(
                      mainAxisAlignment: MainAxisAlignment.start,
                      children: <Widget>[
                        SvgPicture.asset(
                          icon,
                          height: 20.0,
                          width: 20.0,
                          allowDrawingOutsideViewBox: true,
                        ),
                        Padding(
                          padding: const EdgeInsets.only(top: 5, left: 10),
                          child: Text(
                            icontext,
                            style: TextStyle(color: const Color(0xFF449DF9)),
                          ),
                        )
                      ],
                    ),
                  ),
                ),
            Expanded(child: Text(text))
          ],
        ));
  }
1 голос
/ 16 марта 2020

Вы должны обернуть Rows внутри Expanded и удалить выравнивание mainAxisAlignment: MainAxisAlignment.start

Как это

Widget containerWidget(String icon, String icontext, String text) {
  return Container(
    padding: EdgeInsets.all(7),
    decoration: BoxDecoration(
      border: Border.all(
        color: Colors.grey,
      ),
      borderRadius: BorderRadius.circular(40.0),
    ),
    child: Row(
      children: <Widget>[
        Expanded(
          child: Row(
            mainAxisAlignment: MainAxisAlignment.start,
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.only(left: 5, bottom: 2),
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.start,
                  children: <Widget>[
                   SvgPicture.asset(
                    icon,
                     height: 20.0,
                     width: 20.0,
                     allowDrawingOutsideViewBox: true,
                    ),
                    Padding(
                      padding: const EdgeInsets.only(top: 5, left: 10),
                      child: Text(
                        icontext,
                        style: TextStyle(color: const Color(0xFF449DF9)),
                      ),
                    )
                  ],
                ),
              ),
            ],
          ),
        ),
        Expanded(
          child: Row(
            children: <Widget>[
              Text(text),
            ],
          ),
        ),
      ],
    ),
  );
}
...