الانصهار
من عدستين إلى ثمانٍ، منصهرة في سطح سائل واحد.
لُفَّ العدسات بـ LiquidGlassBlender فتُرسَم بـمرور شيدر واحد: قراءة خلفية واحدة ومادة واحدة لكل عدسة تحته، بدل مرور وقراءة لكل عدسة. وهذه المشاركة هي أساس العنصر، وهي قائمة مهما قال smoothness. وفوق الصفر تندمج الظلال الخارجية أيضاً: فكلما اقترب جاران نما بينهما جسر كروي ناعم، وإن باعدتهما انقطع. ويحتفظ كل عضو بأسلوب زواياه عبر الاندماج — تبقى الدائرة دائرة والمربع الدائري مربعاً دائرياً — بينما يملك الخالط المادة: أسلوب واحد وحافة واحدة وقطعة زجاج واحدة.
LiquidGlassView(
backgroundWidget: myBackground,
child: LiquidGlassBlender(
smoothness: 56,
style: const LiquidGlassStyle(
shape: LiquidGlassShape.continuousRoundedRectangle(
cornerRadius: 36,
),
),
child: Stack(
children: const [
Positioned(
left: 40,
top: 80,
child: SizedBox(
width: 120,
height: 120,
child: LiquidGlassLens(),
),
),
Positioned(
left: 120,
top: 110,
child: SizedBox(
width: 100,
height: 100,
child: LiquidGlassLens(),
),
),
],
),
),
)| المعامل | الافتراضي | ما يفعله |
|---|---|---|
child | — | الشجرة الفرعية التي تحمل العدسات الأعضاء، على أي عمق كانت. |
style | LiquidGlassStyle() | مظهر السطح المندمج. المجموعة قطعة زجاج واحدة، فلها أسلوب واحد. |
smoothness | 48 | مدى تلهّف الجيران على الانصهار — وهو المقبض الرئيس. القليل يُبقي الأشكال متمايزة حتى تكاد تتلامس، والكثير ينمّي جسراً من مسافة أبعد. و0 لا جسر إطلاقاً: محيطات حادة على المرور الواحد المشترك، وهو LiquidGlassGroup السابق. |
useEngineBlur | true | يدع المحرك يضبّب السطح المندمج بدل الشيدر. |
يُعثر على الأعضاء بالمشي في الشجرة الفرعية، فلا حاجة لأن تكون العدسات أبناءً مباشرين. وأي شيء ليس LiquidGlassLens — كعناصر التحكم في العرض مثلاً — ليس عضواً ببساطة ولا ينضم إلى الاندماج أبداً.
الحافة هي الدليل#
يرسم style.shape.borderWidth للمجموعة محيطاً واحداً حول الظل المندمج، لا حول كل عضو. وهذا الخط الواحد غير المنقطع الجاري حول جسمين والجسر بينهما هو ما يجعل الانصهار مقروءاً. واضبطه على 0 فتُكبَت الحافة كلياً بدل أن تُرسم شعرةً. أطفئه في العرض ويبقى الاتحاد موجوداً في الانكسار — لكن قراءته تصير أصعب بكثير.
أين يمكن للانصهار أن يعمل#
هذه هي القاعدة نفسها التي تتبعها الحزمة كلها، والانصهار أشدّ حالاتها: السطح المندمج شيدر يعاين البكسلات خلف المجموعة، فلا يمكن أن يوجد إلا حيث يمكن الوصول إلى تلك البكسلات.
| أين يجلس الخالط | ماذا يحدث |
|---|---|
داخل LiquidGlassView — في أي مكان: iOS و Android والويب وسطح المكتب | يعمل، وتكتبه مرة واحدة. العارض يحسم المحرك عنك: على Impeller يقرأ الأعضاء الخلفية الحية ولا يُؤخذ أي التقاط إطلاقاً، وعلى Skia يكسرون backgroundWidget الملتقَط. الشجرة نفسها، بلا تفرّع. |
| بلا عارض، على Impeller | يعمل. الخلفية الحية متاحة هناك دائماً، فتنصهر المجموعة فوق كل ما رسمه تطبيقك خلفها. |
| بلا عارض، على Skia / الويب | لا يوجد ما يُعاين، فـالاندماج لا يمكن أن يحدث. يتراجع كل عضو إلى زجاجه المصنفر — ضبابية ولون وحافة — ويتوقفون عن الانصهار. ويقول تنبيه تنقيح واحد ذلك. |
يختلف الشيدر نفسه أيضاً باختلاف المحرك، وهذا مُدار عنك: يحمّل Impeller تدرّجاً بقراءة واحدة معتمداً على المشتقات، ويحمّل Skia نسخةً بخمس قراءات بلا dFdx لأنه لا يستطيع ترجمة الأولى. وتبديل الواجهة الخلفية يعيد تحميل البرنامج الصحيح.
التعليقات
التعليقات هي مناقشات GitHub — يمكنك الرد من أيٍّ من المكانين.