Flutter 发牌效果
Flutter card dealing effect
我正在寻找一种发牌效果,这样就有一副牌,然后在单击时,它会将牌发到网格视图(牌移动到网格中的位置)以便用户使用玩记忆游戏。它与英雄动画非常相似,只是它不是过渡(或者可能是?我不确定)
有没有办法在 Flutter 中做到这一点?
与其尝试使用 GridView
,不如将卡片(我假设是一系列 Image
小部件)放入 Stack
,然后使用 AnimatedPositioned
小部件来移动它。例如:
Stack(
children: [
AnimatedPositioned(
duration: const Duration(milliseconds: 500),
left: 20, // try change this to `0` and "hot reload"
top: 20,
child: FlutterLogo(),
),
AnimatedPositioned(
duration: const Duration(milliseconds: 500),
left: 30,
top: 30,
child: FlutterLogo(),
),
],
),
与上面的代码示例类似,但您可以使用 _slided ? 20 : 0
等变量,而不是使用 20 等硬编码值。每当您希望动画发生时,只需切换布尔变量并调用设置状态即可。
为了让它更逼真,你可以将curve: Curves.easeOut
传递给AnimatedPositioned
小部件,这样移动动画开始时会更快,然后逐渐变慢(就像卡片在table并逐渐因摩擦而完全停止)。
我正在寻找一种发牌效果,这样就有一副牌,然后在单击时,它会将牌发到网格视图(牌移动到网格中的位置)以便用户使用玩记忆游戏。它与英雄动画非常相似,只是它不是过渡(或者可能是?我不确定)
有没有办法在 Flutter 中做到这一点?
与其尝试使用 GridView
,不如将卡片(我假设是一系列 Image
小部件)放入 Stack
,然后使用 AnimatedPositioned
小部件来移动它。例如:
Stack(
children: [
AnimatedPositioned(
duration: const Duration(milliseconds: 500),
left: 20, // try change this to `0` and "hot reload"
top: 20,
child: FlutterLogo(),
),
AnimatedPositioned(
duration: const Duration(milliseconds: 500),
left: 30,
top: 30,
child: FlutterLogo(),
),
],
),
与上面的代码示例类似,但您可以使用 _slided ? 20 : 0
等变量,而不是使用 20 等硬编码值。每当您希望动画发生时,只需切换布尔变量并调用设置状态即可。
为了让它更逼真,你可以将curve: Curves.easeOut
传递给AnimatedPositioned
小部件,这样移动动画开始时会更快,然后逐渐变慢(就像卡片在table并逐渐因摩擦而完全停止)。