[flutter] 스택드 위젯을 사용하여 채팅 앱 화면 구성하기

Flutter는 다양한 위젯을 사용하여 사용자 인터페이스를 구성하는 데 매우 유연한 방법을 제공합니다. 여기서는 스택드(Stacked) 위젯을 사용하여 간단한 채팅 앱 화면을 구성하는 방법에 대해 알아보겠습니다.

1. 스택드(Stacked) 위젯 소개

스택드(Stacked) 위젯은 다른 위젯들을 겹쳐서 배치할 수 있는 유용한 위젯입니다. 이를 통해 화면을 레이어(layer)처럼 쌓을 수 있으며, 여러 위젯을 겹쳐서 사용자 정의 도면을 만들 수 있습니다.

2. 채팅 앱 화면 구성하기

아래는 간단한 채팅 앱 화면을 구성하기 위한 스택드 위젯의 활용 예시입니다.

import 'package:flutter/material.dart';

class ChatScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('채팅 앱'),
      ),
      body: Stack(
        children: <Widget>[
          // 하단 채팅 입력창
          Positioned(
            bottom: 0,
            left: 0,
            right: 0,
            child: Container(
              padding: EdgeInsets.all(8.0),
              color: Colors.white,
              child: Row(
                children: <Widget>[
                  Expanded(
                    child: TextFormField(
                      decoration: InputDecoration(
                        hintText: '메시지 입력...',
                      ),
                    ),
                  ),
                  IconButton(
                    icon: Icon(Icons.send),
                    onPressed: () {
                      // 메시지 전송 로직
                    },
                  ),
                ],
              ),
            ),
          ),
          // 상단 채팅 내용 리스트
          ListView.builder(
            padding: EdgeInsets.only(bottom: 60), // 하단 채팅 입력창 공간 확보
            itemCount: 20,
            itemBuilder: (context, index) {
              return ListTile(
                title: Text('채팅 내용 $index'),
              );
            },
          ),
        ],
      ),
    );
  }
}

위 예시 코드는 Stack 위젯을 사용하여 화면을 채팅 입력창과 채팅 내용 리스트로 구분하였습니다. 입력창은 화면 하단에 고정되어 있고, 채팅 내용 리스트는 입력창 위에 쌓이도록 설정되어 있습니다.

이제 스택드(Stacked) 위젯을 사용하여 채팅 앱 화면을 구성하는 기본적인 방법을 배워보았습니다. 보다 복잡한 채팅 앱 화면을 구성하기 위해서는 다양한 다른 위젯과 기능들을 추가할 수 있습니다.

참고 자료: