الأوراق
السطح الزجاجي الذي تسحبه لأعلى.
showLiquidGlassSheet هو showModalBottomSheet من Flutter نفسه، مع وضع الزجاج مكان Material الممتلئ الذي كان فيه. فالمسار والانزلاق لأعلى والسحب والحاجب والإغلاق كلها من Flutter بلا تغيير، وكل معاملاتها ممرَّرة — أما مظهر الورقة فمن هذه الحزمة، عبر LiquidGlassStyle نفسه الذي يأخذه كل مكوّن آخر.
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 | — | محتوى الورقة. |
style | null | الزجاج. وإن لم يُضبط لبست الورقة السطح الافتراضي المشترك. |
anchor | floating | floating بطاقة مزاحة للداخل، مدوّرة الزوايا الأربع. وattached بعرض كامل على الحافة السفلى، ولا تظهر إلا زاويتاها العلويتان. |
header | null | منفذ بعرض كامل فوق المحتوى المبطَّن — صف العنوان. ويجلب تبطينه الخاص. |
grabber / grabberColor | true / null | مقبض السحب الموسَّط في الأعلى. |
margin / padding | مشتق / 20,4,20,20 | الإزاحة حول الورقة العائمة، وحول المحتوى. |
foregroundColor | null | لون افتراضي للنص والأيقونات على الزجاج. |
avoidKeyboard | true | يرفع الورقة فوق لوحة المفاتيح — وهو التبطين الذي كنت ستكتبه في كل بنّاء. ويحتاج isScrollControlled: true ليجد مجالاً للعمل. |
touch | null | LiquidGlassTouch نفسه الذي تأخذه العدسة، إن كان على السطح أن يستجيب للضغط. |
batch | false | على Impeller فقط. true يضع الورقة على دفعة عناصر LiquidGlassScaffold الذي عُرضت منه — القراءة التي يأخذها شريط تبويباته — بدل قراءة خاصة بها. ومعطّلاً تقرأ الورقة الخلفية لنفسها. |
اللوح عنصر عادي#
المسار طريقة واحدة لعرض LiquidGlassSheet، لا الطريقة الوحيدة. فالعنصر يرسم السطح ولا شيء غيره — الزجاج والمقبض والترويسة والابن المبطَّن — وموضعه يخصّ ما يعرضه. ثبّت واحدة على أسفل صفحة بـ Align، أو من أجل ورقة تتغيّر بحجمها وأنت تسحبها ضَع DraggableScrollableSheet داخل showModalBottomSheet وضَع الورقة المجرّدة داخل بنّاء ذلك — إذ يجب أن يكون الزجاج داخل ما يتغيّر حجمه، والعارض يلفّ محتواك من خارجه.
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 — يمكنك الرد من أيٍّ من المكانين.