我正在使用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;
});
}