最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flutter進(jìn)階質(zhì)感設(shè)計(jì)之標(biāo)簽欄

 更新時(shí)間:2021年10月11日 16:49:39   作者:何小有  
這篇文章主要為大家詳細(xì)介紹了Flutter進(jìn)階質(zhì)感設(shè)計(jì)之標(biāo)簽欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在質(zhì)感設(shè)計(jì)的控件中,有一個(gè)顯示水平的一行選項(xiàng)卡,通常作為AppBar控件的一部分創(chuàng)建,并與TabBarView控件結(jié)合使用。

import 'package:flutter/material.dart';
/*
 * 枚舉類,標(biāo)簽演示樣式
 * 圖標(biāo)和文本
 * 僅圖標(biāo)
 * 僅文本
 */
enum TabsDemoStyle {
 iconsAndText,
 iconsOnly,
 textOnly
}
/*
 * 頁(yè)面類
 * 圖標(biāo)
 * 文本
 */
class _Page {
 _Page({
 this.icon,
 this.text,
 });
 final IconData icon;
 final String text;
}
// 存儲(chǔ)所有頁(yè)面的列表
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,提供單個(gè)Ticker(每個(gè)動(dòng)畫幀調(diào)用它的回調(diào)一次)
class _ScrollableTabsDemoState extends State<ScrollableTabsDemo> with SingleTickerProviderStateMixin {
 /*
 * 在TabBar和TabBarView之間的坐標(biāo)選項(xiàng)卡選擇
 * TabBar:質(zhì)感設(shè)計(jì)控件,顯示水平的一行選項(xiàng)卡
 * TabBarView:可分布列表,顯示與當(dāng)前所選標(biāo)簽對(duì)應(yīng)的控件
 */
 TabController _controller;
 TabsDemoStyle _demoStyle = TabsDemoStyle.iconsAndText;
 @override
 void initState() {
 super.initState();
 /*
 * 創(chuàng)建一個(gè)對(duì)象,用于管理TabBar和TabBarView所需的狀態(tài)
 * length:選項(xiàng)卡的總數(shù),存儲(chǔ)所有頁(yè)面的列表中的元素個(gè)數(shù)
 */
 _controller = new TabController(vsync: this, length: _allPages.length);
 }
 // 釋放對(duì)象使用的資源
 @override
 void dispose() {
 super.dispose();
 _controller.dispose();
 }
 void changeDemoStyle(TabsDemoStyle style) {
 setState((){
 _demoStyle = style;
 });
 }
 @override
 Widget build(BuildContext context) {
 // 獲取當(dāng)前主題的控件前景色
 final Color iconColor = Theme.of(context).accentColor;
 return new Scaffold(
 appBar: new AppBar(
 title: new Text('可滾動(dòng)的標(biāo)簽頁(yè)'),
 actions: <Widget>[
  new PopupMenuButton<TabsDemoStyle>(
  onSelected: changeDemoStyle,
  itemBuilder: (BuildContext context) => <PopupMenuItem<TabsDemoStyle>>[
  new PopupMenuItem<TabsDemoStyle>(
  value: TabsDemoStyle.iconsAndText,
  child: new Text('圖標(biāo)和文本')
  ),
  new PopupMenuItem<TabsDemoStyle>(
  value: TabsDemoStyle.iconsOnly,
  child: new Text('僅圖標(biāo)')
  ),
  new PopupMenuItem<TabsDemoStyle>(
  value: TabsDemoStyle.textOnly,
  child: new Text('僅文本')
  )
  ]
  ),
 ],
 bottom: new TabBar(
  // 控件的選擇和動(dòng)畫狀態(tài)
  controller: _controller,
  // 標(biāo)簽欄是否可以水平滾動(dòng)
  isScrollable: true,
  // 標(biāo)簽控件的列表
  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(
 // 控件的選擇和動(dòng)畫狀態(tài)
 controller: _controller,
 // 每個(gè)標(biāo)簽一個(gè)控件
 children: _allPages.map((_Page page) {
  return new Container(
  key: new ObjectKey(page.icon),
  padding: const EdgeInsets.all(12.0),
  // 質(zhì)感設(shè)計(jì)卡片
  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(),
 ));
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android實(shí)現(xiàn)文件解壓帶進(jìn)度條功能

    Android實(shí)現(xiàn)文件解壓帶進(jìn)度條功能

    本文通過(guò)實(shí)例代碼給大家介紹了android實(shí)現(xiàn)文件解壓帶進(jìn)度條效果,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-08-08
  • Android 進(jìn)程間通信AIDL使用詳解

    Android 進(jìn)程間通信AIDL使用詳解

    本篇文章主要介紹了Android 進(jìn)程間通信AIDL使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Android的webview支持HTML5的離線應(yīng)用功能詳細(xì)配置

    Android的webview支持HTML5的離線應(yīng)用功能詳細(xì)配置

    HTML5的離線應(yīng)用功能可以使得WebApp即使在網(wǎng)絡(luò)斷開的情況下仍能正常使用這是個(gè)非常有用的功能,但如何使Webivew支持HTML5離線應(yīng)用功能呢,需要的朋友可以參考下
    2012-12-12
  • Android Theme以及解決啟動(dòng)黑屏的方法詳解

    Android Theme以及解決啟動(dòng)黑屏的方法詳解

    這篇文章主要給大家介紹了關(guān)于Android Theme以及解決啟動(dòng)黑屏的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • Compose?for?Desktop?鼠標(biāo)事件示例demo

    Compose?for?Desktop?鼠標(biāo)事件示例demo

    這篇文章主要為大家介紹了Compose?for?Desktop?鼠標(biāo)事件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 詳談Android從文件讀取圖像顯示的效率問(wèn)題

    詳談Android從文件讀取圖像顯示的效率問(wèn)題

    下面小編就為大家?guī)?lái)一篇詳談Android從文件讀取圖像顯示的效率問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • 完美解決Jpush[獲取sdk版本失敗!]的問(wèn)題

    完美解決Jpush[獲取sdk版本失敗!]的問(wèn)題

    下面小編就為大家?guī)?lái)一篇完美解決Jpush[獲取sdk版本失敗!]的問(wèn)題的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Android使用addView動(dòng)態(tài)添加組件的方法

    Android使用addView動(dòng)態(tài)添加組件的方法

    這篇文章主要為大家詳細(xì)介紹了Android使用addView動(dòng)態(tài)添加組件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • listview改變字體大小實(shí)例講解

    listview改變字體大小實(shí)例講解

    點(diǎn)擊字體,字體變大在本教程中將使用listview實(shí)現(xiàn),不會(huì)不懂的朋友可以參考下哈,希望對(duì)你有所幫助
    2013-05-05
  • Android常用的圖片加載庫(kù)

    Android常用的圖片加載庫(kù)

    本文主要介紹了Android常用的圖片加載庫(kù)的相關(guān)資料。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-04-04

最新評(píng)論

华容县| 漳平市| 南皮县| 达州市| 河曲县| 思南县| 广水市| 石台县| 黑河市| 祥云县| 兴业县| 绥江县| 衡南县| 吴忠市| 黄浦区| 浑源县| 杨浦区| 龙川县| 大竹县| 奎屯市| 进贤县| 清流县| 龙州县| 文昌市| 奇台县| 大石桥市| 台中县| 依安县| 镇宁| 轮台县| 富源县| 会宁县| 朝阳市| 元江| 淮滨县| 长春市| 蓝山县| 兖州市| 临沭县| 中宁县| 芜湖市|