[flutter] velocity_x를 사용하여 어떻게 로딩 버튼 애니메이션을 만들 수 있는가?

Flutter는 사용자 인터페이스를 구현하기 위한 인기 있는 프레임워크입니다. velocity_x는 강력한 Flutter 라이브러리 중 하나로, UI 요소를 간단하게 만들고 애니메이션을 적용할 수 있게 도와줍니다. 이번 블로그 포스트에서는 velocity_x를 사용하여 로딩 버튼 애니메이션을 만드는 방법을 알아보겠습니다.

velocity_x 패키지 가져오기

먼저, 프로젝트에 velocity_x 패키지를 추가해야 합니다. pubspec.yaml 파일에 다음과 같이 패키지를 추가해주세요:

dependencies:
  flutter:
    sdk: flutter
  velocity_x: ^1.2.1

패키지를 추가한 후에는 flutter pub get 명령을 실행하여 종속성을 가져옵니다.

로딩 버튼 위젯 만들기

이제 로딩 버튼 위젯을 만들어보겠습니다. 다음은 로딩 아이콘과 텍스트를 표시하는 간단한 위젯입니다:

import 'package:flutter/material.dart';
import 'package:velocity_x/velocity_x.dart';

class LoadingButton extends StatelessWidget {
  final String text;
  final VoidCallback onPressed;

  LoadingButton({required this.text, required this.onPressed});

  @override
  Widget build(BuildContext context) {
    return VxBuilder(
      builder: (context, _) => ElevatedButton(
        onPressed: onPressed,
        style: ElevatedButton.styleFrom(
          primary: Colors.blue,
          padding: EdgeInsets.symmetric(vertical: 12, horizontal: 16),
        ),
        child: _.isFalse
            ? text
            : CircularProgressIndicator(
                valueColor: AlwaysStoppedAnimation(Colors.white),
              ),
      ),
      mutations: {CircularProgressIndicator(): _.isTrue},
    );
  }
}

위의 코드에서는 VxBuilder 위젯을 사용하여 애니메이션 변화를 감지하고 상태에 따라 로드인 아이콘 또는 텍스트를 표시합니다.

위젯 사용하기

이제 위에서 만든 LoadingButton 위젯을 사용하여 화면에 로딩 버튼을 추가할 수 있습니다. 다음은 간단한 예시입니다:

import 'package:flutter/material.dart';
import 'package:your_project_name/your_loading_button_file.dart';

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Loading Button Example"),
      ),
      body: Center(
        child: LoadingButton(
          text: "Click me",
          onPressed: () {
            // 버튼이 클릭되면 수행될 동작
          },
        ),
      ),
    );
  }
}

이제 로딩 버튼이 있는 홈 화면을 확인할 수 있습니다.

velocity_x를 사용하여 로딩 버튼 애니메이션을 만드는 방법에 대해 알아보았습니다. velocity_x의 강력한 기능을 사용하면 간단하게 다양한 애니메이션 효과를 구현할 수 있습니다. 더 많은 자세한 내용은 velocity_x 문서를 참조하십시오.