欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flutter 首頁必用組件NestedScrollView的示例詳解

 更新時間:2020年05月08日 08:41:01   作者:老孟Flutter  
今天介紹的組件是NestedScrollView,大部分的App首頁都會用到這個組件。對Flutter 首頁必用組件NestedScrollView的相關(guān)知識感興趣的一起看看吧

昨天Flutter 1.17版本重磅發(fā)布,新的版本主要是優(yōu)化性能、修復(fù)bug,有人覺得此版本毫無亮點,但也從另一方面體現(xiàn)了Flutter目前針對移動端已經(jīng)較為完善,想了解具體內(nèi)容,文末有鏈接,如果你想升級到最新版本,建議慎重,有些人升級后項目無法運行。

今天介紹的組件是NestedScrollView,大部分的App首頁都會用到這個組件。

可以在其內(nèi)部嵌套其他滾動視圖的滾動視圖,其滾動位置是固有鏈接的。

在普通的ScrollView中, 如果有一個Sliver組件容納了一個TabBarView,它沿相反的方向滾動(例如,允許用戶在標(biāo)簽所代表的頁面之間水平滑動,而列表則垂直滾動),則該TabBarView內(nèi)部的任何列表都不會相互作用 與外部ScrollView。 例如,瀏覽內(nèi)部列表以滾動到頂部不會導(dǎo)致外部ScrollView中的SliverAppBar折疊以展開。

滾動隱藏AppBar

比如實現(xiàn)如下場景,當(dāng)列表滾動時,隱藏AppBar,用法如下:

NestedScrollView(
 headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
  return <Widget>[SliverAppBar(
   title: Text('腳本之家'),
  )];
 },
 body: ListView.builder(itemBuilder: (BuildContext context,int index){
  return Container(
   height: 80,
   color: Colors.primaries[index % Colors.primaries.length],
   alignment: Alignment.center,
   child: Text(
    '$index',
    style: TextStyle(color: Colors.white, fontSize: 20),
   ),
  );
 },itemCount: 20,),
)

效果如下:

SliverAppBar展開折疊

用法如下:

NestedScrollView(
 headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
  return <Widget>[SliverAppBar(
   expandedHeight: 230.0,
   pinned: true,
   flexibleSpace: FlexibleSpaceBar(
    title: Text('復(fù)仇者聯(lián)盟'),
    background: Image.network(
     'http://img.haote.com/upload/20180918/2018091815372344164.jpg',
     fit: BoxFit.fitHeight,
    ),
   ),
  )];
 },
 body: ListView.builder(itemBuilder: (BuildContext context,int index){
  return Container(
   height: 80,
   color: Colors.primaries[index % Colors.primaries.length],
   alignment: Alignment.center,
   child: Text(
    '$index',
    style: TextStyle(color: Colors.white, fontSize: 20),
   ),
  );
 },itemCount: 20,),
)

效果如下:

與TabBar配合使用

用法如下:

NestedScrollView(
 headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
  return <Widget>[
   SliverAppBar(
    expandedHeight: 230.0,
    pinned: true,
    flexibleSpace: Padding(
     padding: EdgeInsets.symmetric(vertical: 8),
     child: PageView(),
    ),
   ),
   SliverPersistentHeader(
    pinned: true,
    delegate: StickyTabBarDelegate(
     child: TabBar(
      labelColor: Colors.black,
      controller: this._tabController,
      tabs: <Widget>[
       Tab(text: '資訊'),
       Tab(text: '技術(shù)'),
      ],
     ),
    ),
   ),
  ];
 },
 body: TabBarView(
  controller: this._tabController,
  children: <Widget>[
   RefreshIndicator(
    onRefresh: (){
     print(('onRefresh'));
    },
    child: _buildTabNewsList(_newsKey, _newsList),
   ),

   _buildTabNewsList(_technologyKey, _technologyList),
  ],
 ),
)

StickyTabBarDelegate 代碼如下:

class StickyTabBarDelegate extends SliverPersistentHeaderDelegate {
 final TabBar child;

 StickyTabBarDelegate({@required this.child});

 @override
 Widget build(
   BuildContext context, double shrinkOffset, bool overlapsContent) {
  return Container(
   color: Theme.of(context).backgroundColor,
   child: this.child,
  );
 }

 @override
 double get maxExtent => this.child.preferredSize.height;

 @override
 double get minExtent => this.child.preferredSize.height;

