Я хотел бы установить ширину индикатора выполнения, равную ширине между начальным и конечным элементами Listtile. но до сих пор я могу подогнать его только на всю ширину карты. Мне нужна прокладка или что-то в этом роде? Это мой код (и скриншот моего представления):
Card(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[ ListTile(
leading: CircleAvatar(
backgroundImage: AssetImage("assets/vegetables/" + activity.cropImgUrl),
backgroundColor: Colors.white,
),
title: Text(activity.name),
subtitle: Text(howmanydaysleft(activity.daysLeft),
),
trailing: Icon(Icons.chevron_left),
isThreeLine: false,
),
ConstrainedBox(
constraints: const BoxConstraints(minWidth: double.infinity),
child: LinearPercentIndicator(
animation: true,
lineHeight: 15.0,
animationDuration: 500,
percent: completed / 100.0,
center: Text(completed.toString() + "%"),
linearStrokeCap: LinearStrokeCap.roundAll,
progressColor: colorGreenPrimary,
),
),
SizedBox(height: 10.0),
],
),
),
Свойство title
ListTile в основном делает то, что вам нужно. Разместите текст в столбце и добавьте индикатор выполнения после текста.
Это должно помочь:
Card(
child: ListTile(
leading: CircleAvatar(
backgroundImage:
AssetImage("assets/vegetables/" + activity.cropImgUrl),
backgroundColor: Colors.white,
),
title: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(activity.name),
LinearPercentIndicator(
animation: true,
lineHeight: 15.0,
animationDuration: 500,
percent: completed / 100.0,
center: Text(completed.toString() + "%"),
linearStrokeCap: LinearStrokeCap.roundAll,
progressColor: colorGreenPrimary,
),
],
),
subtitle: Text(
howmanydaysleft(activity.daysLeft),
),
trailing: Icon(Icons.chevron_left),
isThreeLine: false,
),
);
@fastlater_pro Свойство title имеет тип Widget, поэтому вы можете поместить все, что хотите, если это виджет. Пожалуйста, примите мой ответ, если он решил вашу проблему.
Спасибо. Я не знал, что могу поместить столбец в заголовок. Это решило мою проблему. Я думал поместить индикатор выполнения за пределы списка