具有可见半径的圆形按钮和子图像

Wal*_*hed 5 user-interface flutter

目标:实现具有可见半径和儿童图像的完美尺寸的圆形按钮


截图演示: 左:设计到实施,右:尝试的解决方案

从上图可以看出,我尝试了社区在这里提到的许多解决方案

包括:

  1. 圆形头像
    CircleAvatar(
     child: Image.asset('assets/images/gucci.jpg')
    )
Run Code Online (Sandbox Code Playgroud)
  1. 剪辑R矩形
    ClipRRect(
      borderRadius: BorderRadius.circular(10.0),
      child: Image.asset(
         'assets/images/gucci.jpg',
         height: 100.0,
         width: 100.0,
      )
    )
Run Code Online (Sandbox Code Playgroud)
  1. Ink.image作为子小部件的Material小部件
Material(
   elevation: 1.0,
   shape: CircleBorder(),
   clipBehavior: Clip.hardEdge,
   color: Colors.transparent,
   child: Ink.image(
      image: AssetImage('assets/images/gucci.jpg'),
      fit: BoxFit.cover,
      width: 120.0,
      height: 120.0,
      child: InkWell(
         onTap: () {},
      )
   )
)
Run Code Online (Sandbox Code Playgroud)

关于如何实现这个设计有什么想法吗?

Sam*_*ehi 3

有很多选择供您选择。其中之一是“FloatingActionButton”。

SizedBox(
  width: 60,
  height: 60,
  child: FittedBox(
    fit: BoxFit.contain,
    child: FloatingActionButton(
      onPressed: () {},
      shape: CircleBorder(
        side: BorderSide(
          color: Colors.black,
          width: 1,
        ),
      ),
      backgroundColor: Colors.white,
      child: Padding(
        padding: EdgeInsets.all(5),
        child: Image.asset('assets/images/gucci.jpg'),
      ),
    ),
  ),
)
Run Code Online (Sandbox Code Playgroud)

我更喜欢它,Container因为所有按钮的属性(如onPressed或 点击动画)都已实现FloatingActionButton,并且您不需要使用GestureDetectorInkWell

CircleBorder您也可以在任何其他接受 的Buttons 或s 中使用。WidgetShapeBorder

  • @Waleedsyr您使用“FloatingActionButton”只是为了它的形状,而不是作为一个fab按钮。所以它不违反材料设计规则...另外,我编辑了我的答案以使按钮尺寸更大... (2认同)