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 → the consumer's default outline
  LiquidGlassLight? specular,     // null → the consumer's default highlight
  LiquidGlassLight? glow,         // null → the consumer's default (none on a lens)
  double refractionIndex = 1.1,
  double refractionWidth = 12,
  double magnification = 1.0,
  double dispersion = 0,
  double saturation = 1.0,
  double blur = 0,
  Color color = const Color(0x00000000),
  LiquidGlassShadow? shadow,
  LiquidGlassAdaptivity? adaptivity,
  bool liteGlass = false,
})

// Change one facet, keep the rest.
final frosted = style.copyWith(blur: 4, color: const Color(0x22FFFFFF));

الهيئة#

المُنشئمنحنى الزاوية
LiquidGlassShape.roundedRectangle(...)زوايا دائرية عادية. الأرخص في القص.
LiquidGlassShape.squircle(...)مربع دائري Lⁿ — انحناء متصل على طراز iOS.
LiquidGlassShape.continuousRoundedRectangle(...)زوايا متصلة على طراز كبسولة Apple. وهي الافتراضي، وتنطبق إلى كبسولة نظيفة عند أقصى نصف قطر.

الهيئة هي المحيط ولا شيء غيره: تأخذ الثلاث cornerRadius (الافتراضي 50) وclipQuality، وcopyWith(...) يغيّر أيّاً منهما. ولم تعد الحافة جزءاً من الهيئة — فهي ضوءا الأسلوب، أدناه.

التعبئة#

الخاصيةالافتراضيما تفعله
colortransparentاللون الأساس. عادةً أبيض أو أسود منخفض الشفافية. ومنه تأخذ الحافة لونها أيضاً.
blur0ضبابية ما يظهر عبر الزجاج، كقيمة sigma غاوسية واحدة بالبكسل المنطقي. و0 يعني بلا ضبابية.
saturation1.01.0 كما هو، و0.0 رمادي، وفوق 1 أكثر حيوية.
shadownullظل تلامس LiquidGlassShadow حول الزجاج. انظر الظل.

الانكسار#

نموذج واحد ورقمان: تثني الحافة ما خلفها بمقدار refractionIndex على شريط عرضه refractionWidth.

الخاصيةالافتراضيما تفعله
refractionIndex1.1مقدار ثني الحافة لما خلفها. و1.0 يعني بلا ثني؛ والثني يشتدّ بسرعة، فـ1.02 حافة عدسة واضحة أصلاً و1.5 قوية جداً.
refractionWidth12عرض شريط الثني بالبكسل المنطقي: إلى أي مدى يمتد الثني إلى الداخل من المحيط.
magnification1.0تكبير ما يُرى عبر الزجاج. و1.0 يعني بلا تكبير.
dispersion0هالة لونية في شريط الثني. مطفأة افتراضياً، وعند 0 يكلّف الشريط قراءة خلفية واحدة لكل بكسل. والقيمة هي أوسع انفصال بالبكسل المنطقي: 1.3 هالة رفيعة و6.6 قوية.

الحافة: ضوءان#

الحافة ضوءان من نوع LiquidGlassLight على الأسلوب. البريق (specular) هو اللمعة: شريط حادّ يأخذ لون الخلفية المرئية عبر الحافة، مُفتَّحاً. والتوهّج (glow) هو الشريط الجانبي الأنعم والأعرض الذي يملأ الجانبين اللذين يتركهما البريق معتمين. ويرسم كل ضوء قوسين متقابلين على محوره الخاص.

المعاملالبريقالتوهّجما يفعله
thickness510عمق الشريط إلى الداخل من المحيط بالبكسل المنطقي، كما يُعطى. و0 لا يرسم شيئاً.
sharpness0.5—مدى صلابة الشريط عبر عمقه: الأعلى يبقيه ممتلئاً لمسافة أطول، والأدنى يشدّه نحو المحيط.
angle3990محور القوسين بالدرجات: 0 يمين ويسار، و90 أعلى وأسفل. وهي مطلقة — فتدوير ضوء لا يدير الآخر أبداً.
spread0.90.5مدى التفاف القوسين حول المحيط، من 0 إلى 1.
intensity11الشدّة. و0 يطفئ الضوء.
oppositeIntensity11القوس البعيد كمضاعف للقريب: 0 قوس واحد فقط، وفوق 1 يتفوّق القوس البعيد على القريب.
colornullnullnull يأخذ اللون الملتقَط. وإن ضُبط رُسم الضوء بذلك اللون كما هو، وشفافيته هي مقدار ما يحلّ منه محلّ اللون الملتقَط.
Dart
LiquidGlassLens(
  style: const LiquidGlassStyle(
    shape: LiquidGlassShape.squircle(cornerRadius: 36),
    specular: LiquidGlassLight.specular(thickness: 5, angle: 39),
    glow: LiquidGlassLight.glow(angle: 129, intensity: 0.8),
    refractionIndex: 1.02,
    refractionWidth: 24,
    color: Color(0x22FFFFFF),
    blur: 3,
  ),
  child: child,
)

القادم من 4.x#

سطّح الإصدار 5.0.0 الأسلوب واستبدل أنواع الحواف بالضوءين. وهذه أشيع النقلات:

4.x5.0.0
appearance: LiquidGlassAppearance(color: c, saturation: s, shadow: h)color: c, saturation: s, shadow: h على الأسلوب
LiquidGlassBlur(sigmaX: b, sigmaY: b)blur: b على الأسلوب
style.copyWith(appearance: style.appearance.copyWith(color: c))style.copyWith(color: c)
refraction: LiquidGlassRefraction(magnification: m, chromaticAberration: c)magnification: m, dispersion: c على الأسلوب
distortion / distortionWidth, OpticalRefraction(...)refractionIndex / refractionWidth. النموذجان يثنيان بشكل مختلف، فأعد اختيار المؤشر بالعين.
LiquidGlassShape(borderWidth: w)specular: LiquidGlassLight.specular(thickness: w * 5.4) وglow: LiquidGlassLight.glow(thickness: w * 29.4)
lightIntensity / lightDirectionintensity / angle في البريق (وglow.angle = angle + 90 لإبقاء التوهّج مكانه)
OpticalBorder(lightSpread, borderSolidity, ambientIntensity)spread البريق، وsharpness البريق، وintensity التوهّج
ClassicBorder, lightMode, borderColor, refractionMode, diagonalFlip, enableInnerRadiusTransparentأُزيلت

كل المعاملات#

الجداول أعلاه هي التي تستحق التعلّم. أما القائمة الكاملة — كل حقل وكل قيمة افتراضية، مأخوذة من الشيفرة مباشرة — فمُولَّدة في صفحة واجهة العدسة.

التعليقات

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