Flutter 高斯模糊Appbar 和 BottomNavigationBar

【2023-12-28】更新:

今天發(fā)現(xiàn)IOS組件 CupertinoNavigationBar 已經(jīng)實(shí)現(xiàn)該效果绽快,但是自定義能力不如該文章各拷,可以參考刁绒。


關(guān)鍵詞:Flutter、Appbar烤黍、BottomNavigationBar膛锭、高斯模糊、半透明蚊荣、模仿IOS

效果圖:
Screenshot_2023-09-15-22-48-35-622_com.example.ap.jpg

<img src="https://upload-images.jianshu.io/upload_images/29320756-ee0a26f472c1bf40.jpg" width="200" alt="效果圖"/>

XXX

<img src="https://upload-images.jianshu.io/upload_images/29320756-ee0a26f472c1bf40.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/240" alt="drawing" width="200"/>

android\app\src\main\res\values\styles.xml
<item name="android:windowTranslucentNavigation">true</item>

關(guān)鍵代碼:

1.封裝一個(gè)可以模糊背景的容器

Widget getFilterWidget({
    Widget? child,
    double sigmaX = 12,
    double sigmaY = 12,
    bool hasColor = true, //是否具備顏色
    EdgeInsets? padding,
  }) {
    return ClipRect(
      //背景模糊化
      child: BackdropFilter(
        filter: ImageFilter.blur(
          sigmaX: sigmaX,
          sigmaY: sigmaY,
        ),
        child: Container(
          color: hasColor ? const Color.fromARGB(100, 255, 255, 255) : null,
          padding: padding,
          child: child,
        ),
      ),
    );
  }

2.封裝一個(gè)可以獲取透明Appbar的函數(shù)

PreferredSizeWidget getAppBar({
    double appHeight = 80,
    Widget? title,
    Widget? leading,
    List<Widget>? actions,
    PreferredSize? bottom,
  }) {
    if (actions != null) {
      actions.add(const SizedBox(width: 8));
    }
    return PreferredSize(
      preferredSize: Size(0, appHeight),
      child: getFilterWidget(
        child: AppBar(
          title: title,
          toolbarHeight: appHeight,
          leading: leading,
          leadingWidth: 80,
          actions: actions,
          bottom: bottom,
          elevation: 0,
          surfaceTintColor: Colors.transparent,
          backgroundColor: Colors.transparent,
          systemOverlayStyle: const SystemUiOverlayStyle(
            statusBarColor: Colors.transparent,
            statusBarIconBrightness: Brightness.light,
          ),
          //bottom: getTitle(),
        ),
      ),
    );
  }

3.使用方法

Scaffold(
      appBar: getAppBar(
        title: const Text(
          "AppBar by Dream.Machine",
          style: TextStyle(color: Colors.white),
        ),
      ),

bottomNavigationBar: getFilterWidget(
        hasColor: false,
        child: BottomNavigationBar(
          elevation: 0,
          onTap: (index) {},
          backgroundColor: const Color.fromARGB(100, 255, 255, 255),
          currentIndex: 0,
          showSelectedLabels: false,
          showUnselectedLabels: false,
          items: [
            BottomNavigationBarItem(
              activeIcon: SvgPicture.asset(
                "images/frame/frame_chat_active.svg",
                colorFilter:
                    const ColorFilter.mode(Colors.white, BlendMode.srcIn),
              ),
              icon: SvgPicture.asset("images/frame/frame_chat.svg"),
              label: "CHAT",
            ),
            BottomNavigationBarItem(
              activeIcon:
                  SvgPicture.asset("images/frame/frame_contacts_active.svg"),
              icon: SvgPicture.asset(
                "images/frame/frame_contacts.svg",
                colorFilter:
                    const ColorFilter.mode(Colors.white, BlendMode.srcIn),
              ),
              label: "Contacts",
            ),
            BottomNavigationBarItem(
              activeIcon:
                  SvgPicture.asset("images/frame/frame_settings_active.svg"),
              icon: SvgPicture.asset(
                "images/frame/frame_settings.svg",
                colorFilter:
                    const ColorFilter.mode(Colors.white, BlendMode.srcIn),
              ),
              label: "SETTING",
            )
          ],
        ),
      ),
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末初狰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子互例,更是在濱河造成了極大的恐慌奢入,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異腥光,居然都是意外死亡关顷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門武福,熙熙樓的掌柜王于貴愁眉苦臉地迎上來议双,“玉大人,你說我怎么就攤上這事捉片∑教担” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵伍纫,是天一觀的道長(zhǎng)宗雇。 經(jīng)常有香客問我,道長(zhǎng)莹规,這世上最難降的妖魔是什么赔蒲? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮良漱,結(jié)果婚禮上舞虱,老公的妹妹穿的比我還像新娘。我一直安慰自己母市,他們只是感情好矾兜,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著窒篱,像睡著了一般焕刮。 火紅的嫁衣襯著肌膚如雪舶沿。 梳的紋絲不亂的頭發(fā)上墙杯,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音括荡,去河邊找鬼高镐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛畸冲,可吹牛的內(nèi)容都是我干的嫉髓。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼邑闲,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼算行!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起苫耸,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤州邢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后褪子,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體量淌,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡骗村,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呀枢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胚股。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖裙秋,靈堂內(nèi)的尸體忽然破棺而出琅拌,到底是詐尸還是另有隱情,我是刑警寧澤残吩,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布财忽,位于F島的核電站,受9級(jí)特大地震影響泣侮,放射性物質(zhì)發(fā)生泄漏即彪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一活尊、第九天 我趴在偏房一處隱蔽的房頂上張望隶校。 院中可真熱鬧,春花似錦蛹锰、人聲如沸深胳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舞终。三九已至,卻和暖如春癣猾,著一層夾襖步出監(jiān)牢的瞬間敛劝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工纷宇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留夸盟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓像捶,卻偏偏與公主長(zhǎng)得像上陕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拓春,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容