Try the following code
ListTile(
leading: const SizedBox(
height: double.infinity,
child: Icon(Icons.location_on_rounded)),
tileColor: DesignColor.grey,
title: "Title 1".textMediumRegular(),
subtitle: "Title 2".textSmall(),
trailing: const SizedBox(
height: double.infinity,
child: Icon(Icons.edit_rounded)),
)
Output:

Caution Doesn't work for all cases !!!
In Flutter's ListTile, the leading and trailing doesn't span accross the full height of the ListTile when subtitle is used. Hence create your own Widget using row.
Detailed Comparision between both the Widgets:

Use My Custom Code:
class CustomListTile extends StatelessWidget {
Widget? trailingWidget;
late CrossAxisAlignment crossAxisAlignment;
late TextStyle titleStyle;
late TextStyle subtitleStyle;
String title;
String? subtitle;
Widget? leadingWidget;
CustomListTile(
{super.key,
this.trailingWidget,
this.crossAxisAlignment = CrossAxisAlignment.center,
this.titleStyle =
const TextStyle(fontSize: 16, fontWeight: FontWeight.w600),
this.subtitleStyle =
const TextStyle(fontSize: 14, fontWeight: FontWeight.w400),
required this.title,
this.subtitle,
this.leadingWidget});
@override
Widget build(BuildContext context) {
return Row(
crossAxisAlignment: crossAxisAlignment,
children: [
leadingWidget ?? Container(),
const SizedBox(
width: 16,
),
Expanded(
child: Column(
children: [
Text(
title,
style: titleStyle,
),
Text(subtitle ?? "", style: subtitleStyle),
],
),
),
const SizedBox(width: 16),
trailingWidget ?? Container()
],
);
}
}
Extra:
Code of the image for you to work around
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(
color: Colors.blue,
child: ListTile(
minLeadingWidth: 0,
isThreeLine: true,
minVerticalPadding: 0,
contentPadding: EdgeInsets.zero,
leading: Container(
color: Colors.orange,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: const [
Icon(
Icons.home,
),
],
),
),
title: Container(
color: Colors.pink,
child: const Text(
"This is very long long long long title of the list view"),
),
subtitle: Container(
color: Colors.yellow,
child: const Text(
"This is very long long long long subtitle of the list view . This is very long long long long subtitle of the list view .This is very long long long long subtitle of the list view "),
),
trailing: Container(
color: Colors.orange,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: const [
Icon(
Icons.home,
),
],
),
),
),
),
Container(
color: Colors.blue,
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
color: Colors.orange,
child: const Icon(Icons.home),
),
const SizedBox(
width: 16,
),
Expanded(
child: Column(
children: [
Container(
color: Colors.pink,
child: const Text(
"This is very long long long long title of the list view ",
style: TextStyle(
fontSize: 16, fontWeight: FontWeight.w600),
),
),
Container(
color: Colors.yellow,
child: const Text(
"This is very long long long long subtitle of the list view . This is very long long long long subtitle of the list view .This is very long long long long subtitle of the list view ",
style: TextStyle(
fontSize: 14, fontWeight: FontWeight.w400),
),
),
],
),
),
const SizedBox(width: 16),
Container(
color: Colors.orange,
child: const Icon(Icons.home),
),
],
),
)
],
),
));