Skip to main content
ExodeUI

EXODEUI DESKTOP

A little space for good ideas.

Choose your platform to get the official ExodeUI installer.

Looking for Intel Mac or other builds? Explore the web studio or check all download options.

Prefer the browser? Try for free in your browser →
Συστάδα Figma Motion9 λεπτά ανάγνωση·Από την ομάδα του ExodeUI

Μετατροπή κινούμενων σχεδίων πρωτοτύπων Figma σε γραφικά στοιχεία φυσικής Flutter

Μάθετε πώς να εξάγετε πρωτότυπα κινούμενα σχέδια Figma σε εγγενή κώδικα Flutter SpringSimulation και AnimationController με μηδενικό χρέος μεταβίβασης.

Άμεση Περίληψη & Ορισμός

Core Takeaway

Για να μεταφράσουν τα κινούμενα σχέδια Figma σε Flutter, οι προγραμματιστές κατασκευάζουν συνήθως AnimationControllers με CurvedAnimations. Ωστόσο, η αυθεντική αίσθηση κινητού στο Flutter απαιτεί SpringSimulation και χειρονομίες που βασίζονται στη φυσική. Το ExodeUI μεταφράζει οπτικά διανυσματικά στρώματα και τάσεις ελατηρίου απευθείας σε δέντρα γραφικών στοιχείων Flutter.

Γιατί το CurvedAnimation στο Flutter απογοητεύει

Το Flutter προσφέρει τυπικές καμπύλες (Curves.easeInOut, Curves.fastOutSlowIn), αλλά αυτές έχουν περιορισμένη διάρκεια. Εάν ένας χρήστης διακόψει μια κίνηση ολίσθησης, οι καμπύλες διάρκειας θραύονται. Αξιοποιώντας το SpringSimulation με το SpringDescription (μάζα, ακαμψία, απόσβεση), τα κινούμενα σχέδια Flutter γίνονται εντελώς φυσικά.

Απόσπασμα υλοποίησης παραγωγής

Διαδραστική Υλοποίηση Στοιχείων
// 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"))),
    );
  }
}

Σχετικοί Οδηγοί & Παραδείγματα

Σχεδιάστε διαδραστικό UI μία φορά. Παραδώστε το ίδιο αρχείο.

Δημιουργήστε καταστάσεις, φυσική ελατηρίων και λογική οπτικά στο ExodeUI και αναπαράγετε το ίδιο αρχείο σε React, SwiftUI, Flutter και άλλα. Ξεκινήστε δωρεάν.

Δοκιμάστε δωρεάν