国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Flutter進階質感設計之標簽欄

2019-10-21 21:40:14
字體:
來源:轉載
供稿:網友

在質感設計的控件中,有一個顯示水平的一行選項卡,通常作為AppBar控件的一部分創建,并與TabBarView控件結合使用。

import 'package:flutter/material.dart';/* * 枚舉類,標簽演示樣式 * 圖標和文本 * 僅圖標 * 僅文本 */enum TabsDemoStyle { iconsAndText, iconsOnly, textOnly}/* * 頁面類 * 圖標 * 文本 */class _Page { _Page({ this.icon, this.text, }); final IconData icon; final String text;}// 存儲所有頁面的列表final List<_Page> _allPages = <_Page>[ new _Page(icon: Icons.event, text: 'EVENT'), new _Page(icon: Icons.home, text: 'HOME'), new _Page(icon: Icons.android, text: 'ANDROID'), new _Page(icon: Icons.alarm, text: 'ALARM'), new _Page(icon: Icons.face, text: 'FACE'), new _Page(icon: Icons.language, text: 'LANGUAGE'),];class ScrollableTabsDemo extends StatefulWidget { @override _ScrollableTabsDemoState createState() => new _ScrollableTabsDemoState();}// 繼承SingleTickerProviderStateMixin,提供單個Ticker(每個動畫幀調用它的回調一次)class _ScrollableTabsDemoState extends State<ScrollableTabsDemo> with SingleTickerProviderStateMixin { /* * 在TabBar和TabBarView之間的坐標選項卡選擇 * TabBar:質感設計控件,顯示水平的一行選項卡 * TabBarView:可分布列表,顯示與當前所選標簽對應的控件 */ TabController _controller; TabsDemoStyle _demoStyle = TabsDemoStyle.iconsAndText; @override void initState() { super.initState(); /* * 創建一個對象,用于管理TabBar和TabBarView所需的狀態 * length:選項卡的總數,存儲所有頁面的列表中的元素個數 */ _controller = new TabController(vsync: this, length: _allPages.length); } // 釋放對象使用的資源 @override void dispose() { super.dispose(); _controller.dispose(); } void changeDemoStyle(TabsDemoStyle style) { setState((){ _demoStyle = style; }); } @override Widget build(BuildContext context) { // 獲取當前主題的控件前景色 final Color iconColor = Theme.of(context).accentColor; return new Scaffold( appBar: new AppBar( title: new Text('可滾動的標簽頁'), actions: <Widget>[  new PopupMenuButton<TabsDemoStyle>(  onSelected: changeDemoStyle,  itemBuilder: (BuildContext context) => <PopupMenuItem<TabsDemoStyle>>[  new PopupMenuItem<TabsDemoStyle>(  value: TabsDemoStyle.iconsAndText,  child: new Text('圖標和文本')  ),  new PopupMenuItem<TabsDemoStyle>(  value: TabsDemoStyle.iconsOnly,  child: new Text('僅圖標')  ),  new PopupMenuItem<TabsDemoStyle>(  value: TabsDemoStyle.textOnly,  child: new Text('僅文本')  )  ]  ), ], bottom: new TabBar(  // 控件的選擇和動畫狀態  controller: _controller,  // 標簽欄是否可以水平滾動  isScrollable: true,  // 標簽控件的列表  tabs: _allPages.map((_Page page){  switch(_demoStyle) {  case TabsDemoStyle.iconsAndText:  return new Tab(text: page.text, icon: new Icon(page.icon));  case TabsDemoStyle.iconsOnly:  return new Tab(icon: new Icon(page.icon));  case TabsDemoStyle.textOnly:  return new Tab(text: page.text);  }  }).toList(), ), ), body: new TabBarView( // 控件的選擇和動畫狀態 controller: _controller, // 每個標簽一個控件 children: _allPages.map((_Page page) {  return new Container(  key: new ObjectKey(page.icon),  padding: const EdgeInsets.all(12.0),  // 質感設計卡片  child:new Card(  child: new Center(  child: new Icon(   page.icon,   color: iconColor,   size: 128.0,  )  )  )  ); }).toList(), ) ); }}void main() { runApp(new MaterialApp( title: 'Flutter教程', home: new ScrollableTabsDemo(), ));}

Flutter,質感設計,標簽欄

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 襄垣县| 雅安市| 孟津县| 湘潭县| 新化县| 孟村| 杨浦区| 资源县| 油尖旺区| 庐江县| 宁海县| 呼伦贝尔市| 周至县| 隆尧县| 西安市| 永登县| 望奎县| 新安县| 吉水县| 阳城县| 西丰县| 霍林郭勒市| 镇安县| 余庆县| 乐山市| 乐陵市| 哈尔滨市| 墨竹工卡县| 高雄县| 南川市| 拜泉县| 永德县| 铜山县| 封丘县| 祁东县| 永福县| 裕民县| 阳朔县| 如东县| 九龙坡区| 大兴区|