Liquid Glass Easy

الحركة

نموذج الزجاج المتحرك تحت المقبض والحبة، وحده.

يتشوّه LiquidGlassMotionPill من حركة مركزه، لا من موضعه. اقذفه عبر الشاشة فتستطيل الحبة باتجاه السفر وتنضغط عبره، ثم ترتد متجاوزة السكون وتستقر. وأمسكها ساكنة عند أي موضع فتعود بمقاسها المعلَن تماماً.

وهذا هو النموذج نفسه داخل مقبض المزلاج وحبة شريط التبويبات الزجاجية، وتأخذ الثلاثة قيمة الضبط نفسها — LiquidGlassLensMotionSpec.

شيئان يحدثان معاً#

التحوّل. أمسكها فتنمو الحبة بنابض من restSize إلى activeSize، ويتلاشى الغطاء الصلب cover بينما يصل الزجاج، ثم أفلتها فتنكمش بنابض أرقّ. فالزجاج تغيّر حالة، لا زينة كانت موجودة دائماً.

التشوّه. ما دامت مرفوعة، يُعايَن المركز في كل إطار ويحجّم التسارعُ المتوسط المحورين بشكل متعاكس. وهذا الجزء هو motion.

Dart
LiquidGlassMotionPill(
  center: Offset(edge + travel * fraction, box.height / 2),
  active: dragging,       // lifted: expanded, and tracking itself
  restSize: const Size(76, 44),
  activeSize: const Size(112, 62),
  motion: const LiquidGlassLensMotionSpec(),
  cover: myRestPill,      // fades out as the glass comes up
)
المعاملالافتراضيما يفعله
centerمركز الحبة بالإحداثيات المحلية. قُدْه بأي طريقة يتحرك بها المضيف — سحبٌ أو نابض انزلاق أو أي شيء.
activeمرفوعة أم لا. اقلبها عند الإمساك وأطفئها حين ينبغي أن تنكمش.
restSize / activeSizeالمقاسان اللذان تتحول بينهما.
covernullيُرسم فوق الزجاج في السكون ويتلاشى مع اتساع التحوّل — والمزلاج يمرّر حبته البيضاء الصلبة هنا. ويُقصّ على محيط الحبة، فمرّر تعبئة بسيطة.
stylenullمظهر الزجاج، وnull يُبقي الافتراضي المضبوط.
motionLiquidGlassLensMotionSpec()الضبط، أدناه.
shadownullظل التلامس. ويُترك فارغاً عادةً — فهو يسافر مع بقية المظهر في style.appearance.shadow.

LiquidGlassLensMotionSpec#

الضبط المشترك. يأخذه المزلاج كـ motion:، ويأخذه كذلك pillStyle.motion في شريط التبويبات.

الحقلالافتراضيما يفعله
sampleWindow0.3ثوانٍ من الحركة الأخيرة يُؤخذ متوسطها لقراءة القوة. الأكبر أهدأ، والأصغر أكثر ارتعاشاً.
sensitivity0.00007الكسب من التسارع إلى انحراف التحجيم — كم تشوّه قوةٌ معطاة الجسمَ.
maxDeformation0.3سقف ابتعاد التحجيمين عن 1. و0 يطفئ التشوّه ويترك التحوّل البسيط.
responseTime0.18ثوانٍ للانسياب نحو جواب التسارع بدل القفز إليه. و0 هي الاستجابة المقيَّدة بالإطار.

التعليقات

التعليقات هي مناقشات GitHub — يمكنك الرد من أيٍّ من المكانين.