如何在 CircleAvatar 周围放置图标

Aki*_*inn 4 icons frontend flutter

我正在使用 Flutter 开发一个移动应用程序,我想在 CircleAvatar 周围放置一些小图标。请看下面的红点:

我想做的事

下面是处理它的代码:

  Widget _createHeader(BuildContext context) {
return UserAccountsDrawerHeader(
  accountEmail: Text(userEmail),
  accountName: Text(userName),
  currentAccountPicture: ClipRRect(
    borderRadius: BorderRadius.circular(110),
    child:
        CircleAvatar(
          backgroundImage: NetworkImage(userImageUrl),
          radius: 60,
          backgroundColor: Colors.transparent,
        ),
    ),
        decoration: BoxDecoration(
          color: Theme.of(context).primaryColor
        ),
);
Run Code Online (Sandbox Code Playgroud)

}

我想让图标跟随圆的圆度,但我不知道如何实现它。我试图将CircleAvataraRow或 a包装起来,Container但我没有设法获得效果。有没有办法做到这一点?

San*_*rma 5

我不确定您是否可以将它直接包裹在小部件周围,但您可以使用Stack和 的组合Positioned来实现这一点。您需要根据您的要求自定义本示例中的radius,iconSizedistance变量。
在此处输入图片说明

@override
Widget build(BuildContext context) {
    double radius = 40;
    double iconSize = 20;
    double distance = 10;
    return Scaffold(
      body: Center(
        child:
        Stack(
            alignment: Alignment.center,
            overflow: Overflow.visible,
            children: [
              CircleAvatar(
                radius: radius,
                backgroundImage:
                    NetworkImage('https://via.placeholder.com/150'),
                backgroundColor: Colors.transparent,
              ),
              Positioned(
                  top: -(radius + iconSize + distance),
                  right: 0,
                  bottom: radius,
                  left: 0,
                  child: Icon(
                    Icons.access_alarm,
                    color: Colors.blue,
                    size: iconSize,
                  )),
              Positioned(
                  top: -(iconSize + radius),
                  right: -(radius + iconSize - distance),
                  bottom: iconSize,
                  left: radius,
                  child: Icon(
                    Icons.email,
                    color: Colors.blue,
                    size: iconSize,
                  )),
              Positioned(
                  top: -(radius - distance),
                  right: -(radius + iconSize + distance),
                  bottom: -iconSize,
                  left: radius,
                  child: Icon(
                    Icons.account_balance,
                    color: Colors.blue,
                    size: iconSize,
                  )),
            ]),
      ),
    );
}
Run Code Online (Sandbox Code Playgroud)