首页 > 解决方案 > 带有 AnimationController 的 GridView 无法正常工作

问题描述

我在 GridView 中添加了点击动画。当我点击时,所有按钮都是动画的。有可能修复它吗?

  double _scale;
  AnimationController _controller;

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  void _onTapDown(TapDownDetails details) {
    _controller.forward();
  }

  void _onTapUp(TapUpDetails details) {
    _controller.reverse();
  }

  @override
  void initState() {
    super.initState();
    _controller = AnimationController(
      vsync: this,
      duration: Duration(milliseconds: 200),
      lowerBound: 0.0,
      upperBound: 0.1,
    )..addListener(() {
        setState(() {});
      });
  }

在构建方法中

  @override
  Widget build(BuildContext context) {
 _scale = 1 - _controller.value;
  GridView.count(
                crossAxisCount: 2,
                childAspectRatio: (itemWidth / itemHeight),
                controller: ScrollController(keepScrollOffset: false),
                shrinkWrap: true,
                scrollDirection: Axis.vertical,
                children: productModel.map((value) {
                  return Padding(
                    padding: EdgeInsets.all(width * .02),
                    child: Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: <Widget>[
                        GestureDetector(
                          onTapDown: _onTapDown,
                          onTapUp: _onTapUp,
                          onLongPressEnd: _onTapLongPressEnd,
                          child: Transform.scale(
                            scale: _scale,
                            child: Container(
                                child: Center(
                                  child: CustomText(//text),
                                )),
                          ),
                        )
                      ],
                    ),
                  );
                }).toList(),
              ),
  }

标签: flutter

解决方案


推荐阅读