-
CustomScrollViewFLUTTER/Common 2022. 9. 9. 00:12
Sliver를 사용하여 스크롤 효과를 만드는 스크롤뷰 입니다.
import 'package:flutter/material.dart'; class CustomExample extends StatefulWidget { const CustomExample({super.key}); @override State createState() => _CustomExampleState(); } class _CustomExampleState extends State { List top = []; List bottom = [0]; @override Widget build(BuildContext context) { return Scaffold( body: SafeArea( child: CustomScrollView( slivers: [ SliverAppBar( pinned: true, // 스크롤시 바텀 영역을 화면 상단에 남길지여부 snap: false, // 스크롤 중간에 멈출때 appbar를 펼쳐서 배경을 모두 보여준다. floating: true, // false시 appbar 최상단고정 expandedHeight: 200, //최대 확장 높이 backgroundColor: Colors.yellow, //스크롤시 사라짐 flexibleSpace: FlexibleSpaceBar( background: Column(children: [ Text( "TEST CODE", style: TextStyle(fontSize: 30), ), Icon(Icons.air_outlined) ]), ), //pinned시 남아있는 영역 PreferredSize로 시작할 것 bottom: PreferredSize( preferredSize: Size.fromHeight(50), child: Container( child: Column(children: [Icon(Icons.add), Text("Add")]), ), ), ), SliverFixedExtentList( itemExtent: 50, delegate: SliverChildBuilderDelegate( (BuildContext context, int index) { return Container( alignment: Alignment.center, color: Colors.lightBlue[10 * (index % 9)], child: Text('List Item $index'), ); }, ), ), ], ), ), ); } }
Sliver관련 위젯을 쓰면 스크롤 상단에 일부의 위젯만 남는 형태의 페이지를 만들기 좋습니다. 단 사용할때 몇가지 알아야 할것들이 있습니다.
appbar의 바텀영역은 PreferredSize로 시작해야되고
sliver []에는 sliver widget들만 넣을수 있습니다. 위에 보듯이 sliver에 들어가는 최상단 뎁스에만 sliver widget을 쓰면되고 sliver에 child , background 등으로 일반 위젯들을 추가할 수 있습니다.
상단을 고정해서 상단에서는 검색하는 기능을 넣거나 할때 유용하게 사용할 수 있을것 같습니다.
위에 나온 위젯 외에도 sliverlist, slivergrid 등도 있으니 찾아서 사용하면 됩니다.
'FLUTTER > Common' 카테고리의 다른 글
showDialog 메세지창 띄우기 (0) 2022.09.11 상태 관리 Provider (1) 2022.09.11 3. Flutter Widget (Stack관련) (0) 2022.09.06 2. Stateless Stateful (0) 2022.09.03 1. 설치 (1) 2022.08.31