颤振中的圆角图像

时间:2018-07-25 07:42:07

标签: flutter flutter-layout

我正在使用Flutter列出有关电影的信息。现在,我希望左侧的封面图像是圆角图片。我做了以下工作,但是没有用。谢谢!

    getItem(var subject) {
    var row = Container(
      margin: EdgeInsets.all(8.0),
      child: Row(
        children: <Widget>[
          Container(
            width: 100.0,
            height: 150.0,
            decoration: BoxDecoration(
              borderRadius: BorderRadius.all(Radius.circular(8.0)),
              color: Colors.redAccent,
            ),
            child: Image.network(
              subject['images']['large'],
              height: 150.0,
              width: 100.0,
            ),
          ),
        ],
      ),
    );
    return Card(
      color: Colors.blueGrey,
      child: row,
    );
  }

如下

enter image description here

16 个答案:

答案 0 :(得分:87)

使用ClipRRect可以完美运行

new ClipRRect(
    borderRadius: new BorderRadius.circular(8.0),
    child: Image.network(
        subject['images']['large'],
        height: 150.0,
        width: 100.0,
    ),
)

答案 1 :(得分:8)

使用WITH cteColumns AS ( SELECT c.name AS ColName, t.name AS TableName, s.name AS SchemaName FROM sys.columns c JOIN sys.tables t ON c.object_id = t.object_id JOIN sys.schemas s on t.schema_id = s.schema_id WHERE c.name LIKE '%columnnID%' ) SELECT 'SELECT * FROM ' + QUOTENAME(c.SchemaName) + '.' + QUOTENAME(c.TableName) + ' WHERE ' + QUOTENAME(c.ColName) + ' = 11074' FROM cteColumns c; 需要对ClipRRect进行硬编码,因此,如果需要完整的循环填充,请改用BorderRadius

ClipOval

答案 2 :(得分:5)

您还可以使用CircleAvatar,它随颤动一起提供

CircleAvatar(
  radius: 20,
  backgroundImage: NetworkImage('https://via.placeholder.com/140x100')
)

答案 3 :(得分:5)

对于新版的Flutter和Material主题,您也需要使用“ Padding”小部件,以使图像无法填充其容器。

例如,如果您想在AppBar中插入圆形图像,则必须使用填充,否则您的图像将始终与AppBar一样高。

希望这会对某人有所帮助

InkWell(
        onTap: () {
            print ('Click Profile Pic');
        },
        child: Padding(
            padding: const EdgeInsets.all(8.0),
            child: ClipOval(
                child: Image.asset(
                    'assets/images/profile1.jpg',
                ),
            ),
        ),
    ),

答案 4 :(得分:3)

使用ClipRRect,并将其图像属性设置为fit:BoxFit.fill

ClipRRect(
          borderRadius: new BorderRadius.circular(10.0),
          child: Image(
            fit: BoxFit.fill,
            image: AssetImage('images/image.png'),
            width: 100.0,
            height: 100.0,
          ),
        ),

答案 5 :(得分:3)

这是我用过的代码。

Container(
      width: 200.0,
      height: 200.0,
      decoration: BoxDecoration(
        image: DecorationImage(
         image: NetworkImage('Network_Image_Link')),
        color: Colors.blue,
   borderRadius: BorderRadius.all(Radius.circular(25.0)),
      ),
    ),

谢谢!!!

答案 6 :(得分:2)

// Set SS pin low to activate
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);

// Read Temp
if(HAL_SPI_TransmitReceive(&hspi2, (uint8_t*)&master_buffer_tx[4], (uint8_t*)&master_buffer_rx[4], 1, 1000)!=HAL_OK){
      Error_Handler();
}

// Check finished
while(HAL_SPI_GetState(&hspi2) != HAL_SPI_STATE_READY){
}

// Set SS pin high to deactivate
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);

HAL_Delay(10);

答案 7 :(得分:2)

使用ClipRRect,它将解决您的问题。

      ClipRRect(
              borderRadius: BorderRadius.all(Radius.circular(10.0)),
              child: Image.network(
                Constant.SERVER_LINK + model.userProfilePic,
                fit: BoxFit.cover,
              ),
            ),

答案 8 :(得分:1)

尝试这种方式

Container(
        width: 100.0,
        height: 150.0,
        decoration: BoxDecoration(
          image: DecorationImage(
                fit: BoxFit.cover,
                image: NetworkImage('Path to your image')
              ),
          borderRadius: BorderRadius.all(Radius.circular(8.0)),
          color: Colors.redAccent,
        ),

答案 9 :(得分:1)

尝试一下,效果很好。

Container(
  height: 220.0,
  width: double.infinity,
  decoration: BoxDecoration(
    borderRadius: new BorderRadius.only(
      topLeft: Radius.circular(10),
       topRight: Radius.circular(10),
    ),
    image: DecorationImage(
      fit: BoxFit.fill,
      image: NetworkImage(
        photoUrl,
      ),
     ),
   ),
);

答案 10 :(得分:1)

用户装饰容器的图像。

  @override
  Widget build(BuildContext context) {
    final alucard = Container(
        decoration: new BoxDecoration(
        borderRadius: BorderRadius.circular(10),
          image: new DecorationImage(
              image: new AssetImage("images/logo.png"),
              fit: BoxFit.fill,
          )
        )
    );

答案 11 :(得分:1)

输出:

enter image description here

使用BoxDecoration

Container(
              margin: EdgeInsets.all(8),
              width: 86,
              height: 86,
              decoration: BoxDecoration(
                shape: BoxShape.circle,
                image: DecorationImage(
                    image: NetworkImage('https://i.stack.imgur.com/0VpX0.png'),
                    fit: BoxFit.cover
                ),
              ), 
           ),

答案 12 :(得分:0)

使用图片

ClipOval(
    child: Image.network(
        'https://url to your image',
        fit: BoxFit.fill,
    ),
);

在使用“资产图片”时使用此

ClipOval(
    child: Image.asset(
        'Path to your image',
        fit: BoxFit.cover,
    ),
)

答案 13 :(得分:0)

在此圆圈图像中使用这种方式也可以使用+您还为网络图像提供了预加载器:

new ClipRRect(
     borderRadius: new BorderRadius.circular(30.0),
     child: FadeInImage.assetNetwork(
          placeholder:'asset/loader.gif',
          image: 'Your Image Path',
      ),
    )

答案 14 :(得分:0)

您可以像这样使用ClipRRect:

  Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: ClipRRect(
                    borderRadius: BorderRadius.circular(25),
                    child: Image.asset(
                      'assets/images/pic13.jpeg',
                      fit: BoxFit.cover,
                    ),
                  ),
                )

您可以设置半径,或者只为topLeft或left bottom设置用户,例如:

Padding(
              padding: const EdgeInsets.all(8.0),
              child: ClipRRect(
                borderRadius: BorderRadius.only(
                    topLeft: Radius.circular(25)
                ,bottomLeft: Radius.circular(25)),
                child: Image.asset(
                  'assets/images/pic13.jpeg',
                  fit: BoxFit.cover,
                ),
              ),
            )

答案 15 :(得分:0)

您可以将CircleAvatar窗口小部件的半径设置为:

CircleAvatar(
             radius: 50.0,
             backgroundImage: AssetImage("assets/img1.jpeg"),
            ),
相关问题