Search code examples
fluttercontainerscenterlisttile

CircleAvatar in trailing in ListTile not centered


I can't seem to figure out how to center my CircleAvatar inside the trailing component of my ListTile. Here is my code:

static Widget buildRecordCard(MyCard card, BuildContext context) {
    var dateFormat = DateFormat('MM/dd/yyyy');
    return Column(
      children: [
        ListTile(
            shape:
                RoundedRectangleBorder(borderRadius: BorderRadius.circular(30)),
            tileColor: Colors.white,
            title: Text(
              "Score: " + card.score!,
              style: const TextStyle(fontSize: 38),
            ),
            subtitle: Column(children: [
              const Align(
                alignment: Alignment.centerLeft,
                child: Text(
                  "Personal Record",
                  style: TextStyle(fontSize: 22),
                ),
              ),
              const SizedBox(height: 6),
              Align(
                alignment: Alignment.centerLeft,
                child: Text(
                  dateFormat.format(card.createdOn.toDate()),
                  style: const TextStyle(fontSize: 18),
                ),
              ),
              const SizedBox(height: 6),
            ]),
            trailing: Container(
              constraints: const BoxConstraints(minWidth: 70.0, maxWidth: 80),
              height: double.infinity,
              child: CircleAvatar(
                  radius: 35,
                  backgroundColor: Colors.transparent,
                  child: Image.asset("assets/" + card.subCategory + ".png")),
            )),
        const SizedBox(height: 18),
      ],
    );
  }

and here is what it is currently outputting: output

I also tried to wrap my CircleAvatar in a SizedBox and in a Column with a mainAxisAlignment: MainAxisAlignment.center and it produced the same output.


Solution

  • You can used Transform.translate refer more about Offset

    Transform.translate(
      offset: Offset(0, 25),//set dy on your need
      child: Container(),
    ),
    

    Full Code:

     trailing: Transform.translate(
        offset: Offset(0, 25),
        child: Container(
          constraints: const BoxConstraints(minWidth: 70.0, maxWidth: 80),
          height: double.infinity,
          child: CircleAvatar(
            radius: 35,
            backgroundColor: Colors.transparent,
            child: Image.network(
              "https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png",
              height: 50,
            ),
          ),
        ),
      ),
    

    Result-> image