ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CustomScrollView
    FLUTTER/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
Designed by Tistory.