Liquid Glass Easy

الأوراق

السطح الزجاجي الذي تسحبه لأعلى.

showLiquidGlassSheet هو showModalBottomSheet من Flutter نفسه، مع وضع الزجاج مكان Material الممتلئ الذي كان فيه. فالمسار والانزلاق لأعلى والسحب والحاجب والإغلاق كلها من Flutter بلا تغيير، وكل معاملاتها ممرَّرة — أما مظهر الورقة فمن هذه الحزمة، عبر LiquidGlassStyle نفسه الذي يأخذه كل مكوّن آخر.

Dart
final choice = await showLiquidGlassSheet<String>(
  context: context,
  header: const Padding(
    padding: EdgeInsets.fromLTRB(20, 2, 20, 12),
    child: Text('Share',
        style: TextStyle(fontSize: 22, fontWeight: FontWeight.w700)),
  ),
  builder: (context) => Column(
    mainAxisSize: MainAxisSize.min,
    children: [
      for (final action in actions) _tile(action),
    ],
  ),
);

لا تذكر ارتفاعاً فتحتضن الورقة ما فيها — وهي هيئة ورقة الإجراءات. وهذه هي المعاملات الخاصة بالزجاج، وكل ما عداها (isScrollControlled وconstraints وtransitionAnimationController …) يخصّ showModalBottomSheet ويُمرَّر كما هو:

المعاملالافتراضيما يفعله
builderمحتوى الورقة.
stylenullالزجاج. وإن لم يُضبط لبست الورقة السطح الافتراضي المشترك.
anchorfloatingfloating بطاقة مزاحة للداخل، مدوّرة الزوايا الأربع. وattached بعرض كامل على الحافة السفلى، ولا تظهر إلا زاويتاها العلويتان.
headernullمنفذ بعرض كامل فوق المحتوى المبطَّن — صف العنوان. ويجلب تبطينه الخاص.
grabber / grabberColortrue / nullمقبض السحب الموسَّط في الأعلى.
margin / paddingمشتق / 20,4,20,20الإزاحة حول الورقة العائمة، وحول المحتوى.
foregroundColornullلون افتراضي للنص والأيقونات على الزجاج.
avoidKeyboardtrueيرفع الورقة فوق لوحة المفاتيح — وهو التبطين الذي كنت ستكتبه في كل بنّاء. ويحتاج isScrollControlled: true ليجد مجالاً للعمل.
touchnullLiquidGlassTouch نفسه الذي تأخذه العدسة، إن كان على السطح أن يستجيب للضغط.
batchfalseعلى Impeller فقط. true يضع الورقة على دفعة عناصر LiquidGlassScaffold الذي عُرضت منه — القراءة التي يأخذها شريط تبويباته — بدل قراءة خاصة بها. ومعطّلاً تقرأ الورقة الخلفية لنفسها.

اللوح عنصر عادي#

المسار طريقة واحدة لعرض LiquidGlassSheet، لا الطريقة الوحيدة. فالعنصر يرسم السطح ولا شيء غيره — الزجاج والمقبض والترويسة والابن المبطَّن — وموضعه يخصّ ما يعرضه. ثبّت واحدة على أسفل صفحة بـ Align، أو من أجل ورقة تتغيّر بحجمها وأنت تسحبها ضَع DraggableScrollableSheet داخل showModalBottomSheet وضَع الورقة المجرّدة داخل بنّاء ذلك — إذ يجب أن يكون الزجاج داخل ما يتغيّر حجمه، والعارض يلفّ محتواك من خارجه.

Dart
showModalBottomSheet(
  context: context,
  backgroundColor: Colors.transparent,
  isScrollControlled: true,
  builder: (context) => DraggableScrollableSheet(
    expand: false,
    initialChildSize: 0.5,
    snap: true,
    snapSizes: const [0.5, 0.94],
    builder: (context, scrollController) => LiquidGlassSheet(
      header: const _SheetTitle('Nearby'),
      child: ListView(
        controller: scrollController,
        children: [...],
      ),
    ),
  ),
);

التعليقات

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