Наличие нескольких строк внутри столбцов во Флаттере

#flutter #dart #flutter-layout

#трепетать #дротик #флаттер-макет

Вопрос:

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

Как мы можем достичь этого стиля в флаттере? Требуются ли какие-либо изменения в коде ?

Скриншот: введите описание изображения здесь

Вывод из кода флаттера: введите описание изображения здесь

Код:

 pw.Column(  crossAxisAlignment: pw.CrossAxisAlignment.start,  children: lt;pw.Widgetgt;[  pw.Container(  padding: const pw.EdgeInsets.only(left: 20, bottom: 20),  child: pw.Column(  children: lt;pw.Widgetgt;[  pw.Text('Header',  textScaleFactor: 2,  style: pw.Theme.of(context)  .defaultTextStyle  .copyWith(fontWeight: pw.FontWeight.bold)),  pw.Padding(padding: const pw.EdgeInsets.only(top: 10)),  pw.Padding(padding: const pw.EdgeInsets.only(top: 20)),  pw.Row(  crossAxisAlignment: pw.CrossAxisAlignment.start,  mainAxisAlignment: pw.MainAxisAlignment.spaceBetween,  children: lt;pw.Widgetgt;[  pw.Column(  crossAxisAlignment: pw.CrossAxisAlignment.start,  children: lt;pw.Widgetgt;[  pw.Text(  '*YAT5869507*',  style: const pw.TextStyle(  fontSize: SharedFontSizes.headline3Mobile,  ),  ),  pw.Text('Code :'),  pw.Text('Name :'),  pw.Text('Expected Date :'),  pw.Text('Receipt Date :'),  pw.Text('Number :'),  ],  ),  pw.Column(  crossAxisAlignment: pw.CrossAxisAlignment.start,  children: lt;pw.Widgetgt;[  pw.Text('ABEL'),  pw.Text('ABEL New'),  pw.Text('_______________'),  pw.Text('_______________'),  pw.Text('_______________'),  ],  ),  pw.Column(  crossAxisAlignment: pw.CrossAxisAlignment.start,  children: lt;pw.Widgetgt;[  pw.Text('ID :'),  pw.Text('Time'),  pw.Text('Start Time :'),  pw.Text('End Time :'),  ],  ),  pw.Column(  crossAxisAlignment: pw.CrossAxisAlignment.start,  children: lt;pw.Widgetgt;[  pw.Text('_______________'),  pw.Text('_______________'),  pw.Text('_______________'),  pw.Text('_______________'),  ],  ),  ],  ),  ],  ),  ),  ],  );  

Комментарии:

1. Похоже, и то, и другое с одинаковым. какого еще стиля вы ожидаете от скриншота?

Ответ №1:

вы вызываете код ниже из внешней строки

 pw.Text(  '*YAT5869507*',  style: const pw.TextStyle(  fontSize: SharedFontSizes.headline3Mobile,  ),  ),  

ты звонишь вот так

 pw.Column(  crossAxisAlignment: pw.CrossAxisAlignment.start,  children: lt;pw.Widgetgt;[  pw.Container(  padding: const pw.EdgeInsets.only(left: 20, bottom: 20),  child: pw.Column(  children: lt;pw.Widgetgt;[  pw.Text('Header',  textScaleFactor: 2,  style: pw.Theme.of(context)  .defaultTextStyle  .copyWith(fontWeight: pw.FontWeight.bold)),  pw.Padding(padding: const pw.EdgeInsets.only(top: 10)),  pw.Padding(padding: const pw.EdgeInsets.only(top: 20)),  // call from here  pw.Text(  '*YAT5869507*',  style: const pw.TextStyle(  fontSize: SharedFontSizes.headline3Mobile,  ),  ),  pw.Row(  crossAxisAlignment: pw.CrossAxisAlignment.start,  mainAxisAlignment: pw.MainAxisAlignment.spaceBetween,  children: lt;pw.Widgetgt;[  pw.Column(  crossAxisAlignment: pw.CrossAxisAlignment.start,  children: lt;pw.Widgetgt;[  pw.Text('Code :'),  pw.Text('Name :'),  pw.Text('Expected Date :'),  pw.Text('Receipt Date :'),  pw.Text('Number :'),  ],  ),  pw.Column(  crossAxisAlignment: pw.CrossAxisAlignment.start,  children: lt;pw.Widgetgt;[  pw.Text('ABEL'),  pw.Text('ABEL New'),  pw.Text('_______________'),  pw.Text('_______________'),  pw.Text('_______________'),  ],  ),  pw.Column(  crossAxisAlignment: pw.CrossAxisAlignment.start,  children: lt;pw.Widgetgt;[  pw.Text('ID :'),  pw.Text('Time'),  pw.Text('Start Time :'),  pw.Text('End Time :'),  ],  ),  pw.Column(  crossAxisAlignment: pw.CrossAxisAlignment.start,  children: lt;pw.Widgetgt;[  pw.Text('_______________'),  pw.Text('_______________'),  pw.Text('_______________'),  pw.Text('_______________'),  ],  ),  ],  ),  ],  ),  ),  ],  );   

Ответ №2:

Не используйте этот тип структуры. В будущем, если вы вызовете API, этот тип структуры может сбить вас с толку в то время.

 pw.Column(  crossAxisAlignment: pw.CrossAxisAlignment.start,  children: lt;pw.Widgetgt;[  pw.Text('ID :'),  pw.Text('Time'),  pw.Text('Start Time :'),  pw.Text('End Time :'),  ],  ),  pw.Column(  crossAxisAlignment: pw.CrossAxisAlignment.start,  children: lt;pw.Widgetgt;[  pw.Text('_______________'),  pw.Text('_______________'),  pw.Text('_______________'),  pw.Text('_______________'),  ],  ),  

Вы можете использовать приведенный ниже код, как показано на рисунке. SizedBox очень помогает вам , и помимо этого вы также можете использовать расширенный виджет. (Для расширенного виджета вам не нужно помещать свойство mainAxisAlignment в виджет строки)

Кодовое изображение Output_Image