mirror of
https://github.com/flutter/samples.git
synced 2026-10-11 21:52:52 +00:00
Flutter 3.29 beta (#2571)
This commit is contained in:
@@ -12,14 +12,8 @@ class PhysicsCardDragDemo extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('Spring Physics'),
|
||||
),
|
||||
body: const DraggableCard(
|
||||
child: FlutterLogo(
|
||||
size: 128,
|
||||
),
|
||||
),
|
||||
appBar: AppBar(title: const Text('Spring Physics')),
|
||||
body: const DraggableCard(child: FlutterLogo(size: 128)),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -67,14 +61,15 @@ class _DraggableCardState extends State<DraggableCard>
|
||||
/// Calculates and runs a [SpringSimulation]
|
||||
void _runAnimation(Offset velocity, Size size) {
|
||||
_animation = _controller.drive(
|
||||
AlignmentTween(
|
||||
begin: _dragAlignment,
|
||||
end: Alignment.center,
|
||||
),
|
||||
AlignmentTween(begin: _dragAlignment, end: Alignment.center),
|
||||
);
|
||||
|
||||
final simulation =
|
||||
SpringSimulation(_spring, 0, 1, _normalizeVelocity(velocity, size));
|
||||
final simulation = SpringSimulation(
|
||||
_spring,
|
||||
0,
|
||||
1,
|
||||
_normalizeVelocity(velocity, size),
|
||||
);
|
||||
|
||||
_controller.animateWith(simulation);
|
||||
}
|
||||
@@ -97,20 +92,17 @@ class _DraggableCardState extends State<DraggableCard>
|
||||
final size = MediaQuery.of(context).size;
|
||||
return GestureDetector(
|
||||
onPanStart: (details) => _controller.stop(canceled: true),
|
||||
onPanUpdate: (details) => setState(
|
||||
() => _dragAlignment += Alignment(
|
||||
details.delta.dx / (size.width / 2),
|
||||
details.delta.dy / (size.height / 2),
|
||||
),
|
||||
),
|
||||
onPanEnd: (details) =>
|
||||
_runAnimation(details.velocity.pixelsPerSecond, size),
|
||||
child: Align(
|
||||
alignment: _dragAlignment,
|
||||
child: Card(
|
||||
child: widget.child,
|
||||
),
|
||||
),
|
||||
onPanUpdate:
|
||||
(details) => setState(
|
||||
() =>
|
||||
_dragAlignment += Alignment(
|
||||
details.delta.dx / (size.width / 2),
|
||||
details.delta.dy / (size.height / 2),
|
||||
),
|
||||
),
|
||||
onPanEnd:
|
||||
(details) => _runAnimation(details.velocity.pixelsPerSecond, size),
|
||||
child: Align(alignment: _dragAlignment, child: Card(child: widget.child)),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user