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 الأصلي بدون أي ديون للتسليم.

ملخص وتعريف مباشر

الوجبات الجاهزة الأساسية

لترجمة الرسوم المتحركة Figma إلى Flutter، يقوم المطورون عادةً بإنشاء وحدات تحكم الرسوم المتحركة باستخدام الرسوم المتحركة المنحنية. ومع ذلك، يتطلب الشعور الحقيقي بالهاتف المحمول في Flutter محاكاة SpringSimulation والإيماءات المستندة إلى الفيزياء. يقوم ExodeUI بترجمة طبقات المتجهات المرئية والتوترات النابضة مباشرة إلى أشجار عناصر واجهة المستخدم Flutter.

لماذا الرسوم المتحركة المنحنية في 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"))),
    );
  }
}

الأدلة والأمثلة ذات الصلة

صمّم واجهة تفاعلية مرة واحدة. وانشر الملف نفسه.

أنشئ الحالات وفيزياء النوابض والمنطق بصريًا في ExodeUI، وشغّل الملف نفسه في React وSwiftUI وFlutter وغيرها. ابدأ مجانًا.

حاول مجانا