颤动 - GestureDetector未在动画中检测到

时间:2017-08-18 20:59:35

标签: dart flutter

我通过点击<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> <div class="progress progress-bar-vertical" style=" transform:rotate(180deg)"> <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="height: 60%;"> <span class="sr-only">60% Complete</span> </div> <div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100" style="height: 10%;"> <span class="sr-only">10% Complete</span> </div> <div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100" style="height: 20%;"> <span class="sr-only">20% Complete</span> </div> </div>使用在屏幕上填充蓝色的动画。再次点击FloatingActionButton蓝色退出屏幕。如下面的gif:

enter image description here

我在动画中添加FloatingActionButton,以便在屏幕填充蓝色后,点击蓝色时,它会退出屏幕。就像我再次点击GestureDetector一样。

但是,FloatingActionButton未检测到屏幕上蓝色任何部分的任何点按,即使我将其放入GestureDetector onTap: (){print("test")}也未检测到。

有人可以帮助我,通过点击蓝色再次运行GestureDetector功能吗?

_up()

2 个答案:

答案 0 :(得分:1)

GestureDetector仅适用于小部件。 CustomPaint不是小工具,因此有必要将child属性CustomPaint放在小工具中,例如Container

以下是CustomPaint

的方式
...
child: new CustomPaint(
  painter: new Sky(_width, _height * _animation.value),
  child: new Container(
    height: _isRotated ? 0.0 : _height * _animation.value,
    width: _isRotated ? 0.0 : _width,
  ),
),
...

答案 1 :(得分:1)

已经有适合你的东西:脚手架。

使用Scaffold.of(context).showBottomSheet 它可以在一行代码中完成您所需的一切。

您还可以使用showModalBottomSheet(似乎有最大高度限制)。

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

class Test extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text("data"),
      ),
      floatingActionButton: new MyButton(),
    );
  }
}

class MyButton extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new FloatingActionButton(
      backgroundColor: Colors.red,
      onPressed: () => onPressed(context),
      child: new Icon(Icons.plus_one),
    );
  }

  void onPressed(BuildContext context) {
    Scaffold.of(context).showBottomSheet((context) {
      return new Container(
        color: Colors.cyan,
      );
    });
  }
}