[flutter] Spacer 위젯을 이용하여 수직/수평 스크롤 가능한 뷰 구현하는 방법은?

Flutter에서는 Spacer 위젯을 사용하여 수직 및 수평 스크롤 가능한 레이아웃을 만들 수 있습니다. Spacer 위젯은 자식 위젯 사이에 유연한 공간을 만들어주며, 이를 활용하여 스크롤이 가능한 레이아웃을 구성할 수 있습니다.

수직 스크롤 가능한 뷰 구현하기

아래는 Spacer를 사용하여 수직 스크롤이 가능한 뷰를 구현하는 예제입니다.

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('수직 스크롤 가능한 뷰'),
        ),
        body: SingleChildScrollView(
          child: Column(
            children: <Widget>[
              Container(
                height: 100,
                color: Colors.red,
              ),
              Spacer(),
              Container(
                height: 100,
                color: Colors.blue,
              ),
              Spacer(),
              Container(
                height: 100,
                color: Colors.green,
              ),
              Spacer(),
              Container(
                height: 100,
                color: Colors.yellow,
              ),
              Spacer(),
              Container(
                height: 100,
                color: Colors.orange,
              ),
              Spacer(),
            ],
          ),
        ),
      ),
    );
  }
}

위 예제에서 Spacer 위젯은 각 컨테이너 사이에 공간을 만들어주어, SingleChildScrollView를 통해 수직 스크롤이 가능한 뷰를 만들었습니다.

수평 스크롤 가능한 뷰 구현하기

수평 스크롤이 가능한 뷰를 구현하는 방법도 비슷합니다. 아래는 Spacer를 사용하여 수평 스크롤이 가능한 뷰를 구현하는 예제입니다.

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('수평 스크롤 가능한 뷰'),
        ),
        body: SingleChildScrollView(
          scrollDirection: Axis.horizontal,
          child: Row(
            children: <Widget>[
              Container(
                width: 100,
                color: Colors.red,
              ),
              Spacer(),
              Container(
                width: 100,
                color: Colors.blue,
              ),
              Spacer(),
              Container(
                width: 100,
                color: Colors.green,
              ),
              Spacer(),
              Container(
                width: 100,
                color: Colors.yellow,
              ),
              Spacer(),
              Container(
                width: 100,
                color: Colors.orange,
              ),
              Spacer(),
            ],
          ),
        ),
      ),
    );
  }
}

이 예제에서도 Spacer 위젯을 사용하여 각 컨테이너 사이에 공간을 만들어주어, SingleChildScrollView의 scrollDirection을 Axis.horizontal로 설정하여 수평 스크롤이 가능한 뷰를 만들었습니다.

위와 같이 Spacer 위젯을 활용하여 수직 및 수평 스크롤이 가능한 뷰를 구현할 수 있습니다. Flutter에서 Spacer 위젯은 레이아웃을 유연하게 조정하는 데 유용하게 활용될 수 있습니다.

더 자세한 내용은 Flutter 공식 문서를 참조하시기 바랍니다.