اللمس
زجاج يستجيب للإصبع — ولا يتزحزح.
مرّر touch: فتصير العدسة جسماً مرناً. اضغطها فتنتفخ تحت إصبعك، واسحبها فتستطيل باتجاه الشد وتنضغط في المحور المعامد وتميل خلف إبهامك، ثم ترتد بنابض فيه ارتجافة.
العدسة لا تتحرك أبداً. أثرها في التخطيط لا يتغيّر، فلا ينزاح ما حولها ولا يُعاد تخطيط أي أب — يتشوّه شكلها ومحتواها فقط.
LiquidGlassLens(
touch: const LiquidGlassTouch(
flex: LiquidGlassFlex(),
),
style: const LiquidGlassStyle(
shape: LiquidGlassShape.continuousRoundedRectangle(cornerRadius: 26),
),
child: myContent,
)LiquidGlassTouch مجموعة لا تأثير واحد: تحمل استجابة السطح كاملةً للإصبع، كما يحمل LiquidGlassStyle مظهره كاملاً. وهي اليوم تحمل flex. وأي إضافة لاحقة ستهبط كحقل في المجموعة، لا كمعامل جديد على كل مكوّن يقبل اللمس.
أربع حواف مستقلة#
تحويل التحجيم لا يستطيع النمو إلا بتناظر حول مرساة واحدة. أما هنا فتتحرك اليسار واليمين والأعلى والأسفل باستقلال، فيتشوّه النصف الأقرب إلى إصبعك أكثر من البعيد — وهذا اللاتناظر هو ما يُقرأ ليونةً.
الحجم محفوظ لا مكتسب: ما يكسبه محور الشد يردّه المحور المعامد، فالعدسة المستطيلة تنحف فعلاً.
LiquidGlassFlex#
| المقبض | الافتراضي | ما يفعله |
|---|---|---|
stretch | 13 | ذروة الاستطالة باتجاه الشد بالبكسل، تُبلَغ حين يتشبّع السحب عند maxPull. |
squeeze | 0.70 | مقدار ما يُستردّ من المحور المعامد مقابل مكسب محور الشد. 1 يحفظ المساحة تماماً، و0 يكبر فحسب. |
lean | 0.50 | مقدار انزلاق الجسم كله خلف الإصبع، ككسر من stretch. وهي إشارة "إنه ملتصق بإبهامي". |
grip | 0.70 | مدى محلية التشوّه. 0 تتقاسمه كل الحواف بالتساوي أينما لمست، و1 تأخذه الحواف القريبة كله. |
compressInward | true | دفع حافة إلى داخل الجسم يضغطه. وfalse يعيد السلوك الأقدم الذي كان فيه أي شدّ يكبّر الشكل. |
holdScale | 0.030 | تغيّر حجم بإشارة أثناء وجود الإصبع، ككسر من العدسة. الموجب ينتفخ، والسالب ينكمش للداخل. |
tapScale | 0.020 | نبضة واحدة تُطلَق عند اكتمال النقرة، فتبقى النقرة السريعة مقروءة كنقرة. |
maxPull | 48 | مسافة السحب بالبكسل التي يتشبّع عندها التشوّه. |
lockAxis | null | يقيّد التشوّه بـ Axis.horizontal أو Axis.vertical. |
advanced | LiquidGlassFlexAdvanced() | مقابض تُضبط مرة واحدة. انظر أدناه. |
إعدادات جاهزة#
ثلاث نقاط انطلاق مضبوطة تُشحن إلى جانب الافتراضي. والطريقة الأمينة الوحيدة للاختيار أن تجرّبها متجاورة على السطح نفسه.
LiquidGlassFlex() // the default
LiquidGlassFlex.subtle() // barely there
LiquidGlassFlex.pronounced() // loose and rubbery
LiquidGlassFlex.uniform() // ignores where you grabbed itLiquidGlassFlexAdvanced#
أشياء تضبطها مرة ثم تنساها. تعيش خلف advanced لتبقى بعيدة عن الطريق دون أن تكون بعيدة عن المتناول.
| المقبض | الافتراضي | ما يفعله |
|---|---|---|
childFollow | 1 | مقدار ركوب الابن على التشوّه. 1 يحمله كاملاً، و0 يترك المحتوى جامداً داخل زجاج متحرك. |
refractionBoost | 0.15 | انكسار إضافي أثناء الضغط — وهو ما يجعله يُقرأ زجاجاً منضغطاً لا مطاطاً. |
magnificationBoost | 0 | تكبير إضافي أثناء الضغط. |
stiffness | 320 | ثابت نابض الحواف. |
damping | 24 | التخميد أثناء وجود الإصبع. |
releaseDamping | 17 | التخميد بعد الرفع — أقل من damping، ومن هنا تأتي الارتجافة. |
أصابع متعددة#
العدسة ملك للإصبع الذي أمسكها. ويُتجاهل أي مؤشر ثانٍ يهبط على العدسة نفسها حتى يرتفع الأول، فإبهامان على عدستين يقود كل منهما عدسته، وإبهامان على عدسة واحدة لا يتنازعان عليها.
ضع الإيماءة داخل العدسة لا حولها#
أما InkWell أو GestureDetector أو أي onTap — فمكانها في child الخاص بالعدسة، لا ملفوفةً حولها. فهي بالداخل تعمل كما تعمل دائماً: مستمع العدسة نفسه شفاف ولا يدخل ساحة التنازع أبداً، فلا يستطيع ابتلاع النقرات والسحبات تحته، فيتشوّه الزجاج بينما يظل زرك يعمل.
// ✗ 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 — يمكنك الرد من أيٍّ من المكانين.