Flutter扩展和Flutter中的有状态小部件

时间:2020-04-13 11:41:32

标签: flutter flutter-web

我正在使用Flutter及其扩展部分的Stateful Widget。 我遇到的问题是,传递给我的有状态小部件的值被覆盖了,因为我需要将我的值设置为使Flutter满意的值。

我的有状态小部件首先接收如下数据:

class TranslateOnHoverRight extends StatefulWidget {
final Widget child;
final double movement;
TranslateOnHoverRight({Key key, this.child,this.movement}) : super(key: key);

@override
_TranslateOnHoverRightState createState() => _TranslateOnHoverRightState();
}

它需要一个小部件和一个小凸起。

然后,我有一个_TranslateOnHoverRightState类,它看起来像这样,在这里我无法正确处理所有问题。

class _TranslateOnHoverRightState extends State<TranslateOnHoverRight> {

final nonHoverTransform = Matrix4.identity();
final hoverTransform = Matrix4.identity()..translate(_movement, 0, 0);

bool _hovering = false;
static double _movement = 0;

@override
Widget build(BuildContext context) {
    return MouseRegion(
        onEnter: (e) => _mouseEnter(true,widget.movement),
        onExit: (e) => _mouseEnter(false,0),
        child: AnimatedContainer(
           duration: const Duration(milliseconds: 200),
           child: widget.child,
           transform: _hovering ? hoverTransform : nonHoverTransform,
        ),
     );
}

void _mouseEnter(bool hovering,double move) {
    setState(() {
        _hovering = hovering;
        _movement = move;
    });
  }
}

在顶部,我将_movement传递给我的hoverTransform变量,并将其设置为零。

现在,在我的Widget build函数中,我返回一个MouseRegion,它的onEnter设置为使用我的函数_mouseEnter,该函数从参数{{1 }}。这里的想法是,现在将鼠标指针悬停时应该发生,但是什么也没有发生。

在我的widget.movement函数中,我传递true或false,并将值从小部件发送并传递给我的_mouseEnter变量,如下所示:

_movement

最后,所有内容都用作扩展名,如下所示:

void _mouseEnter(bool hovering,double move) {
    setState(() {
        _hovering = hovering;
        _movement = move;
    });
}

0 个答案:

没有答案