Liquid Glass Easy

اللمس

زجاج يستجيب للإصبع — ولا يتزحزح.

مرّر touch: فتصير العدسة جسماً مرناً. اضغطها فتنتفخ تحت إصبعك، واسحبها فتستطيل باتجاه الشد وتنضغط في المحور المعامد وتميل خلف إبهامك، ثم ترتد بنابض فيه ارتجافة.

العدسة لا تتحرك أبداً. أثرها في التخطيط لا يتغيّر، فلا ينزاح ما حولها ولا يُعاد تخطيط أي أب — يتشوّه شكلها ومحتواها فقط.

Dart
LiquidGlassLens(
  touch: const LiquidGlassTouch(
    flex: LiquidGlassFlex(),
  ),
  style: const LiquidGlassStyle(
    shape: LiquidGlassShape.continuousRoundedRectangle(cornerRadius: 26),
  ),
  child: myContent,
)

LiquidGlassTouch مجموعة لا تأثير واحد: تحمل استجابة السطح كاملةً للإصبع، كما يحمل LiquidGlassStyle مظهره كاملاً. وهي اليوم تحمل flex. وأي إضافة لاحقة ستهبط كحقل في المجموعة، لا كمعامل جديد على كل مكوّن يقبل اللمس.

أربع حواف مستقلة#

تحويل التحجيم لا يستطيع النمو إلا بتناظر حول مرساة واحدة. أما هنا فتتحرك اليسار واليمين والأعلى والأسفل باستقلال، فيتشوّه النصف الأقرب إلى إصبعك أكثر من البعيد — وهذا اللاتناظر هو ما يُقرأ ليونةً.

الحجم محفوظ لا مكتسب: ما يكسبه محور الشد يردّه المحور المعامد، فالعدسة المستطيلة تنحف فعلاً.

LiquidGlassFlex#

المقبضالافتراضيما يفعله
stretch13ذروة الاستطالة باتجاه الشد بالبكسل، تُبلَغ حين يتشبّع السحب عند maxPull.
squeeze0.70مقدار ما يُستردّ من المحور المعامد مقابل مكسب محور الشد. 1 يحفظ المساحة تماماً، و0 يكبر فحسب.
lean0.50مقدار انزلاق الجسم كله خلف الإصبع، ككسر من stretch. وهي إشارة "إنه ملتصق بإبهامي".
grip0.70مدى محلية التشوّه. 0 تتقاسمه كل الحواف بالتساوي أينما لمست، و1 تأخذه الحواف القريبة كله.
compressInwardtrueدفع حافة إلى داخل الجسم يضغطه. وfalse يعيد السلوك الأقدم الذي كان فيه أي شدّ يكبّر الشكل.
holdScale0.030تغيّر حجم بإشارة أثناء وجود الإصبع، ككسر من العدسة. الموجب ينتفخ، والسالب ينكمش للداخل.
tapScale0.020نبضة واحدة تُطلَق عند اكتمال النقرة، فتبقى النقرة السريعة مقروءة كنقرة.
maxPull48مسافة السحب بالبكسل التي يتشبّع عندها التشوّه.
lockAxisnullيقيّد التشوّه بـ Axis.horizontal أو Axis.vertical.
advancedLiquidGlassFlexAdvanced()مقابض تُضبط مرة واحدة. انظر أدناه.

إعدادات جاهزة#

ثلاث نقاط انطلاق مضبوطة تُشحن إلى جانب الافتراضي. والطريقة الأمينة الوحيدة للاختيار أن تجرّبها متجاورة على السطح نفسه.

Dart
LiquidGlassFlex()             // the default
LiquidGlassFlex.subtle()      // barely there
LiquidGlassFlex.pronounced()  // loose and rubbery
LiquidGlassFlex.uniform()     // ignores where you grabbed it

LiquidGlassFlexAdvanced#

أشياء تضبطها مرة ثم تنساها. تعيش خلف advanced لتبقى بعيدة عن الطريق دون أن تكون بعيدة عن المتناول.

المقبضالافتراضيما يفعله
childFollow1مقدار ركوب الابن على التشوّه. 1 يحمله كاملاً، و0 يترك المحتوى جامداً داخل زجاج متحرك.
refractionBoost0.15انكسار إضافي أثناء الضغط — وهو ما يجعله يُقرأ زجاجاً منضغطاً لا مطاطاً.
magnificationBoost0تكبير إضافي أثناء الضغط.
stiffness320ثابت نابض الحواف.
damping24التخميد أثناء وجود الإصبع.
releaseDamping17التخميد بعد الرفع — أقل من damping، ومن هنا تأتي الارتجافة.

أصابع متعددة#

العدسة ملك للإصبع الذي أمسكها. ويُتجاهل أي مؤشر ثانٍ يهبط على العدسة نفسها حتى يرتفع الأول، فإبهامان على عدستين يقود كل منهما عدسته، وإبهامان على عدسة واحدة لا يتنازعان عليها.

ضع الإيماءة داخل العدسة لا حولها#

أما InkWell أو GestureDetector أو أي onTap — فمكانها في child الخاص بالعدسة، لا ملفوفةً حولها. فهي بالداخل تعمل كما تعمل دائماً: مستمع العدسة نفسه شفاف ولا يدخل ساحة التنازع أبداً، فلا يستطيع ابتلاع النقرات والسحبات تحته، فيتشوّه الزجاج بينما يظل زرك يعمل.

Dart
// ✗ wrapped around the lens — the ripple never shows
InkWell(
  onTap: doThing,
  child: LiquidGlassLens(touch: myTouch, child: myRow),
)

// ✓ inside it — the tap fires, the ink is visible, the glass still flexes
LiquidGlassLens(
  touch: myTouch,
  child: InkWell(onTap: doThing, child: myRow),
)

التعليقات

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