Develop/Flutter
[Flutter] PNG 이미지를 버튼으로 추가하는 방법
issuemaker99
2025. 2. 28. 15:07
728x90
1️⃣ assets 폴더에 이미지 추가
1. 프로젝트의 assets 폴더에 다운로드한 PNG 이미지를 넣습니다.
• 예: assets/images/google_signin_button.png
2. pubspec.yaml에서 assets 경로를 추가합니다.
✅ pubspec.yaml 수정
flutter:
assets:
- assets/images/google_signin_button.png
⚠️ 주의:
• assets: 들여쓰기(공백 2칸) 유지
• flutter clean && flutter pub get 실행하여 변경 사항 반영
2️⃣ 구글 로그인 버튼 추가
🔧 방법 1: GestureDetector로 터치 이벤트 감지
import 'package:flutter/material.dart';
class GoogleSignInButton extends StatelessWidget {
final VoidCallback onPressed;
const GoogleSignInButton({super.key, required this.onPressed});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onPressed,
child: Image.asset(
'assets/images/google_signin_button.png', // 다운로드한 PNG 이미지 경로
height: 50, // 버튼 크기 조정 가능
),
);
}
}
🔧 방법 2: ElevatedButton과 Image.asset 사용
ElevatedButton(
style: ElevatedButton.styleFrom(
padding: EdgeInsets.zero, // 버튼 내부 패딩 제거
backgroundColor: Colors.transparent, // 배경색 제거
shadowColor: Colors.transparent, // 그림자 제거
),
onPressed: () {
// 로그인 로직 실행
},
child: Image.asset(
'assets/images/google_signin_button.png',
height: 50,
),
)
3️⃣ 로그인 버튼 사용 예제
아래 코드처럼 화면에 버튼을 추가할 수 있습니다.
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: GoogleSignInButton(
onPressed: () {
print("Google 로그인 버튼 클릭됨!");
},
),
),
),
);
}
}
class GoogleSignInButton extends StatelessWidget {
final VoidCallback onPressed;
const GoogleSignInButton({super.key, required this.onPressed});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onPressed,
child: Image.asset(
'assets/images/google_signin_button.png',
height: 50,
),
);
}
}
🚀 최종 정리
1️⃣ assets/images/ 폴더에 구글 로그인 PNG 파일 추가
2️⃣ pubspec.yaml에서 assets 경로 등록 후 flutter pub get 실행
3️⃣ Image.asset('assets/images/google_signin_button.png')로 버튼 생성
4️⃣ GestureDetector 또는 ElevatedButton을 사용하여 터치 이벤트 추가
LIST