Liquid Glass Easy

العدسة وأسلوبها

عنصر واحد وكائن أسلوب واحد: الهيئة والمظهر والانكسار.

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.

المظهر#

الخاصيةالافتراضيما تفعله
colortransparentاللون الأساس. عادةً أبيض أو أسود منخفض الشفافية.
blurLiquidGlassBlur()ضبابية تُطبَّق على ما يظهر عبر الزجاج.
saturation1.01.0 كما هو، و0.0 رمادي، وفوق 1 أكثر حيوية.
enableInnerRadiusTransparentfalseيجعل المنطقة الداخلية غير المشوّهة شفافة تماماً.

الانكسار#

الخاصيةالافتراضيما تفعله
distortion0.1مقدار ثني شريط الحافة للمحتوى، من 0.0 إلى 1.0.
distortionWidth30سماكة ذلك الشريط حول المحيط، بالبكسل.
magnification1.0تكبير ما يُرى عبر الزجاج. و1.0 يعني بلا تكبير.
chromaticAberration0.003فصل قنوات اللون عند الحافة. و0.0 يعطّله.
refractionModeshapeRefractionshapeRefraction يتبع محيط الشكل، وradialRefraction يثني بنمط دائري.
refractionTypenullيبدّل النموذج نفسه — مثل 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 — يمكنك الرد من أيٍّ من المكانين.