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

詳解Flutter TabLayout 布局用法

 更新時間:2019年07月22日 09:52:51   投稿:mrr  
Flutter是谷歌的移動UI框架,可以快速在iOS和Android上構(gòu)建高質(zhì)量的原生用戶界面。這篇文章主要介紹了Flutter TabLayout 布局用法,需要的朋友可以參考下

Flutter是谷歌的移動UI框架,可以快速在iOS和Android上構(gòu)建高質(zhì)量的原生用戶界面。 Flutter可以與現(xiàn)有的代碼一起工作。在全世界,F(xiàn)lutter正在被越來越多的開發(fā)者和組織使用,并且Flutter是完全免費、開源的。

本文重點給大家介紹Flutter TabLayout 布局用法,具體內(nèi)容如下所示:

先上圖

頂部TabBar

使用 flutter create xxxx 創(chuàng)建一個項目

打開項目文件夾,在 lib 目錄里創(chuàng)建三個 dart 文件,內(nèi)容分別如下

First.dart

import "package:flutter/material.dart";
class First extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
 return Material(
  color: Colors.green,
 );
 }
}

Second.dart

import "package:flutter/material.dart";

class Second extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
 return Material(
  color: Colors.red,
 );
 }
}

Third.dart

import "package:flutter/material.dart";
class Third extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
 return Material(
  color: Colors.yellow,
 );
 }
}

修改 main.dart 文件內(nèi)容,TabLayout布局是個有狀態(tài)的組件,所以創(chuàng)建組件時要繼承 StatefulWidget 類

動圖中的 TabBar 是在 Scaffold 中的 appBar 中定義的,也就是說 tabbar 是 appBar的一部分

appBar: AppBar(
 title: Text(widget.title),
 bottom: TabBar(
 controller: tabController,
 tabs: <Tab>[
  new Tab(text: "問答"),
  new Tab(text: "分享"),
  new Tab(text: "博客"),
 ],
 ),
),

每個 tabbar 對應(yīng)的視圖是在 body 里定義的,按照順序初始化好即可

// 引入 dart 文件
import 'First.dart' as first;
import 'Second.dart' as second;
import 'Third.dart' as third;
body: TabBarView(controller: tabController, children: <Widget>[
 new first.First(),
 new second.Second(),
 new third.Third(),
]),

完整代碼:

import 'package:flutter/material.dart';

import 'First.dart' as first;
import 'Second.dart' as second;
import 'Third.dart' as third;

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
 // This widget is the root of your application.
 @override
 Widget build(BuildContext context) {
 return MaterialApp(
  title: 'Flutter Demo',
  theme: ThemeData(
  primarySwatch: Colors.blue,
  ),
  home: MyHomePage(title: 'TabLayout Demo'),
 );
 }
}

class MyHomePage extends StatefulWidget {
 MyHomePage({Key key, this.title}) : super(key: key);

 final String title;

 @override
 _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage>
 with SingleTickerProviderStateMixin {
 TabController tabController;

 @override
 void initState() {
 super.initState();

 tabController = new TabController(length: 3, vsync: this);
 }

 @override
 void dispose() {
 super.dispose();
 tabController.dispose();
 }

 @override
 Widget build(BuildContext context) {
 return Scaffold(
  appBar: AppBar(
  title: Text(widget.title),
  bottom: TabBar(
   controller: tabController,
   tabs: <Tab>[
   new Tab(text: "問答"),
   new Tab(text: "分享"),
   new Tab(text: "博客"),
   ],
  ),
  ),
  body: TabBarView(controller: tabController, children: <Widget>[
  new first.First(),
  new second.Second(),
  new third.Third(),
  ]),
 );
 }
}

底部TabBar

上面定義的是頂部的tabbar,很多app的布局都是底部有見個tabbar,其實底部的定義方法就是將 appBar 屬性中的 bottom 給注釋掉,然后在跟 appBar 同級的位置定義一個 bottomNavigationBar 屬性,其 child 就是 TabBar 組件,tabbar的視圖跟上面定義方法是一樣的,代碼如下

Widget build(BuildContext context) {
 return Scaffold(
 appBar: AppBar(
  title: Text(widget.title),
//  bottom: TabBar(
//   controller: tabController,
//   tabs: <Tab>[
//   new Tab(text: "問答"),
//   new Tab(text: "分享"),
//   new Tab(text: "博客"),
//   ],
//  ),
 ),
 bottomNavigationBar: new Material(
  color: Colors.blue,
  child: TabBar(
  controller: tabController,
  indicatorColor: Colors.white,
  tabs: <Tab>[
   new Tab(text: "問答"),
   new Tab(text: "分享"),
   new Tab(text: "博客"),
  ],
  ),
 ),
 body: TabBarView(controller: tabController, children: <Widget>[
  new first.First(),
  new second.Second(),
  new third.Third(),
 ]),
 );
}

這樣的布局長下面這個樣

參考

https://www.youtube.com/watch?v=3N27mjoBK2k

總結(jié)

以上所述是小編給大家介紹的ter TabLayout 布局用法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • Netty源碼分析NioEventLoop線程的啟動

