Konvertering af Figma-prototypeanimationer til Flutter Physics Widgets
Lær, hvordan du eksporterer Figma-prototypeanimationer til native Flutter SpringSimulation og AnimationController-kode med nul overdragelsesgæld.
Core Takeaway
For at oversætte Figma-animationer til Flutter konstruerer udviklere typisk AnimationControllers med CurvedAnimations. Autentisk mobilfølelse i Flutter kræver dog SpringSimulation og fysikbaserede bevægelser. ExodeUI oversætter visuelle vektorlag og fjederspændinger direkte til Flutter widgettræer.
Hvorfor CurvedAnimation i Flutter skuffer
Flutter tilbyder standardkurver (Curves.easeInOut, Curves.fastOutSlowIn), men disse er varighedsbundne. Hvis en bruger afbryder en strygebevægelse, snapper varighedskurverne. Ved at udnytte SpringSimulation med SpringDescription (masse, stivhed, dæmpning), bliver Flutter-animationer helt naturlige.
Snippet til produktionsimplementering
// Flutter Spring Simulation Widget
import 'package:flutter/material.dart';
import 'package:flutter/physics.dart';
class SpringCard extends StatefulWidget {
@override
_SpringCardState createState() => _SpringCardState();
}
class _SpringCardState extends State<SpringCard> with SingleTickerProviderStateMixin {
late AnimationController _controller;
@override
void initState() {
super.initState();
_controller = AnimationController(vsync: this);
}
void _runSpring(double target) {
final spring = SpringDescription(mass: 1.0, stiffness: 420.0, damping: 24.0);
final simulation = SpringSimulation(spring, _controller.value, target, 0);
_controller.animateWith(simulation);
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTapDown: (_) => _runSpring(0.92),
onTapUp: (_) => _runSpring(1.0),
child: ScaleTransition(scale: _controller, child: Card(child: Text("Exode Flutter"))),
);
}
}