플러터 강좌: 7.5 Text 위젯 사용하기

플러터(Flutter)는 구글이 개발한 UI 툴킷으로, 모바일, 웹 및 데스크톱 애플리케이션을 빠르고 쉽게 만들 수 있도록 도와줍니다. 이 강좌에서는 플러터에서 가장 기본적이고 중요한 위젯 중 하나인 Text 위젯에 대해 자세히 알아보겠습니다. Text 위젯은 앱의 사용자 인터페이스에서 텍스트를 표시하는 데 사용되며, 다양한 스타일링 옵션과 기능을 제공합니다.

1. Text 위젯 기본 사용법

Text 위젯은 매우 간단하게 사용할 수 있습니다. 가장 기본적인 형태로는 다음과 같이 사용할 수 있습니다:

Text('안녕하세요, 플러터!')

위 코드는 화면에 “안녕하세요, 플러터!”라는 텍스트를 표시합니다. 아래는 Text 위젯을 사용하여 간단한 화면을 구성하는 예시입니다:

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('Text 위젯 예시'),
        ),
        body: Center(
          child: Text('안녕하세요, 플러터!'),
        ),
      ),
    );
  }
}

2. Text 위젯의 속성

Text 위젯은 다양한 속성을 제공하여 텍스트의 스타일과 배열 방식을 조정할 수 있습니다. 주요 속성은 다음과 같습니다:

  • style: Text 위젯의 텍스트 스타일을 지정하는 데 사용됩니다.
  • textAlign: 텍스트 정렬 방식을 지정합니다.
  • overflow: 텍스트가 너무 길어서 영역을 벗어나는 경우 어떻게 처리할지를 결정합니다.
  • maxLines: 최대 줄 수를 지정합니다.
  • softWrap: 줄 바꿈 여부를 지정합니다.

2.1 Text 스타일 지정하기

Text 위젯의 스타일을 설정하는 데 가장 많이 사용되는 방법은 TextStyle 클래스를 사용하는 것입니다. 다음 예시는 텍스트의 크기, 색상 및 두께를 설정하는 방법을 보여줍니다:

Text(
  '안녕하세요, 플러터!',
  style: TextStyle(
    fontSize: 24,
    color: Colors.blue,
    fontWeight: FontWeight.bold,
  ),
)

2.2 텍스트 정렬

텍스트 정렬은 textAlign 속성을 사용하여 설정할 수 있습니다. 아래 예시는 텍스트를 중앙에 정렬하는 방법을 보여줍니다:

Text(
  '안녕하세요, 플러터!',
  textAlign: TextAlign.center,
)

2.3 텍스트 오버플로우

텍스트가 지정된 공간을 넘어설 경우, overflow 속성을 사용하여 처리 방법을 지정할 수 있습니다. 예를 들어, 다음 코드는 텍스트가 오버플로우 될 경우 “…”으로 표시되도록 합니다:

Text(
  '안녕하세요, 플러터! 이 텍스트는 너무 길어서 넘칠 것입니다.',
  overflow: TextOverflow.ellipsis,
)

3. 다양한 텍스트 스타일 적용하기

플러터에서는 다양한 텍스트 효과를 적용할 수 있습니다. 다음은 각기 다른 텍스트 스타일의 예시입니다:

3.1 폰트 패밀리

특정 폰트를 사용하고자 할 때는 fontFamily 속성을 사용할 수 있습니다. 예를 들어:

Text(
  '안녕하세요, 플러터!',
  style: TextStyle(
    fontFamily: 'Serif',
  ),
)

3.2 텍스트 그림자

텍스트에 그림자를 추가하여 입체감 있는 효과를 줄 수 있습니다. 아래는 그림자를 추가하는 예시입니다:

Text(
  '안녕하세요, 플러터!',
  style: TextStyle(
    shadows: [
      Shadow(
        color: Colors.black,
        offset: Offset(2.0, 2.0),
        blurRadius: 3.0,
      ),
    ],
  ),
)

4. RichText 위젯 사용하기

Text 위젯은 단일 스타일의 텍스트를 표시할 때 유용하지만, 여러 개의 스타일을 혼합하여 사용하고 싶다면 RichText 위젯을 사용할 수 있습니다. RichText 위젯은 여러 TextSpan을 조합하여 다양한 스타일을 적용할 수 있게 해줍니다:

RichText(
  text: TextSpan(
    text: '안녕하세요, ',
    style: TextStyle(color: Colors.black, fontSize: 20),
    children: [
      TextSpan(text: '플러터!', style: TextStyle(fontWeight: FontWeight.bold)),
    ],
  ),
)

5. Text 위젯의 응용

Text 위젯은 기본적인 텍스트 표시 외에도 다양한 응용 방식이 있습니다. 예를 들어, 사용자 입력을 받아서 보여주는 다이내믹한 UI를 만들 수 있습니다. 아래는 사용자의 입력을 받는 간단한 예제입니다:

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State {
  String _inputText = '';

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Text 위젯 응용 예시'),
        ),
        body: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(_inputText),
            TextField(
              onChanged: (text) {
                setState(() {
                  _inputText = text;
                });
              },
            ),
          ],
        ),
      ),
    );
  }
}

6. 다양한 언어 지원하기

Text 위젯은 여러 언어를 지원하여 다국어 앱을 쉽게 만들 수 있습니다. 예를 들어, 다국어 앱에서 텍스트를 표시하려면 Intl 패키지를 사용하는 것이 좋습니다. 아래는 다국어 지원 예시입니다:

import 'package:intl/intl.dart';

String getGreeting(String languageCode) {
  switch (languageCode) {
    case 'en':
      return 'Hello, Flutter!';
    case 'ko':
      return '안녕하세요, 플러터!';
    default:
      return 'Hello, Flutter!';
  }
}

// 사용 예
Text(getGreeting('ko')),

7. 최적의 성능 위해 Text 위젯 사용하기

Text 위젯을 사용하면서도 최적의 성능을 유지하려면 다양한 팁과 전략을 사용할 수 있습니다. 예를 들어, 비싼 스타일 작업을 피하기 위해 전체 Text 위젯을 매번 빌드하는 대신, const 수식어를 사용하여 불필요한 다시 그리기를 피할 수 있습니다:

const Text(
  '안녕하세요, 플러터!',
  style: TextStyle(fontSize: 24),
),

8. 결론

Text 위젯은 플러터에서 가장 기본적인 요소 중 하나이며, 앱의 텍스트 표시를 위한 강력한 도구입니다. 이 강좌에서는 Text 위젯의 기본 사용법부터 다양한 스타일과 응용 사례까지 자세히 살펴보았습니다. 텍스트 표시를 넘어 플러터로 멋진 사용자 경험을 제공하는 다양한 방법을 고민해보세요!

향후 강좌에서는 다양한 텍스트 스타일, 애니메이션, 접근성 및 사용자 상호작용 등 복잡한 주제로 더 깊이 있는 이야기를 다룰 예정입니다. 계속해서 플러터의 세계에 함께 탐험해 보세요!

감사합니다!