詳解Android?Flutter中SliverAppBar的使用教程
簡介
對于一個APP來說,肯定會有一個AppBar,這個AppBar一般包含了APP的導(dǎo)航信息等。雖然我們可以用一個固定的組件來做為AppBar,但是這樣就會丟失很多特效,比如將AppBar固定在頂部,AppBar可以在滑動的過程中進(jìn)行大小變換等。
當(dāng)然這一切都不需要自己來實(shí)現(xiàn),flutter已經(jīng)為我們提供了一個非常強(qiáng)大的AppBar組件,這個組件叫做SliverAppBar。
SliverAppBar詳解
我們先來看下SliverAppBar的定義:
class SliverAppBar extends StatefulWidget
可以看到SliverAppBar是一個StatefulWidget,它里面的狀態(tài)包含的是一些配置信息,包括FloatingHeaderSnapConfiguration,OverScrollHeaderStretchConfiguration和PersistentHeaderShowOnScreenConfiguration等。
SliverAppBar可以接收很多屬性,我們接下來會講解其中最重要和最常用的幾個屬性。
1.forceElevated
forceElevated是一個bool值,表示是否顯示AppBar的陰影效果,默認(rèn)值是false。
2.primary
primary使用來配置AppBar的屬性,表示AppBar是否顯示在界面的Top位置。如果設(shè)置為true,那么AppBar將會被放置在Top的位置,并且使用的高度是系統(tǒng)status bar的高度。
3.floating
floating是一個非常重要的屬性,因?yàn)閷τ赟liverAppBar來說,當(dāng)界面向遠(yuǎn)離SliverAppBar的方向滾動的時(shí)候,SliverAppBar會隱藏或者縮寫為status bar的高度,floating的意思就是當(dāng)我們向SliverAppBar滑動的時(shí)候,SliverAppBar是否浮動展示。
4.pinned
表示SliverAppBar在滾動的過程中是否會固定在界面的邊緣。
5.snap
snap是和floating一起使用的屬性,snap表示當(dāng)向SliverAppBar滾動的時(shí)候,SliverAppBar是否立即展示完全。
6.automaticallyImplyLeading
automaticallyImplyLeading是用在AppBar中的屬性,表示是否需要實(shí)現(xiàn)leading widget。
其中最常用的就是floating,pinned和snap這幾個屬性。
另外還有一個flexibleSpace組件,他是SliverAppBar在float的時(shí)候展示的widget,通常和expandedHeight配合使用。
SliverAppBar的使用
上面講解了SliverAppBar的構(gòu)造函數(shù)和基礎(chǔ)屬性,接下來我們通過具體的例子來講解SliverAppBar如何使用。
通常來說SliverAppBar是和CustomScrollView一起使用的,也就是說SliverAppBar會被封裝在CustomScrollView中。
CustomScrollView中除了SliverAppBar之外,還可以添加其他的sliver組件。
首先我們定義一個SliverAppBar:
SliverAppBar(
pinned: true,
snap: true,
floating: true,
expandedHeight: 200.0,
flexibleSpace: FlexibleSpaceBar(
title: const Text('SliverAppBar'),
background: Image.asset("images/head.jpg"),
),
),這里我們設(shè)置pinned,snap和floating的值都為true,然后設(shè)置了expandedHeight和flexibleSpace。
這里的flexibleSpaces是一個FlexibleSpaceBar對象,這里我們設(shè)置了title和background屬性。
接著我們需要把SliverAppBar放到CustomScrollView中進(jìn)行展示。
Widget build(BuildContext context) {
return CustomScrollView(
slivers: <Widget>[
SliverAppBar(
...
),
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return Container(
color: index.isOdd ? Colors.white : Colors.green,
height: 100.0,
child: Center(
child: ListTile(
title: Text(
'1888888888' + index.toString(),
style: TextStyle(fontWeight: FontWeight.w500),
),
leading: Icon(
Icons.contact_phone,
color: Colors.blue[500],
),
),
),
);
},
childCount: 10,
),
),
],
);在SliverAppBar之外,我們還提供了一個SliverList,這里使用了SliverChildBuilderDelegate來構(gòu)造10個ListTile對象。
最后運(yùn)行可以得到下面的界面:

默認(rèn)情況下SliverAppBar是展開狀態(tài),如果我們將下面的SliverList向上滑動,flexibleSpace就會被隱藏,我們可以得到下面的界面:

當(dāng)我們向上慢慢滑動的時(shí)候,因?yàn)樵O(shè)置的是floating=true, 并且snap=true,所以只要向上滑動,就會展示所有的flexibleSpace:

當(dāng)我們將floating設(shè)置為false的時(shí)候,只有向上滑動到頂端的時(shí)候,flexibleSpace才會全部展示出來。
總結(jié)
簡單點(diǎn)說,SliverAppBar就是一個在滑動中可變大小的AppBar,我們可以通過設(shè)置不同的參數(shù)來實(shí)現(xiàn)不同的效果。
到此這篇關(guān)于詳解Android Flutter中SliverAppBar的使用教程的文章就介紹到這了,更多相關(guān)Android Flutter SliverAppBar內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android實(shí)現(xiàn)WebView點(diǎn)擊攔截跳轉(zhuǎn)原生
這篇文章主要介紹了Android實(shí)現(xiàn)WebView點(diǎn)擊攔截跳轉(zhuǎn)原生,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Android實(shí)現(xiàn)截圖分享qq 微信功能
在日常生活中,經(jīng)常用到qq,微信截圖分享功能,今天小編通過本文給大家介紹Android實(shí)現(xiàn)截圖分享qq 微信功能,具體實(shí)現(xiàn)代碼大家參考下本文2017-12-12
Android 開發(fā)系統(tǒng)自帶語音模塊應(yīng)用
本篇文章 主要介紹 Android 開發(fā)自帶語音模塊實(shí)例,在開發(fā)Android系統(tǒng)中會用到系統(tǒng)語音搜索模塊,這里給大家一個參考實(shí)例2016-07-07
Android實(shí)現(xiàn)環(huán)形進(jìn)度條的實(shí)例
本文通過實(shí)例代碼給大家介紹了android實(shí)現(xiàn)環(huán)形進(jìn)度條的實(shí)例代碼,代碼簡單易懂,非常不錯,需要的朋友參考下2017-01-01
Android中使用Toast.cancel()方法優(yōu)化toast內(nèi)容顯示的解決方法
做程序員的,基本一看api就知道,用這個可以取消上一個toast的顯示,然后顯示下一個,這樣就能解決出現(xiàn)的問題??墒窃跍y試的過程中,發(fā)現(xiàn)卻沒有想象中的那么簡單,不信可以百度一下,很多很多人發(fā)現(xiàn)toast的cancel()方法不起作用2013-05-05
Jetpack Compose 雙指拖拽實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了Jetpack Compose 雙指拖拽實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Flutter基于Dart Unwrapping Multiple Optional小技巧
這篇文章主要為大家介紹了Flutter Unwrapping Multiple Optional打開多個選項(xiàng)小技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12