 @override
 bool shouldRebuild(SliverPersistentHeaderDelegate oldDelegate) {
  return true;
 }
}

效果如下:

其他屬性

通過scrollDirectionreverse參數(shù)控制其滾動方向,用法如下:

NestedScrollView(
 scrollDirection: Axis.horizontal,
 reverse: true,
 ...
)

scrollDirection滾動方向,分為垂直和水平方向。

reverse參數(shù)表示反轉(zhuǎn)滾動方向,并不是由垂直轉(zhuǎn)為水平,而是垂直方向滾動時,默認(rèn)向下滾動,reverse設(shè)置false,滾動方向改為向上,同理水平滾動改為水平向左。

controller為滾動控制器,可以監(jiān)聽滾到的位置,設(shè)置滾動的位置等,用法如下:

_scrollController = ScrollController();

//監(jiān)聽滾動位置
  _scrollController.addListener((){
   print('${_scrollController.position}');
  });
  //滾動到指定位置
  _scrollController.animateTo(20.0);

CustomScrollView(
	controller: _scrollController,
	...
) 

physics表示可滾動組件的物理滾動特性,具體查看ScrollPhysics

交流

Flutter博客地址(近200個控件用法):http://laomengit.com

總結(jié)

到此這篇關(guān)于Flutter 首頁必用組件NestedScrollView的文章就介紹到這了,更多相關(guān)Flutter 首頁必用組件NestedScrollView內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android利用傳感器仿微信搖一搖功能

    Android利用傳感器仿微信搖一搖功能

    這篇文章主要為大家詳細(xì)介紹了Android利用傳感器仿微信搖一搖功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Android設(shè)置重復(fù)文字水印背景的方法

    Android設(shè)置重復(fù)文字水印背景的方法

    這篇文章主要為大家詳細(xì)介紹了Android設(shè)置重復(fù)文字水印背景的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Android編程獲取設(shè)備MAC地址的實現(xiàn)方法

    Android編程獲取設(shè)備MAC地址的實現(xiàn)方法

    這篇文章主要介紹了Android編程獲取設(shè)備MAC地址的實現(xiàn)方法,涉及Android針對硬件設(shè)備的操作技巧,需要的朋友可以參考下
    2017-01-01
  • 利用Android 防止系統(tǒng)字體變化、顯示大小變化影響

    利用Android 防止系統(tǒng)字體變化、顯示大小變化影響

    這篇文章主要介紹了利用Android 防止系統(tǒng)字體變化、顯示大小變化影響方法的相關(guān)資料,需要的朋友可以參考下面文章的具體內(nèi)容,希望對你有所幫助
    2021-10-10
  • Android開發(fā)Kotlin?DSL使用技巧掌握

    Android開發(fā)Kotlin?DSL使用技巧掌握

    這篇文章主要為大家介紹了Android開發(fā)Kotlin?DSL使用技巧的掌握,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Android 資源混淆的方案及注意事項

    Android 資源混淆的方案及注意事項

    資源混淆有助于減小包體積,也可以提高被反編譯后閱讀代碼的難度。還可以應(yīng)對一些安全檢測機構(gòu)對于資源混淆要求。本文基于微信的Android資源混淆工具,實現(xiàn)資源混淆
    2021-05-05
  • Android自定義View實現(xiàn)APP啟動頁倒計時效果

    Android自定義View實現(xiàn)APP啟動頁倒計時效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義View實現(xiàn)APP啟動頁倒計時效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Android實現(xiàn)Service獲取當(dāng)前位置(GPS+基站)的方法

    Android實現(xiàn)Service獲取當(dāng)前位置(GPS+基站)的方法

    這篇文章主要介紹了Android實現(xiàn)Service獲取當(dāng)前位置(GPS+基站)的方法,較為詳細(xì)的分析了Service基于GPS位置的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • Android 訪問文件權(quán)限的四種模式介紹

    Android 訪問文件權(quán)限的四種模式介紹

    這篇文章主要介紹了Android 訪問文件權(quán)限的四種模式介紹的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • android中RecyclerView自定義分割線實現(xiàn)

    android中RecyclerView自定義分割線實現(xiàn)

    本篇文章主要介紹了android中RecyclerView自定義分割線實現(xiàn),由于RecyclerView的布局方式多種多樣,所以它的分割線也根據(jù)布局的不同有所差異,本文只針對LinearLayoutManager線性布局。
    2017-03-03

最新評論