ویجت SliverAppBar
ویجت SliverAppBar جایگزین خصوصیت AppBar ویجت Scaffold می باشد و زمانی که شما از ویجت NestedScrollView جهت پیاده سازی پیمایش تودرتو استفاده کرده است ، کاربرد دارد . در واقع توسط این ویجت است که ویجت NestedScrollView می تواند نسبت به مخفی سازی AppBar در پیمایش های عمودی اقدام نماید .
قطعه کد زیر نمونه ای از پیاده سازی این ویجت را نمایش می دهد :
Scaffold(
body: NestedScrollView(
headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
return <Widget>[
new SliverAppBar(
// حذف فاصله اضافی بالا
primary: false,
// ثابت (قلاب) کردن اپ بار
pinned: true,
// مخفی (شناور) کردن اپ بار و ثابت (قلاب) کردن تب بار
floating: true,
title: Text('واتساپ'),
// سایه ی زیر اپ بار
elevation: 5,
bottom: TabBar(
controller: tabController,
indicatorColor: Colors.white, // رنگ حالت انتخاب زیر هر تب
tabs: <Widget>[
Tab(
icon: Icon(Icons.camera_alt),
),
Tab(
text: 'چت ها',
),
Tab(
text: 'وضعیت',
),
Tab(
text: 'تماس ها',
),
],
),
actions: <Widget>[
IconButton(
icon: Icon(Icons.search),
onPressed: () {
print('searchIcon');
},
),
IconButton(
icon: Icon(Icons.more_vert),
onPressed: () {
print('moreIcon');
},
)
],
)
];
},
body: TabBarView(
controller: tabController,
children: <Widget>[
CameraScreen(),
ChatScreen(),
StatusScreen(),
CallScreen()
],
)),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.chat),
onPressed: () {
print('Floating Click');
},
),
);
همانطور که در کد فوق نیز قابل مشاهده است ، در خط ۳ با استفاده از خصوصیت headerSliverBuilder ویجت NestedScrollView نسبت به تعریف یک ویجت SliverAppBar اقدام کرده ایم . خصوصیت pinned در خط ۶ باعث ثابت شده کل AppBar در پیمایش های عمودی می گردد و خصوصیت floating باعث ثابت شدن قسمت TabBar و مخفی شدن قسمت AppBar می گردد .
نتیجه کد فوق در تصویر زیر دیده می شود :

جهت کسب اطلاعات بیشتر از این آدرس به سایت اصلی فلاتر مراجعه نمایید .
امیدوارم این مطلب برای شما مفید باشد .