如何使用浮动动作按钮列表?

时间:2019-08-13 11:28:10

标签: flutter

我创建了一个简单的动画,以查看3个不同的浮动动作按钮,它们是通过列表生成的,现在我希望它们做不同的事情,但是如何选择要执行的操作呢?

现在,我尝试让第一个晶圆厂对TempImg()做Navigator.push,但是相反,所有按钮都转到了TempImg(),我希望第一个按钮达到那个,第二个就做其他东西等等...

floatingActionButton: new Column(
  mainAxisSize: MainAxisSize.min,
  children: new List.generate(icons.length, (int index) {
    Widget child = new Container(
        height: 70.0,
        width: 56.0,
        alignment: FractionalOffset.topCenter,
        child: new ScaleTransition(
          scale: new CurvedAnimation(
            parent: _controller,
            curve: new Interval(
                0.0, 1.0 - index / icons.length / 2.0,
                curve: Curves.easeOut),
          ),
          child: new FloatingActionButton(
              child: new Icon(icons[index]),
              onPressed: () {
                Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (context) => TempImg(),
                    ));
              }),
        ));
    return child;
  }).toList()
    ..add(
      new FloatingActionButton(
          child: new AnimatedBuilder(
            animation: _controller,
            builder: (BuildContext context, Widget child) {
              return new Transform(
                transform: new Matrix4.rotationZ(
                    _controller.value * 0.5 * math.pi),
                alignment: FractionalOffset.center,
                child: new Icon(_controller.isDismissed
                    ? Icons.add
                    : Icons.close),
              );
            },
          ),
          onPressed: () {
            if (_controller.isDismissed) {
              _controller.forward();
            } else {
              _controller.reverse();
            }
          }),
    ))

1 个答案:

答案 0 :(得分:1)

您可以使用项目智能点击事件,如下代码:

FloatingActionButton(
  child: new Icon(icons[index]),
  onPressed: () {
    if(index == 1) {
      Navigator.push(
        context,
        MaterialPageRoute(
          builder: (context) => TempImg(),
      ));
    } else if(index == 2) {

    } else if(index == 3) {

    }
  } /* enter code here */