在Material的設計準則里面,tabs是一個常用的模塊。Flutter里面包含了 material library 創(chuàng)建tab布局的簡便方法
海曙ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
為了使tab起作用,我們需要保持選中的tab和相關內(nèi)容同步。這就是 TabController 的職責。
我們可以手動創(chuàng)建 TabController ,也可以使用 DefaultTabController 小部件。使用 DefaultTabController 是最簡單的選項,因為它將為我們創(chuàng)建一個 TabController ,并使它可用于所有子類Widget。
現(xiàn)在我們已經(jīng)有個一個 TabController ,我們可以 TabBar Widget去使用創(chuàng)建我們的tab。在這個示例中,我們將會在一個 AppBar 下.創(chuàng)建一個包含3個 Tab Widgets 的 TabBar 。
默認情況下, TabBar 在Widget樹中查找最近的 DefaultTabController 。如果是手動創(chuàng)建的 TabController ,則需要將其傳遞到“TabBar”。
既然我們有了選項卡,那么我們就需要在選擇選項卡時顯示相關的內(nèi)容。因此,我們將使用 TabBarView Widget.
備注: 順序很重要,必須與 TabBar 中的選項卡的順序相對應!
1. Flutter初步探索(二)使用Tabs
1. Working with Tabs
本次主要是記錄Fultter Theme主題的設備與AppBar中的一些屬性的使用及說明。目前項目開發(fā)有了四個界面。前期主題沒太注意,今天看來要好好總結一下近期所學。
首先,Android主題沉浸式設置,F(xiàn)lutter篇:
根據(jù)字面意思就能看出來是對狀態(tài)懶得設置,其中用到了 dart:io 與 flutter/services.dart 這兩個重點Mark一下,有時間深入探究一下用法跟能力?;貧w正題。
主題數(shù)據(jù),其中最常用的是 primarySwatch 、 primaryColor 、 accentColor 。
primarySwatch:UI右下角的FloatingActionButton的顏色就是默認取值MaterialColor,
默認是藍色的,如果修改成primarySwatch,就會變成這個顏色值。只支持MaterialColor。
primaryColor:頂部導航欄和狀態(tài)欄的顏色修改,需要用到這個屬性,類型 Color。
accentColor:前景色(文本、按鈕、覆蓋邊緣效果等)。
看一下項目中的使用
其中 brightness 主題設置較為關鍵,它是設置狀態(tài)欄圖標與字體顏色的。
brightness: Brightness.dark 狀態(tài)欄圖標與字體顏色為白色。
brightness: Brightness.light 狀態(tài)欄圖標與字體顏色為黑色。
iconTheme :設置appbar icon的顏色,appbar中icon的顏色會根據(jù)primaryColor的改變來確定自身的顏色,這里可以在iconTheme中指定icon的顏色。
默認不做修改前:
class _OpenLogListComponentState extends StateOpenLogListComponent with AutomaticKeepAliveClientMixin{
@protected
bool get wantKeepAlive=true;
//其他邏輯
}
方法二: 使用IndexedStack存儲頁面
_body = IndexedStack(
children: Widget[
BookHousePage(),
FunctionPage(),
ChatPage(),
MinePage()
],
index: _currentPageIndex,
);
最近在開發(fā)中想實現(xiàn)一個AppBar下面有選項卡,來回切換的頁面功能,百度了很多沒有和自己需求符合的,網(wǎng)上大都是返回的Scaffold,使用系統(tǒng)的Appbar,添加至.bottom中,但是現(xiàn)在項目中用的是自定義的Appbar,不想破壞系統(tǒng)的統(tǒng)一封裝。
所以在body 中實現(xiàn)TabBar 和 TabBarView,開始使用Column一直不行,只能顯示一個,但是在body里面同時放置 TabBar 和 TabBarView需要注意
TabBarView 的父 Widget 必須知道寬高才能布局,否則,會報錯:BoxConstraints forces an infinite height.
使用 Column + Expanded 即可:
注:還有設置tabbar的tab背景顏色,tabbar中的tab的背景顏色取的實際是AppBar的主題色,所以我們將tabbar放在Material中來重置了主題色,變成我們想要的背景色.
buildTabBar為創(chuàng)建TabBar的方法:
buildBodyView創(chuàng)建視圖方法:
現(xiàn)象:在PageView TabView等可橫劃組件中,WebView的垂直手勢不靈敏。
解決方案:
指定WebView只處理垂直手勢。
參考鏈接: