这就是我正在尝试做的事情,它是iOS上非常常见的Widget。这是我的代码:
return Scaffold( backgroundColor: Colors.white, body: CustomScrollView( slivers: <Widget>[ SliverAppBar( automaticallyImplyLeading: false, pinned: true, titleSpacing: 0, backgroundColor: Colors.white, elevation: 1.0, title: Container( width: double.infinity, child: Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.spaceAround, mainAxisSize: MainAxisSize.max, children: <Widget>[ CupertinoButton( padding: EdgeInsets.all(0), onPressed: () {}, child: AutoSizeText( 'Ordenar', style: TextStyle( color: Color(0xff16161F), fontFamily: 'Brutal', fontSize: 17.0, ), ), ), AutoSizeText( 'Equipos 14', style: TextStyle( color: Color(0xff16161F), fontFamily: 'Archia', fontSize: 22.0, ), ), CupertinoButton( padding: EdgeInsets.all(0), onPressed: () {}, child: AutoSizeText( 'Editar', style: TextStyle( color: Color(0xff16161F), fontFamily: 'Brutal', fontSize: 17.0, ), ), ), ], ), ), centerTitle: true, ), SliverFillRemaining( child: Center( child: CupertinoButton( onPressed: () { setState(() { (isBottom) ? isBottom = false : isBottom = true; }); }, child: Text('YESSS'), ), ), ), ], ), bottomNavigationBar: (isBottom) ? _toolBar() : _tabBar(), );
我尝试将a添加CupertinoTextField()到bottom属性中,但是它进入了我的内部Row()并使所有内容弄乱了。有没有人做到这一点,或者知道如何实现?
CupertinoTextField()
bottom
Row()
谢谢。
我设法解决了。SliverAppBar有一个名为的属性flexibleSpace。在这里,您放置了一个FlexibleSpaceBar包含background属性的。现在,不要上当,这不仅限于纯色或图像。它可以带任何您想要的小部件。就我而言,我想添加一个搜索栏。并且因为此属性将填充整个expandedHeight属性,所以您想添加一个小的空白,以使自定义窗口小部件不会在SliverAppBar上绘制。这是相关的代码段:
flexibleSpace
FlexibleSpaceBar
background
expandedHeight
flexibleSpace: FlexibleSpaceBar( background: Column( children: <Widget>[ SizedBox(height: 90.0), Padding( padding: const EdgeInsets.fromLTRB(16.0, 6.0, 16.0, 16.0), child: Container( height: 36.0, width: double.infinity, child: CupertinoTextField( keyboardType: TextInputType.text, placeholder: 'Filtrar por nombre o nombre corto', placeholderStyle: TextStyle( color: Color(0xffC4C6CC), fontSize: 14.0, fontFamily: 'Brutal', ), prefix: Padding( padding: const EdgeInsets.fromLTRB(9.0, 6.0, 9.0, 6.0), child: Icon( Icons.search, color: Color(0xffC4C6CC), ), ), decoration: BoxDecoration( borderRadius: BorderRadius.circular(8.0), color: Color(0xffF0F1F5), ), ), ), ), ], ), ), ),
这就是结果。滚动向上滚动时,搜索栏将消失。希望这对想要这样做的人有所帮助。