我是靠谱客的博主 舒适柜子,最近开发中收集的这篇文章主要介绍Flutter 气泡效果 centerSlice 实现点9图,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

背景

点9图,作为控件背景时,用于缩放图片指定区域,而不是默认对整图进行缩放。
一般用于聊天气泡,这种内容会变更的场景。

举例

UI最终效果如下图
需求: 内容可变,顶部三角不可拉伸,其他区域可以拉伸。
在这里插入图片描述
实际图片是105*71的图
在这里插入图片描述

Android使用.9图实现该功能

该需求用.9图 在AndroidStudio创建时:
在这里插入图片描述

  • 左侧黑线:上下的拉伸区域。
  • 顶部黑线:左右的拉伸区域
  • 右部黑线:填充内容区域的上下限制(如 文本组件的文字)
  • 底部黑线:填充内容区域的左右限制

右部、底部的黑线可以拉满,然后用组件的 padding 属性达到同样的效果。

Flutter实现该效果

Flutter 设置上图的 粉色四边形区域,来描述拉伸区域。

坐标的数值可以通过 AndroidStudio,移动光标 获取右下角的X、Y数值确定(上图,右下叫红框区域)

全部代码:

Container(
        margin: const EdgeInsets.only(top: 6),
        padding: const EdgeInsets.only(left: 12, right: 12, top: 24, bottom: 12),
        decoration: BoxDecoration(
          image: DecorationImage(
            centerSlice: const Rect.fromLTRB(60, 27, 85, 53),
            image: NetworkImage(url),
          )
        ),
        child:

下图强调下:
在这里插入图片描述

关键代码:

centerSlice: const Rect.fromLTRB(60, 27, 85, 53),

四个数值,就是粉色四边形的 top、left、right、button。
还有指定一个点,再设置宽、高的方法。

问题 原始图片太大,导致未缩放也很大:

如果原始图片就很大, 不压缩的部分,不扩大 也显的大。

通过设置 一定比例的宽或高,再设置同比例的 centerSlice,就ok了。

Container(
        // margin: const EdgeInsets.only(top: 6),
        padding: const EdgeInsets.only(left: 12, right: 12, top: 24, bottom: 12),
        decoration: BoxDecoration(
            image: DecorationImage(
              centerSlice: const Rect.fromLTRB(60 * 0.5,  27*0.5,  85*0.5,  53*0.5),
              image: NetworkImage(url),
              width: 105*0.5
            )
        ),

最后

以上就是舒适柜子为你收集整理的Flutter 气泡效果 centerSlice 实现点9图的全部内容,希望文章能够帮你解决Flutter 气泡效果 centerSlice 实现点9图所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部