栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何创建一个有界的可滚动TabBarView

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何创建一个有界的可滚动TabBarView

class SliverWithTabBar extends StatefulWidget {  @override  _SliverWithTabBarState createState() => _SliverWithTabBarState();}class _SliverWithTabBarState extends State<SliverWithTabBar> with SingleTickerProviderStateMixin {  TabController controller;  @override  void initState() {    super.initState();    controller = TabController(length: 3, vsync: this);  }  @override  Widget build(BuildContext context) {    return Scaffold(      body: NestedScrollView(        headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {          return [ SliverAppBar(   pinned: false,   backgroundColor: Colors.white,   flexibleSpace: FlexibleSpaceBar(     collapseMode: CollapseMode.pin,     background: Column(       crossAxisAlignment: CrossAxisAlignment.start,       children: <Widget>[         Container(height: 200.0,width: double.infinity,color: Colors.grey,child: FlutterLogo(),         ),         Padding(padding: const EdgeInsets.all(10.0),child: Text(  'Business Office',  style: TextStyle(fontSize: 25.0),  textAlign: TextAlign.left,),         ),         Padding(padding: const EdgeInsets.all(10.0),child: Text(  'Open nownStreet Address, 299nCity, State',  style: TextStyle(fontSize: 15.0),  textAlign: TextAlign.left,),         ),         Padding(padding: const EdgeInsets.only(right: 10.0),child: Row(  mainAxisAlignment: MainAxisAlignment.end,  children: <Widget>[    Icon(Icons.share),    Padding(      padding: const EdgeInsets.only(left: 10.0),      child: Icon(Icons.favorite),    ),  ],),         )       ],     ),   ),   expandedHeight: 380.0,   bottom: TabBar(     indicatorColor: Colors.black,     labelColor: Colors.black,     tabs: [       Tab(text: 'POSTS'),       Tab(text: 'DETAILS'),       Tab(text: 'FOLLOWERS'),     ],     controller: controller,   ), )          ];        },        body: ListView.builder(          itemCount: 100,          itemBuilder: (BuildContext context, int index) { return Card(   color: index % 2 == 0 ? Colors.blue : Colors.green,   child: Container(     alignment: Alignment.center,     width: double.infinity,     height: 100.0,     child: Text(       'Flutter is awesome',       style: TextStyle(fontSize: 18.0),     ),   ), );          },        ),      ),    );  }}

您应该寻找实现的

Sliver
小部件
NestedScrollView

这为您提供了 headerSliv​​erBuilder
属性,您可以在其中实际放置一些标题,这些标题可能在滚动正文小部件时隐藏或固定在屏幕顶部,在此特定示例中为a

ListView

您可能需要看一下RenderSliv​​er文档。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/413821.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号