العدسة وأسلوبها
عنصر واحد وكائن أسلوب واحد: الهيئة والمظهر والانكسار.
Dart
LiquidGlassLens({
LiquidGlassStyle style = const LiquidGlassStyle(),
bool visibility = true,
LiquidGlassTouch? touch,
bool? useImpellerBackdrop,
Widget? child,
})يأتي الحجم من التخطيط، لا من العدسة أبداً. ويُقصّ child على شكل الزجاج. وvisibility: false يطفئ الزجاج فوراً — بلا كلفة خلفية وبلا ابن — فهو الطريقة الرخيصة لإخفاء عدسة ستُظهرها ثانيةً.
LiquidGlassStyle#
كل ما يخصّ مظهر العدسة يعيش في كائن واحد، فينتقل المظهر كقيمة واحدة. وcopyWith(...) وmerge(other) موجودتان لأنماط السمة والتجاوز.
Dart
LiquidGlassStyle({
LiquidGlassShape? shape, // null → continuous rounded rect
LiquidGlassAppearance appearance = const LiquidGlassAppearance(),
LiquidGlassRefraction refraction = const LiquidGlassRefraction(),
LiquidGlassAdaptivity? adaptivity,
})الهيئة#
| المُنشئ | منحنى الزاوية |
|---|---|
LiquidGlassShape.roundedRectangle(...) | زوايا دائرية عادية. الأرخص في القص. |
LiquidGlassShape.squircle(...) | مربع دائري Lⁿ — انحناء متصل على طراز iOS. |
LiquidGlassShape.continuousRoundedRectangle(...) | زوايا متصلة على طراز كبسولة Apple. وهي الافتراضي، وتنطبق إلى كبسولة نظيفة عند أقصى نصف قطر. |
تتشارك الثلاث في cornerRadius وborderWidth وborderColor وlightColor وlightIntensity وlightDirection وborderType وclipQuality.
المظهر#
| الخاصية | الافتراضي | ما تفعله |
|---|---|---|
color | transparent | اللون الأساس. عادةً أبيض أو أسود منخفض الشفافية. |
blur | LiquidGlassBlur() | ضبابية تُطبَّق على ما يظهر عبر الزجاج. |
saturation | 1.0 | 1.0 كما هو، و0.0 رمادي، وفوق 1 أكثر حيوية. |
enableInnerRadiusTransparent | false | يجعل المنطقة الداخلية غير المشوّهة شفافة تماماً. |
الانكسار#
| الخاصية | الافتراضي | ما تفعله |
|---|---|---|
distortion | 0.1 | مقدار ثني شريط الحافة للمحتوى، من 0.0 إلى 1.0. |
distortionWidth | 30 | سماكة ذلك الشريط حول المحيط، بالبكسل. |
magnification | 1.0 | تكبير ما يُرى عبر الزجاج. و1.0 يعني بلا تكبير. |
chromaticAberration | 0.003 | فصل قنوات اللون عند الحافة. و0.0 يعطّله. |
refractionMode | shapeRefraction | shapeRefraction يتبع محيط الشكل، وradialRefraction يثني بنمط دائري. |
refractionType | null | يبدّل النموذج نفسه — مثل OpticalRefraction(refraction:, refractionWidth:, depth:) لعدسة قائمة على السماكة. |
الحواف#
الحافة جزء من الهيئة، وتُضبط عبر borderType. وهناك نموذجان، وهما فكرتان مختلفتان حقاً لا إعدادان جاهزان.
| النموذج | ما هو |
|---|---|
OpticalBorder | الافتراضي. ضوء حافة مستمد من دالة المسافة للشكل نفسه: لمعات ملوّنة بالخلفية، وانعكاسات ثنائية الجهة، وملمح ارتفاع. ولون الحافة يتكيّف مع ما خلف العدسة. |
ClassicBorder | مهجور. يمسح الضوء والظل محيطَ الشكل تبعاً للزاوية بين عمود السطح واتجاه الضوء. أسلوبي وتتحكم بألوانه مباشرة — حافة مرسومة لا مستمدة. استخدم OpticalBorder. |
Dart
// Optical: borderSaturation, ambientIntensity, borderSolidity
shape: LiquidGlassShape.squircle(
cornerRadius: 36,
borderType: OpticalBorder(
borderSaturation: 1.5,
ambientIntensity: 1.0,
borderSolidity: 0.0,
),
)
// borderWidth, lightIntensity, lightColor and lightDirection live on the
// shape itself, so they apply whichever border type is in use.
shape: LiquidGlassShape.squircle(
cornerRadius: 36,
borderWidth: 1.4,
lightIntensity: 1.0,
lightColor: Color(0xB2FFFFFF),
)كل المعاملات#
الجداول أعلاه هي التي تستحق التعلّم. أما القائمة الكاملة — كل حقل وكل قيمة افتراضية، مأخوذة من الشيفرة مباشرة — فمُولَّدة في صفحة واجهة العدسة.
التعليقات
التعليقات هي مناقشات GitHub — يمكنك الرد من أيٍّ من المكانين.