Флаттер: Как создать строку с центрированным словом с линией вокруг него? - PullRequest
0 голосов
/ 31 декабря 2018

Попытка выполнить следующий эффект:

The word OR with 2 horizontal lines around it

У меня есть такой код:

            new Row(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                mainAxisSize: MainAxisSize.max,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  const Divider(
                      color: const Color(0xFF000000),
                      height: 20
                  ),
                  new Text(
                    "OR",
                    style: new TextStyle(
                      fontSize: 20.0,
                      color: const Color(0xFF000000),
                      fontWeight: FontWeight.w200,
                    ),
                  ),
                  const Divider(
                      color: const Color(0xFF000000),
                      height: 20
                  ),
                ]),

Слово ИЛИпоявляется в середине, но оба делителя скрыты?(Тем не менее, если я поиграюсь с высотой, вы увидите увеличение / уменьшение высоты строки, но без делителя. Как я могу получить этот эффект?

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Вы можете использовать виджет Expanded на двух разделителях (и в тексте для согласованности)

Expanded(
  flex: 1,
  child: Divider(
      color: const Color(0xFF000000),
              height: 2,
 )),
 Expanded(
      flex: 0,
       child: Container(
                  margin: EdgeInsets.symmetric(horizontal: 15.0),
                  child: Text(
                    "OR",
                    style: new TextStyle(
                      fontSize: 20.0,
                      color: const Color(0xFF000000),
                      fontWeight: FontWeight.w200,
                    ),
 ))),
 Expanded(
      flex: 1,
      child: Divider(
                color: const Color(0xFF000000),
                height: 2,
 ))

enter image description here

0 голосов
/ 31 декабря 2018

используйте этот виджет, он будет делать именно то, что вы хотите

class OrComponent extends StatelessWidget {


   @override
   Widget build(BuildContext context) {

      return Row(
         children: <Widget>[
           Expanded(
             child: Container(
               height: 2.0,
               color: AppColor.lighterGrey,
             ),
           ),
        Container(
           margin: EdgeInsets.symmetric(horizontal: 3.0),
           child: Text("OR",style:TextStyle(color:Colors.black)),
        ),
        Expanded(
           child: Container(
             height: 2.0,
             color: Colors.grey,
        ),
       ),
      ],
    );
   }
  }
...