Text Allignment mistake in Flutter

I am trying to get data from my api and display it using Card widget .I want to align everything in an even manner without using a table. I have a written a code for it. But still there are a few rows which are not aligned properly.

Please write a detailed answer

Here is my table:

enter image description here

Here is my code:

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:http/http.dart';
import 'Posts.dart';
late List<Post> drivers;
class MyApp extends StatefulWidget {
// to set the root of app.
  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.green,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  late final String title;
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {

    return Scaffold(
      backgroundColor: Colors.white,
      appBar: AppBar(
        title: Center(
          child: const Text("Driver Table",
          style: TextStyle(
            fontWeight: FontWeight.w900,
          ),
          ),
        ),
      ),
      body: Container(
        child: Column(
          children: [
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                children:[
                     Expanded(
                       child: Container(
                           height: 70,
                           decoration: BoxDecoration(
                               border: Border.all(
                                 color: Colors.grey,
                               ),
                               borderRadius: const BorderRadius.all(Radius.circular(20))
                           ),
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                          children: const [
                            Text('Did',
                              style: TextStyle(
                                color: Colors.white,
                                fontSize: 24,
                                fontWeight: FontWeight.w900
                              ),
                            ),
                            Text('Dname',style: TextStyle(
                                fontSize: 24,
                                color: Colors.white,
                                fontWeight: FontWeight.w900
                              ),),
                            Text('Age',style: TextStyle(
                                fontSize: 24,
                              color: Colors.white,
                                fontWeight: FontWeight.w900
                            ),),
                          ],
                        ),
                    ),
                     ),
                ]
            ),
            Expanded(
              child: Container(
                child:_buildBody(context),
              ),
            )
          ],
        ),
        color:const Color(0xFF303030),
      ),
      //
    );
  }

  // build list view & manage states
  FutureBuilder<List<Post>> _buildBody(BuildContext context) {
    final HttpService httpService = HttpService();
    return FutureBuilder<List<Post>>(
      future: httpService.getPosts(),
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.done) {
          final List<Post>? posts = snapshot.data; //marked
          return _buildPosts(context, posts!);
        } else {
          return const Center(
            child: CircularProgressIndicator(),
          );
        }
      },
    );
  }
  // build list view & its tile
  ListView _buildPosts(BuildContext context, List<Post> posts) {
    Row(
      children: [
        Container(
         child: const Text('Did',
           style: TextStyle(
             color: Colors.white,
           ),
         ),
        ),
        Container(
          child: const Text('Dname',style: TextStyle(
            color: Colors.white,
          ),),
        ),
        Container(
          child: const Text('Age',style: TextStyle(
            color: Colors.white,
          ),),
        ),
      ],
    );
    return ListView.builder(
      scrollDirection: Axis.vertical,
      shrinkWrap: true,
      itemCount: posts.length,
      padding: const EdgeInsets.all(20),
      itemBuilder: (context, index) {
        return Container(
          height:70,
          child: Card(
            shadowColor: Colors.white,
            color:const Color(0xFF303030),
              elevation: 1,
                child: IntrinsicHeight(
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                    children: [
                      Text(posts[index].Did,style: const TextStyle(fontWeight: FontWeight.bold,
                      color:Colors.white,),),
                      Text(posts[index].Dname,style: const TextStyle(fontWeight: FontWeight.bold,
                        color:Colors.white,),),
                      Text(posts[index].Age,style: const TextStyle(fontWeight: FontWeight.bold,color:Colors.white,),
                      ),
                    ],
                  ),
                ),
            ),
        );
      },
    );
  }
}
class HttpService {
  Future<List<Post>> getPosts() async {
    Response res = await get(
        Uri.parse('http://localhost/localconnect/driver_change.php'));
    print(res.body);
    if (res.statusCode == 200) {
      List<dynamic> body = jsonDecode(res.body);
      List<Post> posts = body.map(
            (dynamic item) => Post.fromJson(item),
      ).toList();
      return posts;
    } else {
      throw "Unable to retrieve posts.";
    }
  }
}

Posts.dart

import 'dart:convert';
List<Post> userFromJson(String str) => List<Post>.from(json.decode(str).map((x) => Post.fromJson(x)));
String userToJson(List<Post> data) => json.encode(List<dynamic>.from(data.map((x) => x.toJson())));
class Post{
  Post({
    required this.Did,
    required this.Dname,
    required this.Age,
  });
  String Did;
  String Dname;
  String Age;
  factory Post.fromJson(Map<String, dynamic> json) => Post(
    Did: json["Did"],
    Dname: json["Dname"],
    Age: json["Age"],
  );
  Map<String, dynamic> toJson() => {
    "Did": Did,
    "Dname": Dname,
    "Age": Age,
  };
}

Solution 1:

For every Text widget use

textAlign: TextAlign.center,

and on every Row Row

mainAxisAlignment: MainAxisAlignment.spaceEvenly,

Main issue is coming from ListView.builder's

padding: const EdgeInsets.all(20), //remove this padding

Remove the padding here and no need to use IntrinsicHeight widget.