【flutter】同时实现Container内阴影与外阴影

这篇具有很好参考价值的文章主要介绍了【flutter】同时实现Container内阴影与外阴影。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

效果图:

flutter container 阴影,flutter,前端,flutter,android,ios,ui

思路:

1. 首先把背景用阴影色填充。

flutter container 阴影,flutter,前端,flutter,android,ios,ui

Container(
  width: 63,
  height: 63,
  decoration: const BoxDecoration(
    color: Color(0xFFE8E8E8),
    shape: BoxShape.circle,
  ),
),

2. 然后实现外阴影。

flutter container 阴影,flutter,前端,flutter,android,ios,ui

 

Container(
  width: 63,
  height: 63,
  decoration: const BoxDecoration(
    color: Color(0xFFE8E8E8),
    shape: BoxShape.circle,
    boxShadow: [
      BoxShadow(
        color: Color(0xFFE8E8E8),
        offset: Offset(8, 8),
        blurRadius: 10,
        spreadRadius: 1,
      ),
    ],
  ),
),

3. 关键步骤,叠加一层原来背景色的阴影

由于叠加的阴影有向右下方的偏移,露出的背景构成了内阴影。

这里的模糊半径使得内阴影附带了模糊,但外阴影的轮廓也模糊了(下面解决)。

flutter container 阴影,flutter,前端,flutter,android,ios,ui

Stack(
  alignment: AlignmentDirectional.center,
  children: [
    Container(
      width: 63,
      height: 63,
      decoration: const BoxDecoration(
        color: Color(0xFFE8E8E8),
        shape: BoxShape.circle,
        boxShadow: [
          BoxShadow(
            color: Color(0xFFE8E8E8),
            offset: Offset(8, 8),
            blurRadius: 10,
            spreadRadius: 1,
          ),
        ],
      ),
    ),
      Container(
      width: 63,
      height: 63,
      decoration: const BoxDecoration(
        shape: BoxShape.circle,
        boxShadow: [
          BoxShadow(
            color: Color(0xFFF7F7F7),
            offset: Offset(3, 3),
            blurRadius: 3,
            spreadRadius: 1,
          ),
        ],
      ),
    ),
  ],
),

最后加入裁切,解决外阴影边缘模糊的问题。

只要把第3步中多余的阴影裁掉即可,ClipRRect裁切掉右下溢出的多余阴影,形成锐利的边缘。

flutter container 阴影,flutter,前端,flutter,android,ios,ui

完整代码:文章来源地址https://www.toymoban.com/news/detail-551071.html

Stack(
  alignment: AlignmentDirectional.center,
  children: [
    Container(
      width: 63,
      height: 63,
      decoration: const BoxDecoration(
        color: Color(0xFFE8E8E8),
        shape: BoxShape.circle,
        boxShadow: [
          BoxShadow(
            color: Color(0xFFE8E8E8),
            offset: Offset(8, 8),
            blurRadius: 10,
            spreadRadius: 1,
          ),
        ],
      ),
    ),
    ClipRRect(
      borderRadius: BorderRadius.circular(63),
      child: Container(
        width: 63,
        height: 63,
        decoration: const BoxDecoration(
          shape: BoxShape.circle,
          boxShadow: [
            BoxShadow(
              color: Color(0xFFF7F7F7),
              offset: Offset(3, 3),
              blurRadius: 3,
              spreadRadius: 1,
            ),
          ],
        ),
      ),
    ),
  ],
),

到了这里,关于【flutter】同时实现Container内阴影与外阴影的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker-Container

    通俗地讲, 容器是镜像的运行实体,镜像是静态的只读文件 而容器带有运行时需要的可写文件层,并且容器中的进程属于运行状态。即容器运行着真正的应用进程。容器有初建、运行、停止、暂停和删除五种状态 虽然容器的本质是主机上运行的一个进程,但是容器有自己独

    2024年03月28日
    浏览(35)
  • 什么是容器(Container)?

    在软件开发中,容器(Container)是一个提供运行环境和资源管理的软件平台。它负责管理和组织应用程序的组件、依赖关系和资源,并提供一系列的服务和功能,使得应用程序能够在容器中运行和交互。 容器可以是各种不同的类型,比如应用服务器、Web服务器、操作系统容器

    2024年02月15日
    浏览(30)
  • FAQ:Container Classes篇

    In terms of time and space, a contiguous array of any kind is just about the optimal construct for accessing a sequence of objects in memory, and if you are serious about performance in any language you will “often” use arrays. 从时间和空间的角度来看,任何类型的连续数组都是访问内存中对象序列的最佳构造,如果真的考虑

    2024年02月03日
    浏览(29)
  • 【Docker】5.Docker Container

    容器是镜像运行的实体,镜像是静态的只读文件,容器带有运行时需要的可写文件层,容器中的进程属于运行状态。具有初建、运行、停止、暂停、删除五种状态 容器的本质是主机上的运行的一个进程,但容器具有自己独立的命名空间和资源限制。容器是基于镜像创建的可运

    2024年02月08日
    浏览(25)
  • 使用docker报Error response from daemon: Cannot start container container-name: failed to create

    昨天使用Docker进行容器化应用开发的过程中,遇到端口冲突的问题。当我们尝试启动一个新的容器时,可能会收到以下错误信息: Error response from daemon: Cannot start container container-name: failed to create endpoint endpoint-name on network network-name: Bind for 0.0.0.0:port failed: port is already allocated.

    2024年02月10日
    浏览(32)
  • 十一. Kubernetes 容器 container 设置详解

    pod是k8s的基本单位,用k8s部署的应用运行在container容器中, 容器运行在pod中,pod又运行在k8s的节点上,一个pod内部可以启动多个container容器,所以pod又称为容器组(pod内部运行的docker容器,使用docker容器启动服务时一个容器只能启动一个服务,使用k8s后,pod是k8s的基本单位一个pod中可以运

    2024年02月08日
    浏览(35)
  • Ubuntu安装Nvidia Container Toolkit

    NVIDIA Container Toolkit 可用于各种 Linux 发行版并支持不同的容器引擎。在开始之前,请确保您已经为您的 Linux 发行版安装了 NVIDIA 驱动程序。安装驱动程序的推荐方法是使用分发包管理器,但也可以使用其他安装程序机制(例如,通过.run从 NVIDIA Driver Downloads下载安装程序) Nv

    2024年02月14日
    浏览(28)
  • docker进入容器时报错 Error response from daemon: Container xxx is restarting, wait until the container is

    使用docker run命令运行容器,再进入容器时报错 运行容器命令 docker run --restart=always --name mongo -v /data/mongo:/data/db -p 27017:27017 -d mongo --auth 进入容器命令 docker exec -it mongo bash Error response from daemon: Container 90831dd80b32a1502d9535c874ceec899b5fd70c883481195b4f36cd29be47b0 is restarting, wait until the cont

    2024年02月11日
    浏览(43)
  • docker: Error response from daemon: Conflict. The container name is already in use by container You

    docker: Error response from daemon: Conflict. The container name is already in use by container You have to remove (or rename) that container to be able to reuse that name. 在此之前已经启动了相同名字的docker容器,The container name is already in use by container You have to remove (or rename) that container to be able to reuse that name 想要

    2024年02月10日
    浏览(49)
  • docker-Error: No such container

    删除掉docker镜像,一直报Error: No such container的错误,解决步骤如下: 切换到root用户然后: service docker stop rm -rf /var/lib/docker 到这里就会发现镜像已经删除干净。 附docker常用命令: 重启docker服务 sudo service docker restart 关闭docker服务 docker service docker stop 开启docker服务 docker serv

    2023年04月16日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包