首先,我对我的英语表示歉意。
第二,我在管理animateTransition的值时遇到麻烦。如您所见,我有一个卡片小部件,其位置在屏幕右侧,而MaterialButton在屏幕中心。
定位的窗口小部件的值由MediaQuery类给出,并保存在position变量中,但是当我尝试更改位置的值并调用setSate函数时,构建方法将重做并初始化变量,并且新值始终相同因此(我认为),因此永远不会看到过渡。
我显示代码。
class _DashboardState extends State<Dashboard> {
final double blur = 30;
final double offset = 20;
final double top = 25;
@override
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size;
double position = -(size.width) * 0.8;
return WillPopScope(
onWillPop: () async =>
SystemChannels.platform.invokeMethod('SystemNavigator.pop'),
child: MaterialApp(
home: Scaffold(
body: SafeArea(
child: Stack(
alignment: Alignment.center,
children: <Widget>[
Positioned(
right: position,
child: AnimatedContainer(
duration: Duration(milliseconds: 500),
curve: Curves.decelerate,
child: Card(
elevation: 8,
color: Colors.red,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
child: Container(
width: size.width * 0.9,
height: size.height * 0.8,
),
),
),
),
Center(
child: MaterialButton(
color: Colors.black,
child: Text("mover"),
onPressed: () {
setState(() {
position = 0;
});
},
),
)
],
),
),
),
),
);
} }
当我尝试取出变量时,由于mediaQuery中的上下文相关性,并且我无法初始化请求变量以获取设备的大小并置于初始状态,所以我无法这样做。处理此类问题的任何建议。
感谢您的关注