Является ли мой TextOverflow.ellipsis причиной перемещения моего текста вправо?

#flutter #flutter-layout

#flutter #flutter-layout

Вопрос:

Я отображаю текст в ListView.Builder, и если часть текста слишком длинная, я использую свойство overflow: TextOverflow.ellipsis текстового виджета, чтобы убедиться, что это не вызывает ошибку переполнения. Ну, когда текст слишком длинный, он правильно использует TextOverflow, но он также сдвигает текст вправо. Я хочу, чтобы весь текст был выровнен. Может ли это быть вызвано TextOverflow или это проблема с макетом?

Это изображение одного из фрагментов текста, в котором использовалось многоточие из-за того, что оно слишком длинное. Как вы можете видеть, он смещен вправо. Это происходит только тогда, когда используется многоточие. Если текст не нуждается в многоточии, он не сдвигается вправо.

Изображение проблемы с многоточием

Это код, который отображает всю эту страницу. Бит, который я перемещаю вправо, — это место, где текст отображает пробег [индекс].trippurpose Я включил весь код, потому что это проблема с макетом, которую я продолжаю игнорировать.

 Container(
                          height: 60,
                          child: Row(
                            children: <Widget>[
                              Expanded(
                                flex: 1,
                                child: Column(
                                  crossAxisAlignment: CrossAxisAlignment.start,
                                  children: [
                                    Container(
                                      margin: EdgeInsets.only(left: 5, top: 13),
                                      child: Text(mileage[index].tripdate,
                                          style: TextStyle(
                                              fontSize: 14, color: Colors.black),
                                          textAlign: TextAlign.left),
                                    ),
                                  ],
                                ),),
                              Expanded(
                                flex: 3,
                                child: Column(
                                  crossAxisAlignment: CrossAxisAlignment.start,
                                  children: [
                                    Padding(
                                        padding: EdgeInsets.only(top: 13, left: 10),
                                        child: Text(mileage[index].trippurpose,
                                                style: TextStyle(
                                                    fontSize: 15,
                                                    fontWeight: FontWeight.bold,
                                                    color: Colors.black,
                                                    fontFamily: 'Montserrat'),
                                                overflow: TextOverflow.ellipsis,
                                                softWrap: true,
                                                textAlign: TextAlign.center),),

                                    Padding(
                                      padding: EdgeInsets.only(left: 10),
                                      child: Row(
                                        children: [Text(
                                          '${mileage[index].tripfrom} - ',
                                          overflow: TextOverflow.ellipsis,
                                          style: TextStyle(
                                              color: Colors.black,
                                              fontStyle: FontStyle.italic),
                                        ),
                                          Padding(
                                            padding: EdgeInsets.only(),
                                            child:Text(
                                              mileage[index].tripto,
                                              overflow: TextOverflow.ellipsis,
                                              softWrap: false,
                                              style: TextStyle(
                                                  color: Colors.black,
                                                  fontStyle: FontStyle.italic
                                              ),
                                            ),
                                          ),
                                        ],
                                      ),
                                    ),
                                  ],
                                ),),
                              Expanded(
                                flex: 1,
                                child: Row(
                                  mainAxisAlignment: MainAxisAlignment.end,
                                  children: [
                                    Padding(
                                      padding:
                                      EdgeInsets.only(top: 13, right: 10),
                                      child: Container(
                                        child: Text(
                                            mileage[index].triptotalmiles,
                                            style: TextStyle(
                                                fontSize: 16,
                                                color: Colors.black),
                                            textAlign: TextAlign.right),
                                      ),
                                    ),
                                  ],
                                ),)
                            ],
                          ))
  

Ответ №1:

Вот пример кода, который вы можете использовать для создания дизайна в соответствии с вашим кодом.

 Container(
        child: Row(
          children: [
            Flexible(
              flex: 1,
              child: Text(
                'THIS IS A TEST TEXT',
                overflow: TextOverflow.ellipsis,
              ),
            ),
            Flexible(
              flex: 3,
              fit: FlexFit.tight,
              child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  Text(
                    'THIS IS A TEST TEXT',
                    overflow: TextOverflow.ellipsis,
                  ),
                  Text(
                    'THIS IS A TEST TEXT',
                    overflow: TextOverflow.ellipsis,
                  ),
                ],
              ),
            ),
            Flexible(
              flex: 1,
              child: Text(
                'THIS IS A TEST TEXT',
                overflow: TextOverflow.ellipsis,
              ),
            ),
          ],
        ),
      )
  

Примечание: — Вы применяете неправильную логику к своему коду. flex лучше всего подходит для гибкого виджета. Также проверьте FlexFit.tight.