当前位置:   article > 正文

Flutter在Container设置渐变填充后Ink.image图片无法显示

Flutter在Container设置渐变填充后Ink.image图片无法显示

1、环境版本

        Flutter版本:3.16.9

        开发IDE:android studio 2023.2.1 

        以下代码在Android中测试通过,iOS没有试过。以后升级啥的可能会和本方案会有出入,请自行甄别。

2、Ink.image图片无法显示场景

        当对Container做了LinearGradient渐变填充后,在其child中添加子Widget中包含lnk.image类型的图片按钮,会导致图片无法正常显示,但按钮还可以正常点击的情况,同时点击按钮也不会触发InkWell的水墨效果。

  1. class _TestPageState extends State<TestPage> {
  2. @override
  3. Widget build(BuildContext context) {
  4. return Scaffold(
  5. extendBodyBehindAppBar: true,
  6. body: Column(
  7. children: [
  8. Container(
  9. width: double.infinity,
  10. padding: const EdgeInsets.only(top: 90),
  11. decoration: const BoxDecoration(
  12. gradient: LinearGradient(
  13. begin: Alignment.topCenter,
  14. end: Alignment.bottomCenter,
  15. colors: [
  16. Color.fromRGBO(21, 169, 113, 1.0),
  17. Colors.white,
  18. Colors.white,
  19. ],
  20. ),
  21. ),
  22. child: Column(
  23. children: [
  24. const SizedBox(height: 30,),
  25. Ink.image(
  26. width: 60,
  27. height: 60,
  28. image:
  29. const AssetImage(Assets.imagesIIconReport), //特定页面中调用会加载不出图片
  30. onImageError: (Object exception, StackTrace? stackTrace) {
  31. debugPrint("加载图片异常了!!!!!");
  32. },
  33. fit: BoxFit.fill,
  34. child: InkWell(
  35. borderRadius: const BorderRadius.all(Radius.circular(50.0)),
  36. autofocus: true,
  37. onTap: () {
  38. print("点击");
  39. },
  40. ),
  41. ),
  42. ],
  43. ),
  44. ),
  45. ],
  46. ),
  47. );
  48. }
  49. }

        运行后的效果如下图:

3、解决方案

        这问题其实很容易解决,(未深入分析问题产生原因,个人猜测问题产生的原因)它的问题是出在Container在填充渐变背景色时和Ink.image中绘图产生了覆盖,填充的渐变背景色显示层级高于包含在内的Ink.image的图片,导致把图片覆盖后产生看不到的原因,但如果为图片按钮添加文字则文字是能正常显示。这个问题当是困扰了我很久,如果文字也不显示那还好说,立马能想到这个覆盖问题。只要把上面代码的填充最后一项颜色变成透明色就可以解决(当然也要取决于你图标按钮显示的位置,需要处在透明色区域)

  1. gradient: LinearGradient(
  2. begin: Alignment.topCenter,
  3. end: Alignment.bottomCenter,
  4. colors: [
  5. Color.fromRGBO(21, 169, 113, 1.0),
  6. Colors.white,
  7. //Colors.white,
  8. Color.fromRGBO(255, 255, 255, 0),
  9. ],
  10. ),

        效果如下图:

        这大概可能是一个底层绘图BUG吧。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/231650
推荐阅读
相关标签
  

闽ICP备14008679号