当前位置:  开发笔记 > 编程语言 > 正文

如何使IconButton的高亮颜色显示在父窗口小部件上?

如何解决《如何使IconButton的高亮颜色显示在父窗口小部件上?》经验,为你挑选了1个好方法。

当我设置容纳IconButton的Container的颜色时,我发现IconButton的突出显示颜色被容器的颜色隐藏.这就是我的意思:

在此输入图像描述

如何确保蓝色圆圈出现在红色方块上方

这是我的代码:

import 'dart:ui';
import 'package:flutter/material.dart';

void main() {
  runApp(new MaterialApp(home: new MyDemo()));
}

class MyDemo extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: new Center(
        child: new Container(
          width: 60.0,
          height: 60.0,
          color: Colors.red,
          child: new IconButton(
            highlightColor: Colors.blue,
            icon: new Icon(Icons.add_a_photo), onPressed: ()=>{},),
        ),
      ),
    );
  }
}

Rémi Roussel.. 10

InkSplash发生在最近的祖先Material小部件上.

您可以使用Material.of(context)该窗口小部件为InkSplashes提供一些帮助程序.

在你的情况下,它被InkResponse实例化IconButton引发Splash效果.但是目标Material小部件是由实例化的Scaffold.这是你背景的祖先.因此,背景涂料在InkSplash上​​方.

要解决这个问题,你必须Material在你的背景和你的背景之间引入一个新的实例IconButton.

这导致 :

在此输入图像描述

哇,我们解决了这个问题.但现在它被裁剪了!我们继续吧.

最简单的选择是将渲染分成两个分支.一个用于后台,一个用于UI.类似的东西应该做的伎俩:

return new Scaffold(
  body: new Stack(
    fit: StackFit.expand,
    children: [
      new Center(
        child: new Container(
          height: 60.0,
          width: 60.0,
          color: Colors.red,
        ),
      ),
      new Material(
        type: MaterialType.transparency,
        child: new IconButton(
          highlightColor: Colors.blue,
          icon: new Icon(Icons.add_a_photo),
          onPressed: () => {},
        ),
      ),
    ],
  ),
);

在此输入图像描述



1> Rémi Roussel..:

InkSplash发生在最近的祖先Material小部件上.

您可以使用Material.of(context)该窗口小部件为InkSplashes提供一些帮助程序.

在你的情况下,它被InkResponse实例化IconButton引发Splash效果.但是目标Material小部件是由实例化的Scaffold.这是你背景的祖先.因此,背景涂料在InkSplash上​​方.

要解决这个问题,你必须Material在你的背景和你的背景之间引入一个新的实例IconButton.

这导致 :

在此输入图像描述

哇,我们解决了这个问题.但现在它被裁剪了!我们继续吧.

最简单的选择是将渲染分成两个分支.一个用于后台,一个用于UI.类似的东西应该做的伎俩:

return new Scaffold(
  body: new Stack(
    fit: StackFit.expand,
    children: [
      new Center(
        child: new Container(
          height: 60.0,
          width: 60.0,
          color: Colors.red,
        ),
      ),
      new Material(
        type: MaterialType.transparency,
        child: new IconButton(
          highlightColor: Colors.blue,
          icon: new Icon(Icons.add_a_photo),
          onPressed: () => {},
        ),
      ),
    ],
  ),
);

在此输入图像描述

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有