    Netty源碼分析NioEventLoop線程的啟動

    這篇文章主要為大家介紹了Netty源碼分析NioEventLoop線程的啟動示例,有需要的朋友,可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • 字節(jié)碼調(diào)教入口JVM?寄生插件javaagent

    字節(jié)碼調(diào)教入口JVM?寄生插件javaagent

    這篇文章主要介紹了字節(jié)碼調(diào)教入口JVM?寄生插件javaagent方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Spring責(zé)任鏈模式使用實例講解

    Spring責(zé)任鏈模式使用實例講解

    責(zé)任鏈?zhǔn)切袨樾驮O(shè)計模式的一種,通過前一個處理者記錄下一個處理者的方式形成一條處理鏈??蛻舳嗽谡{(diào)用時只需要將請求傳遞到責(zé)任上即可,無需關(guān)注鏈路中的具體的傳遞過程。而鏈路中內(nèi)部的處理,是按照前一個處理者記錄的下一個處理者依次執(zhí)行
    2023-01-01
  • 一文帶你深入了解Guava的緩存機制

    一文帶你深入了解Guava的緩存機制

    緩存在現(xiàn)代編程中的作用非常大,它能提高應(yīng)用性能,減少數(shù)據(jù)庫壓力,簡直就是性能優(yōu)化的利器,本文主要來和大家聊聊Google?Guava的緩存機制,感興趣的小伙伴可以了解下
    2023-12-12
  • SpringBoot部署到外部Tomcat無法注冊到Nacos服務(wù)端的解決思路

    SpringBoot部署到外部Tomcat無法注冊到Nacos服務(wù)端的解決思路

    這篇文章主要介紹了SpringBoot部署到外部Tomcat無法注冊到Nacos服務(wù)端,本文給大家分享完美解決思路,結(jié)合實例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • MyBatis insert語句返回主鍵和selectKey標(biāo)簽方式

    MyBatis insert語句返回主鍵和selectKey標(biāo)簽方式

    這篇文章主要介紹了MyBatis insert語句返回主鍵和selectKey標(biāo)簽方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringBoot關(guān)于自動注入mapper為空的坑及解決

    SpringBoot關(guān)于自動注入mapper為空的坑及解決

    這篇文章主要介紹了SpringBoot關(guān)于自動注入mapper為空的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java面試重點中的重點之Elasticsearch核心原理

    Java面試重點中的重點之Elasticsearch核心原理

    ElasticSearch是一個基于Lucene的搜索引擎,是用Java語言開發(fā)的,能夠達(dá)到實時搜索,穩(wěn)定,可靠,快速,安裝使用方便,作為Apache許可條款下的開放源碼發(fā)布,是一種流行的企業(yè)級搜索引擎,是最受歡迎的企業(yè)搜索引擎
    2022-01-01
  • Java 大小寫最快轉(zhuǎn)換方式實例代碼

    Java 大小寫最快轉(zhuǎn)換方式實例代碼

    這篇文章主要介紹了Java 大小寫最快轉(zhuǎn)換方式實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • springcloud集成zookeeper的方法示例

    springcloud集成zookeeper的方法示例

    這篇文章主要介紹了springcloud集成zookeeper的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04

最新評論

健康| 安吉县| 宣城市| 固阳县| 闸北区| 浦北县| 云南省| 洛川县| 景泰县| 耿马| 福海县| 石嘴山市| 什邡市| 新竹县| 河曲县| 安塞县| 怀集县| 岑溪市| 利川市| 池州市| 饶阳县| 佛教| 西吉县| 安多县| 古丈县| 双牌县| 樟树市| 龙口市| 锦州市| 沙坪坝区| 徐闻县| 土默特左旗| 孟连| 衢州市| 贵州省| 朝阳县| 远安县| 临漳县| 济源市| 汽车| 泰宁县|